Hello
I'm wondering if the TI CC1101 radio is capable of communicating with the Silabs SI4432 and in that case, is there any communication restrictions?
I have an existing solution based on the SI4432 and would like to integrated the CC1101 to a new solution, but would need to know that it's capable
of communicating. I've got a eva kit of both bot haven't yet been able to set them up so that the receiving end would get the data the transmitter is emitting.
B.R.
Richard Salin
As long as the datarate, deviation, modulation and carrier frequency is the same they should be able to communicate with each other.
--PS. Thank you for clicking Verify Answer if this answered your question!
Thank you for your reply!
What about the packet handling?
-Richard
I don't know the package handling on the SiLabs part but I see they operate with a TX header that the CC1101 don't have so you have to turn this off. Also ensure that you use the same SYNC word and CRC calculation. Try first with one part in cont. RX and the other in cont. TX to see if it works then and to ensure that the setup of the radioes are correct. When this is ok, try package RX/TX
I've now managed (I think) to get all the settings, except the packet handling ones, to match. I'm sorry for the fuzzyness of the following question, and I understand that you do not have any expertise regarding the SI4432 chip, but I'm wondering how (if possible) to config the CC to match the following settings of the SI chip (ignore the registry values, I just included them to make the comments look "clearer").
// set the packet structure and the modulation type //set the preamble length to 5bytes SPIWriteReg(0x34, 0x0A); //write 0x0A to the Preamble Length register //Disable header bytes; set variable packet length (the length of the payload is defined by the //received packet length field of the packet); set the synch word to two bytes long SPIWriteReg(0x33, 0x02); //write 0x02 to the Header Control2 register //Set the sync word pattern to 0x2DD4 SPIWriteReg(0x36, 0x2D); //write 0x2D to the Sync Word 3 register SPIWriteReg(0x37, 0xD4); //write 0xD4 to the Sync Word 2 register //enable the TX packet handler and CRC-16 (IBM) check SPIWriteReg(0x30, 0x0D); //write 0x0D to the Data Access Control register //enable FIFO mode and GFSK modulation SPIWriteReg(0x71, 0x23); //write 0x23 to the Modulation Mode Control 2 register // set the GPIO's according the testcard type SPIWriteReg(0x0C, 0x12); //write 0x12 to the GPIO1 Configuration(set the TX state) SPIWriteReg(0x0D, 0x15); //write 0x15 to the GPIO2 Configuration(set the RX state)
The registry values I'm using for my CC1101 are as follows:
TI_CC_SPIWriteReg(TI_CCxxx0_FSCTRL1, 0x0C); TI_CC_SPIWriteReg(TI_CCxxx0_FSCTRL0, 0x00); TI_CC_SPIWriteReg(TI_CCxxx0_FREQ2, 0x21); TI_CC_SPIWriteReg(TI_CCxxx0_FREQ1, 0x65); TI_CC_SPIWriteReg(TI_CCxxx0_FREQ0, 0x6A); TI_CC_SPIWriteReg(TI_CCxxx0_MDMCFG4, 0x2D); TI_CC_SPIWriteReg(TI_CCxxx0_MDMCFG3, 0x3B); TI_CC_SPIWriteReg(TI_CCxxx0_MDMCFG2, 0x13); TI_CC_SPIWriteReg(TI_CCxxx0_MDMCFG1, 0x22); TI_CC_SPIWriteReg(TI_CCxxx0_MDMCFG0, 0xF8); TI_CC_SPIWriteReg(TI_CCxxx0_CHANNR, 0x00); TI_CC_SPIWriteReg(TI_CCxxx0_DEVIATN, 0x62); TI_CC_SPIWriteReg(TI_CCxxx0_FREND1, 0xB6); TI_CC_SPIWriteReg(TI_CCxxx0_FREND0, 0x10); TI_CC_SPIWriteReg(TI_CCxxx0_MCSM1 , 0x0F); TI_CC_SPIWriteReg(TI_CCxxx0_MCSM0 , 0x18); TI_CC_SPIWriteReg(TI_CCxxx0_FOCCFG, 0x1D); TI_CC_SPIWriteReg(TI_CCxxx0_BSCFG, 0x1C); TI_CC_SPIWriteReg(TI_CCxxx0_AGCCTRL2, 0xC7); TI_CC_SPIWriteReg(TI_CCxxx0_AGCCTRL1, 0x00); TI_CC_SPIWriteReg(TI_CCxxx0_AGCCTRL0, 0xB0); TI_CC_SPIWriteReg(TI_CCxxx0_FSCAL3, 0xEA); TI_CC_SPIWriteReg(TI_CCxxx0_FSCAL2, 0x2A); TI_CC_SPIWriteReg(TI_CCxxx0_FSCAL1, 0x00); TI_CC_SPIWriteReg(TI_CCxxx0_FSCAL0, 0x1F); TI_CC_SPIWriteReg(TI_CCxxx0_FSTEST, 0x59); TI_CC_SPIWriteReg(TI_CCxxx0_TEST2, 0x88); TI_CC_SPIWriteReg(TI_CCxxx0_TEST1, 0x31); TI_CC_SPIWriteReg(TI_CCxxx0_TEST0, 0x09); TI_CC_SPIWriteReg(TI_CCxxx0_FIFOTHR, 0x07); TI_CC_SPIWriteReg(TI_CCxxx0_IOCFG2, 0x0B); TI_CC_SPIWriteReg(TI_CCxxx0_IOCFG0, 0x06); TI_CC_SPIWriteReg(TI_CCxxx0_PKTCTRL1, 0x07); TI_CC_SPIWriteReg(TI_CCxxx0_PKTCTRL0, 0x05); TI_CC_SPIWriteReg(TI_CCxxx0_ADDR, 0x00); TI_CC_SPIWriteReg(TI_CCxxx0_PKTLEN, 0x3D);
Making these radios compatible would be crucial for the switch to the CC radio...Thank you
Best regards
I can try to give you some pointers:
// set the packet structure and the modulation type //set the preamble length to 5bytes SPIWriteReg(0x34, 0x0A);
CC1101 only have the option of sending 4 or 6 bytes of preamble. If SiLabs require 5 bytes, set MDMCFG1.num_preamble=3
//Disable header bytes; set variable packet length (the length of the payload is defined by the //received packet length field of the packet); set the synch word to two bytes long SPIWriteReg(0x33, 0x02);
CC1101: To set 2 byte sync word: MDMCFG2.sync_mode=3
CC1101: To set variable package length: PKTCTRL0.length_config=1
//enable the TX packet handler and CRC-16 (IBM) check SPIWriteReg(0x30, 0x0D);
CC1101 uses CRC-16 and the package handler is default on
//Set the sync word pattern to 0x2DD4 SPIWriteReg(0x36, 0x2D); //write 0x2D to the Sync Word 3 register SPIWriteReg(0x37, 0xD4);
CC1101: SYNC1=0x2D, SYNC0=0xD4. For CC1101 SYNC1[7] is MSB and will be sent first. Check SiLabs about what is MSB and LSB to se if anything needs to be inverted
//enable FIFO mode and GFSK modulation SPIWriteReg(0x71, 0x23);
CC1101: FIFO mode: PKTCTRL0.pkt_format=0
CC1101: GFSK: MDMCFG2.mod_format=1
I haven't looked too closely of the reg settings you have found for CC1101. If you have set put the correct numbers into Smart RF Studio and exported the numbers correctly the frequency, deviation etc should be correct.
If you use CC1101 as receiver it is also possible to use the "RF device commands" in Studio to see what is ending up in the FIFO.
I've managed to get the SI4432 to throw an interrupt, but unfortunately the data is all wrong (the length is incorrect. Consistently 8, probably as it's the length of the last successful reception from another SI4432 though.) I can't get the CC1101 throw an interrupt at all when the SI is transmitting... I know it's a tricky situation to help in since there's a product of another brand involved. Unfortunately since these are already integrated in the existing solution the communication between the different brands is crucial. Any suggesttions how to proceed to solve the issue?
Could you first check on a spectrum analyzer to see if the deviation on the SiLabs part is the same as on CC1101? I noticed earlier this summer that for one of our competitiors chips the deviation got different than what I would have thought. What is the potential volum for CC1101 in this case? If the case is interesting and if it is possible from your side one option could be to ship one of your existing cards to us so it's possible to get some hands on on it. It is possible to set up a offline communication by requesting to be my friend on the forum if volum is not public information.
Sorry for the delay, I've been busy with another urgent project.
Our own volumes are not great, our company does product development for other companies so we only manufacture prototypes.I can't speak nor mention our customers, but they might produce higher volumes of products.
One more question, what is the default sync word? That is, if it's not changed by setting the registries that control it.
Br
RIchard
The default sync word on CC1101 is 0xD391 set by the SYNC1 and SYNC0 register.
Note that the setting in MDMCFG2.SYNC_MODE sets if this sync word is repeated or not. If you send a 4byte sync word with the SiLabs you have to set SYNC_MODE=1 or 2 (5 or 6)
SYNC_MODE description:
Combined sync-word qualifier mode. The values 0 (000) and 4 (100) disables preamble and sync word transmission in TX and preamble and sync word detection in RX. The values 1 (001), 2 (010), 5 (101) and 6 (110) enables 16-bit sync word transmission in TX and 16-bits sync word detection in RX. Only 15 of 16 bits need to match in RX when using setting 1 (001) or 5 (101). The values 3 (011) and 7 (111) enables repeated sync word transmission in TX and 32-bits sync word detection in RX (only 30 of 32 bits need to match).
Values:
0 : No preamble/sync1 : 15/16 sync word bits detected2 : 16/16 sync word bits detected3 : 30/32 sync word bits detected4 : No preamble/sync, carrier-sense above threshold5 : 15/16 + carrier-sense above threshold6 : 16/16 + carrier-sense above threshold7 : 30/32 + carrier-sense above threshold
hi Richard
i'm now working on the same thing (just for hobby project) trying to use a CC1101 to act as Receiver-only , with the remote Transmitter being a Si4432
i use very low data rate ... i got the RF carrier to be detected , but wrong data for now ...
may i ask did you achieve anything on this project ? Thanks