Sorry for the length, but easier to understand if you have all the information.
We have just started using the ADC on the CC2430 and found an anomaly between the operation and the data sheet. In the latest data sheet, Rev.2.1, the ADC is described as a 12-bit unit. However, the ADC data registers ADCL and ADCH contain a 14-bit ADC value, in two’s-complement format. The newest preliminary data sheet I still have, Rev. 1.03, describes a 14-bit ADC. When we use the ADC, it behaves like a 14-bit device. We have a limitation that we can only use 10 bits of the ADC data. So we do the following:
1) Set up to do single 12-bit conversion (EDIV[1:0] = 11) on channel X (X = 0 or 1 or 6 or 7), using AVDD (3.3VDC) as reference.
2) Do the conversion using a write to ADCCON3.
3) Read the ADCL and ADCH registers and save the 16-bit result in a variable.
4) Right shift the two LSBs because they are not part of the ADC data.
5) Right shift three more times. This leaves us with 13 data bits.
6) Ignore the MSB, as we are configured for single ended conversions and only want positive results.
7) Right shift the result two more times, leaving a 10-bit result.
We have tested the ADC with input voltages from 0 to 3.3. We have found that we are achieving a resolution of 3.22mV per count. This corresponds to 3.3V/1024, or exactly how a 14-bit ADC (used in the manner described above) would behave. We believe the ADC in the CC2430, on the Cirronet ZMN2430 modules we are using, are 14 bits. Maybe they contain old silicon? Either way, the new data sheet still shows a 14-bit data result.
I forgot to add, we also have a situation that if we short the ADC input to Ground, we start to see results in the FFxx range. I assume this is just offset or noise, but to keep our customers happy we needed to detect this negative number and equate it to zero for this condition. We also found that when we tried to use a 28k-ohm resistor in series with the ADC input, the measurement was affected. We changed the resistor to a 2.8k-ohm and the ADC measurement was then correct. Wierd thing is, we got a 14-bit negative number, not a 12-bit?
So my questions:
Does the CC2430 have a 14-bit or a 12-bit ADC? Did TI/Chipcon really change the ADCs from 14-bit to 12-bit and we will see it in newer silicon? If the ADC is 12 bits, why is there a 14-bit result register? How do we define the MSB for the 12-bit version vs. the 14-bit version? (sign bit needs to be defined for a two’s-complement value).