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.

CC1101: 433MHz TPMS migrating from Async Serial Mode to FIFO Mode

Part Number: CC1101


Tool/software:

Hello,

I've recently started using a CC1101 to read 433MHz TPMS sensors.  I have the ability to read signals and parse them correctly using the CC1101 in Asynchronous Serial Mode, which honestly was no easy feat.  Using async mode, I have very little reception range, works great on the bench, receiver and TPMS sensor about 0.75 meter apart, but as soon as the device moves into a vehicle, it doesn't receive any messages.  I recall reading something about FIFO mode having the ability to extend the reception range.  I've been trying to change over to FIFO mode, but SmartRF Studio never captures any of the signals. 

I started with these settings for Async Serial Mode:

CC1101_WriteRegister(CC1101_IOCFG2,0x0D);
CC1101_WriteRegister(CC1101_IOCFG0,0x0E);
CC1101_WriteRegister(CC1101_FIFOTHR,0x07);
CC1101_WriteRegister(CC1101_SYNC1,0x00);
CC1101_WriteRegister(CC1101_SYNC0,0x00);
CC1101_WriteRegister(CC1101_PKTLEN,0xFF);
CC1101_WriteRegister(CC1101_PKTCTRL1,0x04);
CC1101_WriteRegister(CC1101_PKTCTRL0,0x72);
CC1101_WriteRegister(CC1101_ADDR,0x00);
CC1101_WriteRegister(CC1101_CHANNR,0x00);
CC1101_WriteRegister(CC1101_FSCTRL1,0x0F);
CC1101_WriteRegister(CC1101_FSCTRL0,0x00);
CC1101_WriteRegister(CC1101_FREQ2,0x10);
CC1101_WriteRegister(CC1101_FREQ1,0xB0);
CC1101_WriteRegister(CC1101_FREQ0,0x71);
CC1101_WriteRegister(CC1101_MDMCFG4,0x5B);
CC1101_WriteRegister(CC1101_MDMCFG3,0xF8);
CC1101_WriteRegister(CC1101_MDMCFG2,0x00);
CC1101_WriteRegister(CC1101_MDMCFG1,0x22);
CC1101_WriteRegister(CC1101_MDMCFG0,0xF8);
CC1101_WriteRegister(CC1101_DEVIATN,0x20);
CC1101_WriteRegister(CC1101_MCSM2,0x07);
CC1101_WriteRegister(CC1101_MCSM1,0x3C);
CC1101_WriteRegister(CC1101_MCSM0,0x14);
CC1101_WriteRegister(CC1101_FOCCFG,0x3E);
CC1101_WriteRegister(CC1101_BSCFG,0x6C);
CC1101_WriteRegister(CC1101_AGCCTRL2,0xF8);
CC1101_WriteRegister(CC1101_AGCCTRL1,0x00);
CC1101_WriteRegister(CC1101_AGCCTRL0,0x91);
CC1101_WriteRegister(CC1101_WOREVT1,0x87);
CC1101_WriteRegister(CC1101_WOREVT0,0x6B);
CC1101_WriteRegister(CC1101_WORCTRL,0xFB);
CC1101_WriteRegister(CC1101_FREND1,0x56);
CC1101_WriteRegister(CC1101_FREND0,0x10);
CC1101_WriteRegister(CC1101_FSCAL3,0xEA);
CC1101_WriteRegister(CC1101_FSCAL2,0x2A);
CC1101_WriteRegister(CC1101_FSCAL1,0x00);
CC1101_WriteRegister(CC1101_FSCAL0,0x1F);
CC1101_WriteRegister(CC1101_RCCTRL1,0x41);
CC1101_WriteRegister(CC1101_RCCTRL0,0x00);


The signal I'm trying to catch, has a sync word, 0xaaa9.  After the sync word, the bits are then Manchester encoded.  There are roughly, 186 to 191 bits after the sync word.  I divide 191 by 8, which gives me, ~24 bytes.  These are the values I used for my new FIFO settings in SmartRF Studio.

These are the FIFO settings I'm using:

CC1101_WriteRegister(CC1101_IOCFG2,0x29);
CC1101_WriteRegister(CC1101_IOCFG1,0x2E);
CC1101_WriteRegister(CC1101_IOCFG0,0x06);
CC1101_WriteRegister(CC1101_FIFOTHR,0x07);
CC1101_WriteRegister(CC1101_SYNC1,0xAA);
CC1101_WriteRegister(CC1101_SYNC0,0xA9);
CC1101_WriteRegister(CC1101_PKTLEN,0x19);
CC1101_WriteRegister(CC1101_PKTCTRL1,0x04);
CC1101_WriteRegister(CC1101_PKTCTRL0,0x00);
CC1101_WriteRegister(CC1101_ADDR,0x00);
CC1101_WriteRegister(CC1101_CHANNR,0x00);
CC1101_WriteRegister(CC1101_FSCTRL1,0x0F);
CC1101_WriteRegister(CC1101_FSCTRL0,0x00);
CC1101_WriteRegister(CC1101_FREQ2,0x10);
CC1101_WriteRegister(CC1101_FREQ1,0xB0);
CC1101_WriteRegister(CC1101_FREQ0,0x71);
CC1101_WriteRegister(CC1101_MDMCFG4,0x5B);
CC1101_WriteRegister(CC1101_MDMCFG3,0xF8);
CC1101_WriteRegister(CC1101_MDMCFG2,0x02);
CC1101_WriteRegister(CC1101_MDMCFG1,0x22);
CC1101_WriteRegister(CC1101_MDMCFG0,0xF8);
CC1101_WriteRegister(CC1101_DEVIATN,0x20);
CC1101_WriteRegister(CC1101_MCSM2,0x07);
CC1101_WriteRegister(CC1101_MCSM1,0x30);
CC1101_WriteRegister(CC1101_MCSM0,0x14);
CC1101_WriteRegister(CC1101_FOCCFG,0x3E);
CC1101_WriteRegister(CC1101_BSCFG,0x6C);
CC1101_WriteRegister(CC1101_AGCCTRL2,0xF8);
CC1101_WriteRegister(CC1101_AGCCTRL1,0x00);
CC1101_WriteRegister(CC1101_AGCCTRL0,0x91);
CC1101_WriteRegister(CC1101_WOREVT1,0x87);
CC1101_WriteRegister(CC1101_WOREVT0,0x6B);
CC1101_WriteRegister(CC1101_WORCTRL,0xFB);
CC1101_WriteRegister(CC1101_FREND1,0x56);
CC1101_WriteRegister(CC1101_FREND0,0x10);
CC1101_WriteRegister(CC1101_FSCAL3,0xEA);
CC1101_WriteRegister(CC1101_FSCAL2,0x2A);
CC1101_WriteRegister(CC1101_FSCAL1,0x00);
CC1101_WriteRegister(CC1101_FSCAL0,0x1F);
CC1101_WriteRegister(CC1101_RCCTRL1,0x41);
CC1101_WriteRegister(CC1101_RCCTRL1_STATUS,0x00);
CC1101_WriteRegister(CC1101_RCCTRL0_STATUS,0x00);

I'm not able to receive any packets.

I guess after all that, my question is, will I be able to get greater reception range to receive packets from the TPMS sensors using FIFO over Async Serial Mode?  Or should I just continue to use Async Serial Mode and possibly change some settings to increase reception range?  Any suggestions on the correct path forward?

Any input would be greatly appreciated.

Kindest regards.

  • Hi,

    The range is dependent on the selection of the PHY. A lower data rate and smaller Rx bandwidth setting will give the best sensitivity for the receiver. Synchronous or asynchronous should not effect the range distance.

    Can you share your schematic  ?

    Have you measured the conducted performance when the antenna is removed as a first step. i.e. set the output power to maximum with an unmodulated carrier and measure if this correlates to the register setting.

    Measure also the frequency offset from the programmed frequency in kHz.