Some notes about CC chips
Here are two unusual things I noticed while working with Texas Instruments (used to be Chipcon) CC2500 and CC1101 integrated transceivers.
It appears that the actual bit rate in continuous synchronous serial mode can differ significantly from what Texas Instrument's SmartRF Studio 7 calculates. See for example the following measurements that were taken on a CC2500 chip using a 27 MHz crystal oscillator as a reference clock.
MDMCFG4 value | RF studio [baud] | measured [baud] |
---|---|---|
0x8a | 50.0 | 38.5 |
0x8b | 100.0 | 77.2 |
0x8c | 200.0 | 154.0 |
0x8d | 400.0 | 305.0 |
These bit rates were measured using an oscilloscope attached to the clock output of the transceiver, so I trust them to be correct. Bit rates I measured on a CC1101 agree with what SmartRF Studio predicts.
Update: I revisited this issue and the problem was a bug in my code that caused MDMCFG3 register (which also affects data rate) not to be properly programmed on CC2500. Accounting for this bug, the data rates are within 1% of those calculated by SmartRF Studio 7 or from the formula given in the datasheet.
The other issue I saw is symbol mapping for 4FSK modulation in CC1101. It looks like it depends on the configured bit rate. For example, with 200 baud, the symbol to frequency mapping appears to be as follows:
symbol | Δf |
---|---|
00 | −0.33 fdev |
01 | −1.00 fdev |
10 | +0.33 fdev |
11 | +1.00 fdev |
However, with 45 baud, the mapping is different, with symbol bit order apparently switched around:
symbol | Δf |
---|---|
00 | −0.33 fdev |
01 | +0.33 fdev |
10 | −1.00 fdev |
11 | +1.00 fdev |
Update: It's possible this difference has something to do with when exactly the radio samples the data line in relation to the clock. Either I don't understand exactly what is going on or the radio isn't sampling the data when it is supposed to. Also, the factors of fdev in tables were wrong (symbol frequencies are equally spaced, with maximum deviation from central frequency equal fdev).
Of course, this doesn't matter if you are using two identically configured CC1101 chips on both ends of the radio link. But it is important if you want to use it to communicate with some other hardware.
Those are some heavy discrepancies in baud rate. 25% ?! But which calculation is correct? Does RF studio calculate wrong values or is the equation in the datasheet wrong? Is there anything in the errata sheet about this?