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.

Trying to get Synchronous Serial Mode w/ Manchester encoding to work (so far getting only noise)

Part Number: CC110L
Other Parts Discussed in Thread: TEST2

Hello,

I'm trying to use the CC110L to build an 869.200 MHz receiver, previously based on a (now obsolete) ATA5761 chip. This wireless system uses a rather primitive packet format, based on 1 Kbaud Manchester encoding: 24 bits preamble, then one start bit, and then a 3-byte or 4-byte payload (also see https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/981145/cc1101-compatibility-with-obsolete-fsk-transmitter-receiver-circuits for more details on this).

As this old system is still in use with numerous customers, I need to support the old packet format. After carefully reading the CC110L datasheet, my conclusion is that I can only use the synchronous serial mode, as there are no sync words, just one start bit. So I set up GDO0 for data output, and GDO2 as a clock output, both connected to an MCU, which takes care of decoding the received data stream.

Setting up the CC110L has succeeded to a certain extent, but for the past days, I have not been able to get a coherent data stream, just noise on the data line and 8-bit bursts on the clock line:

(Yellow = GDO0 = Data, Blue = GDO2 = clock)

The fact that the clock bursts are exactly the desired 1 kHz frequency suggests that setting up the Data Rate has succeeded, but obviously, things are not configured correctly. My problem is that I have no experience with building/programming receivers, so I don't know what I'm doing wrong, and what values are more or less sane for things like AGC.

Setting up synchronous serial mode is done according to the description in paragraph 5.26.2 of the datasheet, "Synchronous Serial Operation"

About the frequency and channel setup: the desired frequency is 869.2 MHz. So:

fosc = 27MHz

FREQ2:FREQ1:FREQ0 = 0x20310D =2109709 => Base frequency = 869.1733246 MHz

MDMCFG0.CHANSPC_M = 3, MDMCFG1.CHANSPC_E = 0, CHANNR.CHAN = 0 => Channel offset = 26.67618 kHz

So unless I made a mistake, Channel 1 should be located at 869.1733246 + 0.02667618 = 869.2000008 MHz

Below is the full register list and all their values. All yellow values are modified with the desired parameters; all unmarked values between square brackets are the unchanged reset values.

I left a lot of parameters unchanged, and obviously that can be part of the problem. Could someone take a look and identify possible other parameters that need to be set? Or does anyone have sample code that shows settings for a working synchronous serial mode receiver?

Then there is this: lots of fields have this comment in the datasheet: "Use setting from SmartRF Studio". The problem is that SmartRF Studio requires Windows, but I don't have Windows, only Linux, so I can't run SmartRF Studio (it doesn't work in Wine or the Mono Runtime Environment). Are these undocumented and unexplained settings important in any way?

Lastly: are there any good sources that explain in more detail how to set up a radio receiver like this? I have only very limited RF design experience (mostly transmitters, filters and shielding techniques), and I think I should learn a bit more about receiver systems.

Thanks in advance for any further advice!

Name

Address

Value

Description

GDO2_CFG

0x00

0x0B

GDO2: Serial Synchronous Clock Out

GDO1_CFG

0x01

[0x2E]

[GDO1: SPI-SO]

GDO0_CFG

0x02

0x0C

GDO0: Serial Synchronous Clock Out

FIFOTHR

0x03

[0x07]

RX FIFO and TX FIFO thresholds

SYNC1

0x04

[0xD3]

Sync word, high byte (not used in synchronous serial mode)

SYNC0

0x05

[0x91]

Sync word, low byte (not used in synchronous serial mode)

PKTLEN

0x06

[0xFF]

Packet length (not used in synchronous serial mode)

PKTCTRL1

0x07

[0x40]

Packet automation control (not used in synchronous serial mode)

PKTCTRL0

0x08

0x52

Packet automation control -> Infinite packet length

ADDR

0x09

[0x00]

Device address (not used in synchronous serial mode)

CHANNR

0x0A

0x01

Channel # 1

FSCTRL1

0x0B

[0x0F]

Frequency synthesizer control

FSCTRL0

0x0C

[0x00]

Frequency synthesizer control

FREQ2

0x0D

0x20

Frequency control word, high byte

FREQ1

0x0E

0x31

Frequency control word, middle byte

FREQ0

0x0F

0x0D

Frequency control word, low byte -> 869.1733246 MHz

MDMCFG4

0x10

0xB5

Modem configuration -> Channel Bandwidth = 120.5357143 kHz

MDMCFG3

0x11

0x37

Modem configuration -> Symbol rate = 1.0010004 kHz

MDMCFG2

0x12

0x08

Modem configuration -> 2-FSK, Manchester encoding, no preamble

MDMCFG1

0x13

0x20

Modem configuration

MDMCFG0

0x14

0x03

Modem configuration -> Channel spacing = 26.67617798 kHz

DEVIATN

0x15

[0x47]

Modem deviation setting

MCSM2

0x16

[0x07]

Main Radio Control State Machine configuration

MCSM1

0x17

0x3C

Main Radio Control State Machine configuration -> Stay in RX mode

MCSM0

0x18

[0x04]

Main Radio Control State Machine configuration -> Manual calibration

FOCCFG

0x19

[0x36]

Frequency Offset Compensation configuration

BSCFG

0x1A

[0x6C]

Bit Synchronization configuration

AGCCTRL2

0x1B

[0x03]

AGC control

AGCCTRL1

0x1C

[0x40]

AGC control

AGCCTRL0

0x1D

[0x91]

AGC control

Not Used

0x1E - 0x1F

RESERVED

0x20

FREND1

0x21

[0x56]

Front end RX configuration

FREND0

0x22

[0x10]

Front end TX configuration

FSCAL3

0x23

[0xA9]

Frequency synthesizer calibration

FSCAL2

0x24

[0x0A]

Frequency synthesizer calibration

FSCAL1

0x25

[0x20]

Frequency synthesizer calibration

FSCAL0

0x26

[0x13]

Frequency synthesizer calibration

Not Used

0x27 - 0x28

RESERVED

0x29

[0x59]

RESERVED

0x2A

[0x7F]

RESERVED

0x2B

[0x3F]

TEST2

0x2C

[0x88]

Various test settings

TEST1

0x2D

[0x31]

Various test settings

TEST0

0x2E

[0x07]

Various test settings

SRX

0x34

Command strobe: enable RX

  • Hi Richard,

    Someone has been assigned to look into this. They will get back to you. 

    Regards,
    Siddanth


  • It is absolutely necessary to use SmartRF Studio to generate your settings, as a lot of registers has values found during characterization and cannot be calculated using an equation, as for example is the case for frequency data rate etc.

    Alos, it is not possible to use Manchester mode in serial mode. If your data is Manchester encoded and you use serial mode on your receiver, you need to do the Manchester encoding in SW on the received data. This is clearly stated in the data sheet:

    Below are SmartRF Studio generated settings for the following parameters:

    // Address Config = No address check 
    // Base Frequency = 869.199707 
    // CRC Autoflush = false 
    // CRC Enable = false 
    // Carrier Frequency = 869.199707 
    // Channel Spacing = 199.813843 
    // Data Format = Synchronous serial mode 
    // Data Rate = 1.001 
    // Deviation = 4.943848 
    // Device Address = 0 
    // Manchester Enable = false 
    // Modulated = true 
    // Modulation Format = 2-FSK 
    // Packet Length = 255 
    // Packet Length Mode = Infinite packet length mode 
    // Preamble Count = 4 
    // RX Filter BW = 60.267857 
    // Sync Word Qualifier Mode = No preamble/sync 
    // TX Power = 0 
    // PA table 
    #define PA_TABLE {0x50,0x00}
    
    static const registerSetting_t preferredSettings[]= 
    {
        {CC110L_IOCFG2, 0x0B},
        {CC110L_IOCFG0, 0x0C},
        {CC110L_FIFOTHR, 0x47},
        {CC110L_PKTCTRL0, 0x12},
        {CC110L_FSCTRL1, 0x06},
        {CC110L_FREQ2, 0x20},
        {CC110L_FREQ1, 0x31},
        {CC110L_FREQ0, 0x4D},
        {CC110L_MDMCFG4, 0xF5},
        {CC110L_MDMCFG3, 0x37},
        {CC110L_MDMCFG2, 0x00},
        {CC110L_MDMCFG0, 0xE5},
        {CC110L_DEVIATN, 0x14},
        {CC110L_MCSM0, 0x18},
        {CC110L_FOCCFG, 0x16},
        {CC110L_RESERVED_0X20, 0xFB},
        {CC110L_FSCAL3, 0xE9},
        {CC110L_FSCAL2, 0x2A},
        {CC110L_FSCAL1, 0x00},
        {CC110L_FSCAL0, 0x1F},
        {CC110L_TEST2, 0x81},
        {CC110L_TEST1, 0x35},
        {CC110L_TEST0, 0x09},
    };
    

    BR

    Siri

  • It is absolutely necessary to use SmartRF Studio to generate your settings

    This is a major problem because I have no Windows machine, and there is apparently no Linux (or Mac) version of SmartRF Studio.

    Maybe it is an idea to make an online version of SmartRF Studio, where community members can enter parameters to obtain the necessary register settings?

    Below are SmartRF Studio generated settings for the following parameters:

    Unfortunately, those settings offer only limited improvement. The clock line now shows a continuous (although very jittery) signal instead of 8-bit bursts, and the data line (top) still only produces random noise:

    I noticed one thing, however:

    When I power up and initialize the receiver while a carrier signal (869.200000 MHz) is present, these lines remain silent (both low), so the receiver at least responds in a way.

    But when I turn the carrier off, the above signals return, and show no response at all when I turn the carrier back on again.

    I could reprogram the carrier source to modulate the carrier without switching it off, to see if the modulation shows up on the data channel, but that of course does not change the behaviour that it does not respond if a carrier is not present at power-up.

    Would you have any idea what causes this behaviour?

    Anyway, thank you for your answers so far!

    Best regards,

    Richard

  • After doing some more testing and modifying the transmitter to switch modulation on and off, there is encouraging progress:

    • When modulation is active, I see a coherent signal on the Data output, and, somehow
    • When the carrier is switched on, the receiver now responds at all times - also after power-up (this is a bit strange, because this didn't appear to work yesterday).

    Question: what is the best way to mute the noise that I see when no carrier is present?

    I think I can sort out the Manchester decoding next - if I'm correct, I have to double the Data Rate to obtain the correct output (the 1 kHz data rate is specified for the payload stream, not the Manchester-encoded stream).

    Thanks for the help so far already!

    Best regards,

    Richard

  • First of all, in serial mode the clock is supposed to run cont. and I have no idea why it is not doing that with your settings. I copied the settings you posted and were not able to see a clock at all.

     

    There is no way to mute noise. As long as the radio is in RX mode, it will receive whatever is on the air, noise or not.

    What you can do is to output the CS signal on a pin (GPIO1). Then you can use this to trigger when you want to start process the data on serial data pin.

    If your transmitter is using a bit rate of 1 kbps (Manchester), you receiver will need to use a symbol rate of 2 ksps

  • OK, using the CS signal on GDO1 works, although the latency of the Data signal means that there are still some bits of noise received when CS goes high. But this is not really a problem.

    I'm still trying to get the receiver to work along similar specifications as the original ATA5760 device. This involves quite a bit of trial-and-error, but I'm getting there. It turns out that the ATA5760 is quite tolerant to deviations in frequency and frequency shift - the CC110L still has some trouble with certain batches of transmitters that the '5760 handles without problem, but increasing the bandwidth and tinkering with the IF frequency and frequency deviation looks promising.

    One final question: is there a chance that there will be an online version of SmartRF Studio in order to obtain transceiver parameters? If not, I'll spend the time on installing a VM with Windows (I guess a Linux version is too much to ask for ...), because I'd like to use the CC110L in future designs as well - and then of course with modern, fully supported packet formats instead of this obsolete transmission protocol I'm stuck with at the moment.

    Anyway, thank you for the support!

    Best regards,

    Richard

  • I am afraid that there are no online version of SmartRF Studio and no Linux version either.

    BR

    Siri