CC1101:Low data rates working but 125K and 250K GFSK not working

Hi,

I have a working application that uses CC1101. The app works from 4.8Kbps to 74.8Kbps, but 125Kbps and 250Kbps donot work. Modulation is GFSK.

I have taken all the radio values from TI's SmartRF Studio 7.
I am using a modified version of this library GitHub - veonik/arduino-cc1101: Arduino library for interfacing with CC1101 transceivers..
The modifications are to avoid use of interrupts on both the tx and rx side. SPI based polling is used to figure out whether any data was received.

Any pointer to figure out the problem?
Anybody else faced problems with high data rate?

Thanks and Regards,
WI

Any pointer to figure out the problem?

Why, yes!

Follow the standard guidelines for posting code and data relevant to your problem, so that informed users might have a clue what you are doing wrong, and post on a suitable forum.

The TI user forum would be a suitable forum.

Why do you want to avoid interrupts?
Sounds like the polling overhead may be skipping characters.
You would need to look closely at the library to see what the modifications have done .

My app runs on Arduino where the interrupt pins are already used by some other sensors.

mauried:
Why do you want to avoid interrupts?

My app runs on Arduino where the interrupt pins are already used by some other sensors.

mauried:
Sounds like the polling overhead may be skipping characters.
You would need to look closely at the library to see what the modifications have done .

I poll for packet availibility, once RX buffer has packet a small delay is given for entire packet to come and then it is read from the chip's RX buffer over SPI.

I can write code to reproduce the problem and post it here, however, I feel there is something specific to these higher rates that I am missing. The code has been working for quite sometime now in atmega328 as well as ESP8266.

The basic library supported only low data rates, these higher data rates were added by me.

By the way, in my test code, the TX side sends a few bytes once a second.

The RX side has the below observations

  1. Very few successful receptions.

  2. Few pkts received but have CRC errors.

  3. Most of the pkts are completely missed without any indication