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\$
  • \$\begingroup\$ Does it get better at shorter range and worse at longer range? \$\endgroup\$ – Martin Oct 8 '13 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 '13 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 '13 at 12:44
  • \$\begingroup\$ I'm using a 24-byte preamble. \$\endgroup\$ – Lg102 Oct 8 '13 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\$ – Gustavo Litovsky Oct 8 '13 at 16:13
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, privacy policy and cookie policy

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