Mastering the CC120X Radio Chip: A Practical Guide (1)

From previous posts, you may notice we are pursuing developments with TI TrxEb. The device we have comes with the CC1200 chip, and the CC120x family offers related options. We start, as usual, with the user guide. This is a capable chip, yet the user guide alone is not enough to program it.

It has many magic registers that only the SmartRF software reveals, which currently runs on Windows. So, step one: connect your board to a Windows machine and dump the registers from SmartRF. You get something like this:

RegisterValueUser guide notice
FS_DIG10x07Use values from smartRF
FS_DIG00xAFPartially use values from smartRF, rest for FS loop BW
FS_CAL10x40Use values from smartRF
FS_CAL00x0EPartially use values from smartRF, rest for out of lock detector
FS_DIVTWO0x03Use values from smartRF
FS_DSM00x33Use values from smartRF
FS_DVC00x17Use values from smartRF
FS_PFD0x00Use values from smartRF
FS_PRE0x6EUse values from smartRF
FS_REG_DIV0x1CUse values from smartRF
FS_SPARE0xACUse values from smartRF
FS_VCO00xB5Use values from smartRF
IFAMP0x09Partially use values from smartRF, rest for SSB
XOSC50x0EUse values from smartRF
XOSC10x03Partially use values from smartRF, rest for RF PLL buffer
IF_MIX_CFG0x1CPartially use values from smartRF, rest for IF configuration
IF_ADC10xEEUse values from smartRF
IF_ADC00x10Use values from smartRF
MDMCFG00x05Partially use values from smartRF, rest for transparent data mode and veterbi detection
SmartRf magic registers

After these magic registers, there are many more registers to understand so you can control the CC120x effectively. Each register serves a specific purpose, and recognizing how they interact helps prevent misconfigurations during setup. You can configure all of them with SmartRF for a quick initial test, which saves time while you learn. However, we proceed slowly by verifying basic functions first, then expand to more advanced features.

Also, it is about understanding, and I will keep the remaining details for the user guide, with examples and notes. These additions help users recall steps during maintenance and troubleshooting. Ultimately, the goal is reliable configuration and a clear reference later.

  1. FREQOFF_CFG: Frequency offset correction, enable it by setting bit 5.
  2. IF_MIX_CFG: Configure the intermediate frequency (IF), Select a value from table using bits 4:2.
  3. MDMCFG2: Configure your symbol map and the Tx up-sampler factor.
  4. MODCFG_DEV_E: Select modulation and set exponent part of the frequency deviation.
  5. DEVIATiON_M: Set the mantissa of the frequency deviation.
  6. CHAN_BW: Configure channel bandwidth by selecting 2 decimation factors for the two CIC filters in the chain.
  7. MDMCFG1: Modem configuration e.g. DVGA_GAIN, skip FIFO, CS gate for sync word search and other stuff. Take care of VGA gain since it affects rssi.
  8. SYMBOL_RATE2:0: Three registers to configure symbol rate. In the user guide you find recipe to determine register values for a required symbol rate.
  9. AGC_REF: AGC reference level, in dependence on thr Rx filter bandwidth and the rssi offset.
  10. AGC_CFG1: Configure AGC window size, settle time and rssi step size.
  11. AGC_CFG2: For gain tables.
  12. AGC_CFG3: AGC sync behavior, for instance control to freeze or not.
  13. AGC_CFG0: More detailed AGC settings. Important it affects RSSI.
  14. PKT_CFG2: Data Packet configuration such as switching between FIFO and transparent mode
  15. RFEND_CFG1: We configure here the RX state machine, e.g. which state to change after receiving a good packet.
  16. FREQ2:0: Using these three registers you can configure the carrier frequency.

This is all for this first. So if you can control these register you can configure a simple receiver. This will be covered in the coming post 🕹️.

Subscribe to get last updates.

×