This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TMS320F280025C: Driverlib Functions中的ADC校准函数ADC_setOffsetTrim错误

Part Number: TMS320F280025C
Other Parts Discussed in Thread: C2000WARE

C2000Ware_5_00_00_00\driverlib\f28002x\driverlib\adc.c中的函数ADC_setOffsetTrim内容如下:

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void
ADC_setOffsetTrim(uint32_t base)
{
uint16_t *offset;
uint32_t moduleShiftVal;
uint16_t offsetShiftVal;
uint16_t analogRefRegVal;
ADC_ReferenceMode refMode;
ADC_ReferenceVoltage refVoltage;
//
// Check the arguments.
//
ASSERT(ADC_isBaseValid(base));
//
// Assign a shift amount corresponding to which ADC module is being
// configured.
//
switch(base)
{
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

当该函数用于校准ADCA时,可以正常校准。

但用于校准ADCC时,参数moduleShiftVal的值是1,注意第45-47行,此时赋给refModerefVoltage的值分别是analogRefRegVal(寄存器ANAREFCTL)值的bit1和bit9。

而寄存器ANAREFCTL的位域图如下:

实际上应该赋给refModerefVoltage的值应该是寄存器ANAREFCTL值的bit2和bit10,而非bit1和bit9。

这是否是Driverlib Functions编写错误?