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:
| Register | Value | User guide notice |
| FS_DIG1 | 0x07 | Use values from smartRF |
| FS_DIG0 | 0xAF | Partially use values from smartRF, rest for FS loop BW |
| FS_CAL1 | 0x40 | Use values from smartRF |
| FS_CAL0 | 0x0E | Partially use values from smartRF, rest for out of lock detector |
| FS_DIVTWO | 0x03 | Use values from smartRF |
| FS_DSM0 | 0x33 | Use values from smartRF |
| FS_DVC0 | 0x17 | Use values from smartRF |
| FS_PFD | 0x00 | Use values from smartRF |
| FS_PRE | 0x6E | Use values from smartRF |
| FS_REG_DIV | 0x1C | Use values from smartRF |
| FS_SPARE | 0xAC | Use values from smartRF |
| FS_VCO0 | 0xB5 | Use values from smartRF |
| IFAMP | 0x09 | Partially use values from smartRF, rest for SSB |
| XOSC5 | 0x0E | Use values from smartRF |
| XOSC1 | 0x03 | Partially use values from smartRF, rest for RF PLL buffer |
| IF_MIX_CFG | 0x1C | Partially use values from smartRF, rest for IF configuration |
| IF_ADC1 | 0xEE | Use values from smartRF |
| IF_ADC0 | 0x10 | Use values from smartRF |
| MDMCFG0 | 0x05 | Partially use values from smartRF, rest for transparent data mode and veterbi detection |
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.
- FREQOFF_CFG: Frequency offset correction, enable it by setting bit 5.
- IF_MIX_CFG: Configure the intermediate frequency (IF), Select a value from table using bits 4:2.
- MDMCFG2: Configure your symbol map and the Tx up-sampler factor.
- MODCFG_DEV_E: Select modulation and set exponent part of the frequency deviation.
- DEVIATiON_M: Set the mantissa of the frequency deviation.
- CHAN_BW: Configure channel bandwidth by selecting 2 decimation factors for the two CIC filters in the chain.
- 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.
- 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.
- AGC_REF: AGC reference level, in dependence on thr Rx filter bandwidth and the rssi offset.
- AGC_CFG1: Configure AGC window size, settle time and rssi step size.
- AGC_CFG2: For gain tables.
- AGC_CFG3: AGC sync behavior, for instance control to freeze or not.
- AGC_CFG0: More detailed AGC settings. Important it affects RSSI.
- PKT_CFG2: Data Packet configuration such as switching between FIFO and transparent mode
- RFEND_CFG1: We configure here the RX state machine, e.g. which state to change after receiving a good packet.
- 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.