工具/软件:Code Composer Studio
MSP430F5338:我使用以下代码设置 ADC12:
//允许 ADC12_A 控制基准(相对于通过 REF 部分进行控制)
REFCTL0 &=~REFMSTR;
//打开 ADC12
ADC12CTL0 |= ADC12ON;
ADC12CTL1 |=(ADC12SSEL0|ADC12SSEL1);//为 ADC12_A 时钟源选择 SMCLK;无分频
ADC12CTL1 |= ADC12SHP;//SAMPCON 采样信号来源于采样定时器
//1K 源阻抗需要大约1.43 uec 才能稳定至12位
//这大约是20个 ADC12CLK 周期
//将其设置为32个时钟周期
ADC12CTL0 ||(ADC12SHT00|ADC12SHT01);//设置32个时钟周期的采样时间
//打开内部基准、将其设置为2.5V
ADC12CTL0 |=(ADC12REFON|ADC12REF2_5V);
//设置 ADC12MEM0转换以使用内部 VREF+作为基准
ADC12MCTL0 |= ADC12SREF_1;
//基准缓冲器常开
ADC12CTL2 &=~ADC12REFBURST;
//为 ADC A0输入配置 P6.0
P6SEL |= BIT0;
//为输入选择 ADC12 A0
ADC12MCTL0 |= ADC12INCH_0;
//重置标志
ADC12DataReady=0;
//启用 ADC12 A0中断
ADC12IE |= ADC12IE0;
//使能转换(从 ADC12SC 位开始)
ADC12CTL0 |= ADC12ENC;
当我对 A0进行采样时、输入范围中间有一个"死区"、可提供恒定的2048计数输出。
如果我使用 AVCC 作为 REF+:
ADC12MCTL0 |= ADC12SREF_1;
输出通过该区域呈线性(并正确)。
是否有任何关于内部 REF+不能用作 ADC12基准的原因的想法?