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.

CC1200 : last packet's bit corruption when transmitting

Other Parts Discussed in Thread: CC1200

Hello,

I have detected that during communication between 2 devices using CC1200, I have about 50% of packets detected with a CRC error.

I have then checked the received payloads and found no mistakes, all the bytes are the same than those sent!

To be sure that my hardware was not implicated, I have then used 2 TI eval boards and I have done packet transmissions with the CC1200. I have noticed the same rate of packet with crc error in SmartRf.

Then I have determined that when a packet is transmitted the last bit of the last packet byte was corrupted. This explains why the packets are discarded at the reception because the crc expected in not the same than the one sent by the TX chip.

The radio parameters are : 868MHz / 250kbps/RX_BW=555kHz/2GFSK/Dev=125kHz/ 15<Pkt_length<64 bytes/4 preamble bytes / 2 sync bytes

Can you check this with your own eval boards and SmartRf? Have you ever heard about this problem?

Have you a workaround to safeguard the packet transmission?

Thank you in advanced

  • In addition, I have done some tests with SmartRf using the PA_RAMP_SHAPE_EN.

    When I enable the ramp shaping with any RAMP_SHAPE value and FIRST_IPL and SECOND_IPL set to 0b11, I have good results, all the packets are received correctly.

    Why the ramp shaping is needed to get a correct transmission?

     

  • Hi

    I have tested CC1200 with SmartRF Studio and do not see any CRC errors. Below are the settings I am using. I used the 100 kbps typical settings as a starting point and then changed the parameters you mentioned. As you can see PA ramping is recommended for all our test cases. Ramping is enabled to reduce the harmonics.

    // Packet bit length = 0

    // Address config = No address check

    // Carrier frequency = 867.999878

    // Manchester enable = false

    // Deviation = 125.122070

    // Symbol rate = 250

    // Bit rate = 250

    // Packet length = 255

    // Modulation format = 2-GFSK

    // Packet length mode = Variable

    // Device address = 0

    // RX filter BW = 555.555556

    // Whitening = false

     

    static const registerSetting_t preferredSettings[]=

    {

    {CC1200_IOCFG2, 0x06},

    {CC1200_SYNC_CFG1, 0x46},

    {CC1200_SYNC_CFG0, 0x23},

    {CC1200_DEVIATION_M, 0x9A},

    {CC1200_MODCFG_DEV_E, 0x0D},

    {CC1200_DCFILT_CFG, 0x4B},

    {CC1200_PREAMBLE_CFG0, 0x8A},

    {CC1200_IQIC, 0x58},

    {CC1200_CHAN_BW, 0x03},

    {CC1200_MDMCFG1, 0x42},

    {CC1200_MDMCFG0, 0x05},

    {CC1200_SYMBOL_RATE2, 0xB9},

    {CC1200_SYMBOL_RATE1, 0x99},

    {CC1200_SYMBOL_RATE0, 0x9A},

    {CC1200_AGC_REF, 0x2E},

    {CC1200_AGC_CS_THR, 0x01},

    {CC1200_AGC_CFG1, 0x12},

    {CC1200_AGC_CFG0, 0x80},

    {CC1200_FIFO_CFG, 0x00},

    {CC1200_FS_CFG, 0x12},

    {CC1200_PKT_CFG2, 0x00},

    {CC1200_PKT_CFG0, 0x20},

    {CC1200_PA_CFG0, 0x51},

    {CC1200_PKT_LEN, 0xFF},

    {CC1200_IF_MIX_CFG, 0x1C},

    {CC1200_TOC_CFG, 0x03},

    {CC1200_MDMCFG2, 0x02},

    {CC1200_FREQ2, 0x56},

    {CC1200_FREQ1, 0xCC},

    {CC1200_FREQ0, 0xCC},

    {CC1200_IF_ADC1, 0xEE},

    {CC1200_IF_ADC0, 0x10},

    {CC1200_FS_DIG1, 0x07},

    {CC1200_FS_DIG0, 0xA5},

    {CC1200_FS_CAL1, 0x40},

    {CC1200_FS_CAL0, 0x0E},

    {CC1200_FS_DIVTWO, 0x03},

    {CC1200_FS_DSM0, 0x33},

    {CC1200_FS_DVC0, 0x17},

    {CC1200_FS_PFD, 0x00},

    {CC1200_FS_PRE, 0x6E},

    {CC1200_FS_REG_DIV_CML, 0x1C},

    {CC1200_FS_SPARE, 0xAC},

    {CC1200_FS_VCO0, 0xB5},

    {CC1200_IFAMP, 0x09},

    {CC1200_XOSC5, 0x0E},

    {CC1200_XOSC1, 0x03},

    {CC1200_PARTNUMBER, 0x20},

    {CC1200_PARTVERSION, 0x11},

    {CC1200_MODEM_STATUS1, 0x10},

    };

    BR

    Siri

  • The Tx chain has some latency so what I think happen in some cases when ramping is not used is that the PA is turned off slightly before the last bit is sent on the air.