This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CC1101DK868-915: CC1000 vs CC1101/CC1111 communication issue

Part Number: CC1101DK868-915


Hi,

we have a CC1101 device that we wish to communicate with an older existing CC1000 based product but having difficulties trying to get them to talk.

CC1101 vs CC1101 and CC1000 vs CC1000 works fine.

Have also tried receiving data on a CC1111 using packet sniffer with same key parameter settings but only able to receive data coming from CC1101.

The key parameters for the link are :

====

868.706 mhz base frequency
Channel 0
Datarate 38.4 kBaud
Channel spacing 200 khz
Deviation 32 khz
RX Filter BW set to 200 khz
2 bytes sync word 0xcb50
4 bytes preamble
16/16 bits syncwords detected
FSK-2 modulation
No FEC
No whitening
Manchester encoding

===

Remote CC1000 device uses the following register settings at startup.

MAIN 00: 11
FREQ_2A: bf
FREQ_1A: 60
FREQ_0A: 00
FREQ_2B: 58
FREQ_1B: 3d
FREQ_0B: b9
FSEP1: 01
FSEP0: ab
CURRENT: 8c
FRONT_END: 32

PA_POW: 80
PLL: 68
LOCK: 13
CAL: 26
MODEM2: c1
MODEM1: 69
MODEM0: 54
MATCH: 10
FSCTRL: 01
PRESCALER: 00
TEST4: 3f

Can someone please comment on whether there are any issues with these settings ? If additional info is required please let us know.

In an older thread on this forum (Title : "communication error between CC1000 and CC1101") there was a discussion on deviation vs freq separation on CC1000 but we have tried setting up deviation to half the freq separation of CC1000 without any success.

For reference, I am attaching the SmartRF studio register settings for CC1101 as well as the sniffer prs file used with the CC1111 when trying to sniff the packets being sent from CC1111.

Best regards,
Mattias

config files.zip

  • The CC1101 settings look ok. Not sure about the CC1000 settings as I do not know the crystal frequency.

    Suggest you test CC1101 and CC1000 separately before you set up a link. Use a spectrum analyzer to demodulate the transmitted signal. Is the symbol rate 38.4 ksps? Is the deviation (=separation/2) 32 kHz? Your CC1000 settings suggest a different deviation.
  • Hi Sverre,

    thanks for your help. We currently don't have any spectum analyzer available but seems like we definitely would need one in order to understand what is going on in more detail. Any help or pointers in the meanwhile is greatly appreciated.

    The crystal frequency is 14.745600 MHz Internal (+/- 20 ppm). From my calculations of the register settings it seems this should come out to 64 kHz freq separation unless I am missing something. This is also the specification of this device which is an existing legacy product we are trying to communicate with.

    TX REFDIV = 6
    FSEP = 0x1AB = 427

    Fref = 147456000/6 = 2.457 MHz
    Fsep = 2457600 * 427 / 16384 => 64.050 kHz

    As for the rate I presume the symbol rate across RF is in fact twice the baudrate due to manchester encoding but the encoding is done transparently in HW so from host side the rate should be 38400 at the CC1111/CC1101 side right ?  Have also tried 76.8 baudrate on CC1111 side without any difference in result. 

    When CC1000 is configured for baudrate is seems 19.2, 38.4, 76.8 all share the same register setting which maps the configured MODEM0 register value of 0X54. Is there any other setting I need to check in order to verify this ?

    MODEM0[6:4] BAUDRATE[2:0] 

    ...
    101 : 19.2, 38.4 and 76.8 kBaud
    110 : Not used
    111 : Not used

    We have tried playing around a lot on the CC1101/CC1111 side to disable preamble checks and syncword checks in order to detect something (although not properly decoded) but still not able to find any ping frame occuring every 4 secs. 

    Brgds

    Mattias

  • You are using a symbol rate of 38.4 ksps (aka kBaud). This corresponds to a bit rate of 19.2 kbps due to the MC encoding.

    For CC1000 the MC encoding is a "0" is a low-to-high transition and a "1" is a high-to-low transition. Unfortunately I do not remember how the MC encoding is done on the CC1101, but if it is opposite to CC1000 you need a different set-up (I can help if this is the case). As a simple check: Use Studio and set up CC1101 with 0x55 55 as sync word and a packet length long enough to capture the sync word and (at least part of ) the data payload. Since 0x55 55 is the sync word in this test this will be found at different bit locations within the transmitted preamble, but you should then be able to find the real transmitted sync word in the TX FIFO (you might need to do some bit shifts....).

    Just to rule out frequency error as a root cause you can increase the CC1101 RX filter BW. If you do this you also need to increase the IF filter in register FSCTRL1. Set it to 0x12 for this test for instance.
  • CC1101 manchester: e2e.ti.com/.../295777
  • Thanks Sverre,

    it turns out that the remote CC1000 host transmits data on DIO inverted due to channel being setup as high side LO. This effectively changes the manchester encoded bitstream to be IEEE variant instead of the G.E Thomas variant that CC11xx is able to decode. Due to this the CC11xx is not able to sync on neither preamble nor syncword or parsing variable length field correctly when manchester coding is enabled. 

    By setting up CC11xx to disable manchester coding, fixed length packets and setting up syncword to be the IEEE encoded variant of the preamble I am now consistently able to receive the ping frames every 4 seconds.  Thanks so much for your pointers on this!

    The drawback of this operation mode is that we now have to handle all manchester decoding/encoding on the host as well as other packet handling features in CC11xx chipset.  

    I tried to find options of configuring the type of manchester encoding on CC11xx but was unable to do so. Is there a way ? Basically, what is the recommended config option for CC11xx devices when CC1000 uses a high side LO channel ?

    Also, as noted in other threads Manchester coding type is not mentioned in CC1000/CC11xx datasheets. Would it be possible that this can be updated to minimise confusion ? Also perhaps a mention of the potential CC1000 compatibility issue when high side LO channels are used may be useful.

    brgds
    Mattias

     

  • Update :

    After some more configuration adjustments I was able to consistently receive the frames also when manchester coding was on by using the inverse syncword 0xCB50=>0x34AF  combined with fixed length option. This allowed the HW to sync on the frame and trigger a frame interrupt.Then host could read the length byte (inverted) followed by assembly and inverting back the frame to its original format. Still curious whether there are any way to avoid the above compatibility workarounds between CC11xx and a remote CC1000 device using manchester encoding with high side LO channel.

    brgds
    Mattias

  • Sorry for not responding earlier, but came to think of one thing: In CMD_PROP_RADIO_DIV_SETUP you can set formatConf.bBitReversal // 0 = positive deviation for "1"; 1 = positive deviation for "0". Maybe this can be used so you don't have to do the inversion SW.