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.