Hi,
I'm using the CC1101 for a school project and I'm having issues with the CRC. I currently have two boards set up to test with and I'm transmitting a 62 byte packet with one and acknowledging that I received the byte with the other by sending another 62 byte packet. The details are as follows:
I send a packet to one of the boards. I read the data, print out the RSSI as well as the LQI and the actual data bytes. The data is flawless in this direction although I still get a CRC error. I then put 62 bytes in the transmit FIFO on this board, make sure I put exactly that many, and transmit it back. Keep in mind that the code on both boards is identical. The only difference is that one will send back an acknowledgement on receving a packet while the other does not. Now, when I receive the packet on the other end, I display how many bytes are in the RX FIFO (64 because I choose to append the two status bytes) followed by the data, RSSI, and the LQI. What I observe is a CRC error, and two bad data bytes at the end. Let me stress that I ALWAYS get two corrupted data bytes at the end. The value of these data bytes change.
I've had similar errors like these before and I either reverted to an older version of my code without the error or put a delay somewhere that somehow fixes it. Neither of these methods works. Does anyone have a similar problem or knows how to fix it? Also, why do time delays have so much effect on the operation of this device? I've seen a few places in the data sheet that mention certain timing requirements but I work well within these and still I have to delay to get optimum performance. For example, if I dont delay 30 ms between sending a burst strobe to read the RX FIFO and actually reading the first data byte, certain bytes will be corrupted. This chip is very frustrating and any help to better understand it would be much appreciated.
Thanks,
Caleb