2
\$\begingroup\$

I'm using a CC1101 radio to communicate with an existing protocol. The settings I've used to configure the radio seem sound, as I'm able to receive messages from the 'other end' without errors. My returning transmissions, however, are detected less than 20% of the time. The receiving end has a debug option that shows all data received after detecting a start-byte, and when a start-byte is actually detected, the data received is correct. The amount of detected start-bytes is far too low, though.

I've confirmed my own transmissions are occurring when they should using a logic analyser, a spectrum analyser and an oscilloscope, but I can't figure out why my answers aren't detected. Other devices communicating with the receiving end do so without any problems.

How can I debug my transmitting configuration? Specifically, what steps can I take to rule out potential problems?

Details:

I've tried tuning the following settings, to either no effect or worsening the problem:

  • Deviation
  • Frequency
  • Number of preamble bytes
  • Transmit power

I've also implemented the CC1101's FREQEST feature, which required me to filter values beyond a certain threshold to prevent disabling reception altogether.

The datasheet seems to elaborate far more on reception than it does on transmission, which, in this case, isn't very helpful either.

\$\endgroup\$
9
  • \$\begingroup\$ Does it get better at shorter range and worse at longer range? \$\endgroup\$
    – Martin
    Oct 8, 2013 at 12:23
  • 1
    \$\begingroup\$ What length data preamble are you transmitting. Your transmitter will need to send several bytes of 1s and 0s for the receiver to adequately lock-in to the data. You need to programme this byte_value and once programmed it does it automatically for you. \$\endgroup\$
    – Andy aka
    Oct 8, 2013 at 12:43
  • \$\begingroup\$ I'm testing mostly at a distance of about 2.5 meters / 8 feet, but moving closer or farther away doesn't seem to make any significant distance. \$\endgroup\$
    – Lg102
    Oct 8, 2013 at 12:44
  • \$\begingroup\$ I'm using a 24-byte preamble. \$\endgroup\$
    – Lg102
    Oct 8, 2013 at 13:13
  • \$\begingroup\$ Could there be a timing issue that you might respond too quickly and radio isn't ready because of calibration or some other event? \$\endgroup\$ Oct 8, 2013 at 16:13

1 Answer 1

2
\$\begingroup\$

I figured it out. In a very ambiguous part of the CC1101 datasheet it is mentioned that preamble settings will be ignored for certain combinations of settings. Once I fixed that and switched to a manual transmission of a preamble, everything worked fine.

For future reference, these are things to try when debugging TX:

  • Use a spectrum analyser and oscilloscope to confirm your timing
  • Make your transmitter and receiver emit a continuous wave, and make sure your frequencies match up.
  • Check whether the length of your transmission matches your expectation.
  • Check the RSSI for your communication. Does it make sense?

Thanks for thinking along, everyone!

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.