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.

Using CC1101 with 8 byte sync word and Manchester Encoding

Other Parts Discussed in Thread: CC1101

Hello, 

I'm trying to configure the CC1101 to receive an existing protocol. This protocol is Manchester encoded and uses the sync word 0xAF, followed by the packet length. With this protocol not using at least a 16 bit sync word, can I use the build-in packet handler, and if so, do I need to manually encode the sync word to configure it in the SYNC1 and SYNC0 registers?

Thanks in advance!

  • One thought is to set up the CC1101 in NRZ mode (not Manchester) with bit rate = Manchester encoded symbol rate . Each symbol in the transmitted Manchester encoded signal will then be treated as a bit. The Manchester encoded preamble (0xAF) will thus look like 01100110 01010101, corresponding to a 16 bit sync word of 0x6655

    Enable sync word detection and set the sync word as 0x6655 (i.e. 16/16 sync word bits detected).

    The nibbles in the FIFO should then be 0x5, 6, 9 or A. The data in the FIFO should be decoded as shown in the table below. Assuming 0-1 corresponds to a logic 1 and 1-0 corresponds to a logic 0 the decoding (in SW) from nibble to 2 bits will be as follows:

    0x5 11
    0x6 10
    0x9 01
    0xA 00

  • Note that CC1101 need 2-4byte of preamble to settle the AGC etc.  

  • Sverre said:

    One thought is to set up the CC1101 in NRZ mode (not Manchester) with bit rate = Manchester encoded symbol rate . Each symbol in the transmitted Manchester encoded signal will then be treated as a bit. The Manchester encoded preamble (0xAF) will thus look like 01100110 01010101, corresponding to a 16 bit sync word of 0x6655

    Enable sync word detection and set the sync word as 0x6655 (i.e. 16/16 sync word bits detected).

    The nibbles in the FIFO should then be 0x5, 6, 9 or A. The data in the FIFO should be decoded as shown in the table below. Assuming 0-1 corresponds to a logic 1 and 1-0 corresponds to a logic 0 the decoding (in SW) from nibble to 2 bits will be as follows:

    0x5 11
    0x6 10
    0x9 01
    0xA 00

    This is a clever solution Sverre. I am also in the same situation as with the first poster. 1 byte preamble and 1 byte sync word. What I did before is used synchronous mode. But sometimes I fail to catch the sync word, maybe because I am just having 1 byte preamble and it should be 2 or more as what TER has pointed out.

    I tried this solution earlier, and just check the GDO0 (0x06 toggle when sync word is received) via SmartRF04EB.  Although I haven't checked the RX FIFO and I experience some false triggers sometimes (maybe because of the construction of my syncword?), but it is much better than missing some data.   I would also like to eliminate the clock and data toggling on the GDO pins due to synchronous mode as I am afraid that this may cause sensitivity degradation on my design.

    Thanks

  • That looks promising, thanks for the pointers!

  • Hello,

    I would like to confirm that Sverre's solution works perfectly. I did a test and from an old device that sends 1 byte preamble, and 1 byte sync word. Whenever I read the FIFO, it is in this format:

    data[0]= PKTLEN - 1

    data [1,,,n] = my data

    then after that, I do the manchester decoding manually and I can see that the data are all valid.

    Thanks Sverre. This is a brilliant solution. :)

  • Need to correct a mistake in previous post: CC1101 Manchester encoding: 0-1 corresponds to a logic 0 and 1-0 corresponds to a logic 1.  The decoding (in SW) from nibble to 2 bits will be as follows:

    0x5 00
    0x6 01
    0x9 10
    0xA 11

  • hi Sverre :

            we have a application is similar with your describtion, now have questions: 

            1、  in your  thought , the preamble  is  01100110, but the cc1101 datasheet show the preamble must be 101010……

             2、 why not use manchester encoded, if i want  to use manchester ,what should we config the regiters ?

  • user4269738: The original post had a protocol using only one byte sync. Using NRZ is a way to expand this to 16 bit.

    If you could post a description of your protocol we will help you find a way to support this with CC1101.


    It's generally better to start a new thread than post on a 2 year old thread.