Hi all, I'm new to Si wireless so please be kind...
I'm trying to configure a Si4455 on an RF Solutions Zeta board. It's marked 455A, so it should be a B1 version chip, and I want to drive it from a PIC 16F1828 - heresy, but I don't want to learn Keil C and C8051F930 from scratch, and I'm reasonably ok with XC8. Using WDS3 (GUI Version 188.8.131.52 to be precise) I have extracted the radio config file and set up an array, all as per AN^(2, and the Si4455 data sheet, and the Rev B API documentation. But it will not load the configuration. I know it can be done as people have written so in other posts, but how?
I have found that the reset seems ok, CTS and nIRQ go high, but when it attempts to load the config array nIRQ goes low and will not go high again. It may be that the chip doesn't properly enter EZConfig mode, so what am I doing wrongly? How critical is the SDN high period? In various documentation I've seen from10 uS to 300uS? I want to use XC*'s delay routines as my MCU clock isn't the same as the C8051's, and I agree with the todo comments in the source (a better delay timer needed). I wait for CTS to go high, and send the array, the first item being the power-up.
What's the correct SDN high period?
What's the correct power-up sequence? The AN's don't really tally with the sequence in the config.h file, which put int control enable, frr and eztune before the ezconfig array?
Please help if you can!
The package marking is 455A both for Si4455-B1A and Si4455-C2A. You can use the PART_INFO API command to check which revision you have. ROMID=03 means you have a revB1B chip. ROMID of revC2A is 06.
The minimum SDN high period is 10µs, there is no maximum limit.
You can find the correct sequence on figure 22. of AN692.
After NIRQ=0, you have to wait 6msec (or poll GPIO1) for POR to complete. Then send POWER_UP (make sure arguments are correct), NIRQ will go to LOW state. Then send GET_INT_STATUS to clear interrupt. NIRQ has to go HIGH.
It is not defined which commands can be used before configuration, so the safe way is to send the config array first. See figure 23. for the details. Make sure that your XTAL circuit is able to oscillate correctly, it will be started during POWER_UP and chip can hang up if it is not oscillating.
Hello. I have a similar problem.
In the POR step, When I make SDN=0, 10-15 uS later, the GPI2 or 3 go high. Sadly I cannot test the GPIO1 since is below the IC.
Anyway, I wait for 1 ms, after SDN=0.
then I send the POWER_UP commands using SPI port. Keeping SDN=0 all the time, and NSEL=0;
After that, I dont see the NIRQ goes low, And again, I wait for 7 ms.
After this, I execute "si4455_get_int_status(0, 0, 0);" to clear all the interrupts on the Si4455,
After this, NIRQ Goes low.
But the crystal doesnt osscillate.
Anyway, I follow the execution of the program.I wait for 6ms, and send the rest of the commands to the IC. But, when is sending the "RF_EZCONFIG_CHECK" command, ocurred and error, and the software start again.
What should I check?
thank you for the help!
Can you configure the Si4455?
After you make SDN=0, wait at least 6ms before sending POWER_UP.
Still no joy, the chip returns 0xff to everything because the SPI out from the 4455 isn't being activated. Can't do more until I'm back from abroad in 2 weeks.
Hello to anyone still following this thread... it's been a while, and I've finally come back to investigate further why no life on the SDO pin of the si4455. To recap, I'm trying to couple it with a PIC16F1828 or similar, and adapting C code from examples. In the last 8 months, Microchip have released and updated their Code Configurator which makes altering peripheral settings really easy. I also discovered something I should have known but overlooked - there are 4 possible settings for SPI modes. According to the si4455 datasheet, the chip expects clock polarity idle low, active high, and clock edge idle to active (positive edge, from the diagrams). Sampling of the data should be mid-data. This corresponds to SPI mode 0, but with these settings there is no joy in si4455 land. Changing it to clock edge active to idle, the chip starts to respond! Deep joy! The settings in Microchip's MCC seem to carry through to the code correctly (MCC is still in development), and the registers of the 16F1828 seem to correspond to what MCC says, and although this seems contrary to the si4455 data sheet, it seems to work and at last I'm seeing activity on the chip's SDO line. It's early days and I've a long way to go before I can make it transmit and recieve as I wish, but it's a major step forward. Incidentally, the si4455 seems fairly bullet-oroof, as at one stage I found a dry joint on my adaptor board feeding Vcc, so the chip was powering through its data pins... it has survived! Well done Si!
Great news John. Thank you for sharing it with the community.
Can you please name the proper SPI config and your MCU?
Hi Tamás, yes it's really great to be able to make use of these brilliant little radio chips. I use the Microchip MCU's because I get on OK with their MPLabX IDE, and the Microchip Code Configurator feature makes setting up projects quite straightforward, though it does slightly restrict the range of MCU's available. Anyway, the chip I'm currently using is a PIC 16F18345, and using MCC I have set it to be SPI Master, Mode 0, data sampled at middle. Watch the clock frequency which will depend on the system clock, and obviously do not exceed the Si4455 maximum data rate. Hope this helps someone.
Hello all, I am looking for an MPLAB example C code for SI4438-B1C-FM for both RX and TX. Any help is appreciated.
Silicon Labs has no such example. However you can easily port our radio drivers to your MCU, and we are here to help if you run into any radio issue during the process.