Part Number:430BOOST-CC110L
Hello,
I'm developing Rf communications based on the TI CC110L.
At this stage, I'm trying to verify the Packet error rate depending on the distance between the transmitter and the receiver.
My setup contains the following:
- Two RF Booster Pack mounted on two LP-G2
- One LP is set as a Master, the second is set as a slave.
- The test scenario consists of a loop back test, where the Master transmits a number of packets (let's say 100) one by one, the slave is always listening, once it receives a valid packet (known by a packetId and a Header) it returns it back to the Master, the Master compares the tranmitted packet with the received one, and count the number of packets failed. at the end, I have the count of Packet Failed/sent.
The first results for few centimeters distance are around 4% to 10% of packets not received.
below is my software configuration.
My Questions/issues:
1/ Is there any optimal configuration to get the best performance in terms of a Packet Error Rate, let's say 1% as declared by TI ? Please suggest.
2/ On of the issue I have seen is that the receiver still receiving packet even if there is No TX.often I'm getting RXBYTES = Fixed Packet Length. I filtered out this with the verification of the CRC_OK bit in the PKTSTATUS register.
However, In my configuration, I've set the preamble and sync word, so I'm waiting to not receive a lot of no sense packets!!
I'm not sure that the preamble and sync word are proceeded by the receiver.
3/ I want to use the GDO_0 or GDO_2 as interrupt events for receiving packets.
I have tried many configs for IOCFG0 and IOCFG2 without success!
4/ All Your advices and comments will be appreciated.
Thanks.
SOFTWARE CONFIGURATION:
Init:
- Init MCU
- Reset radio
- Init radio (Write all registers including PAtable)
TX:
- Set TX config:
- Set Radio to IDLE
- Write the packet Lenth and the frequency (startFreq+chanSpace+Channel)
- Write packet to TXFIFO
- Strobe STX
- Wait for IDLE
- Flash TXFIFO
RX:
- Set RX config:
- Set Radio to IDLE (make sure that the radio is in idle before programming registers)
- Write the packet Lenth and the frequency (startFreq+chanSpace+Channel)
- Strobe SRX (start receiving)
- Wait for IDLE (packet is received )
- Read RXBYTES and PKTSTATUS.CRC_OK
- If RXBYTES >= 0 and CRC_OK , read the RXFIFO
- Else Flash RXFIFO and restart (from Set RX config)
- if reading RXFIFO success, I verify the Packet header and PacketID (on the data payload)
Register configuration:
const registerSetting_t preferredSettings_1200bps[]= { {IOCFG0, 0x06}, // 0x01> Assert RX overflow, 0x06> Sync. 0x0F > CRC {IOCFG1, 0x2E}, // default {IOCFG0, 0x01}, // 0x01> Assert RX overflow, 0x06> Sync. 0x0F > CRC {FIFOTHR, 0x47}, // 32B for RX/33B for TX {SYNC1, 0xD3}, // by default {SYNC0, 0x91}, // by default {PKTLEN, 0x12}, // modified to 18B //{PKTCTRL1, 0x02}, // modified 0x00 > 0x0E: adress check (0x02), status RSSI and checksum, CRC autoflash {PKTCTRL0, 0x04},// modified, fixed packet (0x00), CRC enabled {FSCTRL1, 0x06}, // 6 x 26,36 following recommend. : With CC1101 RX filter BW set to 162.5 kHz the reception was excellent; 100/100 packets received ok {FREQ2, 0x21}, // FREQ2,1,0 config 902MHz:0x216276, config 868MHz: 2025ED {FREQ1, 0x62}, // {FREQ0, 0x76}, // {MDMCFG4, 0xC7}, // MDMCFG4,3 : baud rate {MDMCFG3, 0x83}, {MDMCFG2, 0x11}, // better sensitivity, 2-FSK modul., preamble and sync word 15/16 {DEVIATN, 0x40}, {MCSM1, 0x00}, {MCSM0, 0x18}, {FOCCFG, 0x16}, {AGCCTRL2, 0x43}, {FSCAL3, 0xE9}, {FSCAL2, 0x2A}, {FSCAL1, 0x00}, {FSCAL0, 0x1F}, {TEST2, 0x81}, {TEST1, 0x35}, {TEST0, 0x09}, };
The PATABLE[0] = 0xC0;