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.

[参考译文] MSP430F5338:在输入电压变化的区域内、ADC12计数一直保持在2048

Guru**** 2502205 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/923317/msp430f5338-adc12-counts-stuck-at-2048-in-a-region-of-varying-input-voltage

器件型号:MSP430F5338

使用2.5V 内部基准。 进行选择  

//设置 ADC12MEM0转换以使用内部 VREF+作为基准
ADC12MCTL0 |= ADC12SREF_1;

有一个输入电压变化的区域会导致输出计数保持在中值(2048个计数)。 使用 AVCC 作为 REF+(即 ADC12SREF_1)时、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;

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Thomas:

    您要测量的电压范围是多少?  大于2.5V 的电压?  您的 AVCC 是什么?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    使用内部2.5V 基准、"死区"(输出恒定的2048个计数)似乎出现在1.25V (+/-0.2V 频带)附近的区域。 对于低于和高于此死区的电压、输出随输入线性变化。 但是、在该区域内、调节电压不会改变2048个计数输出。  在本例中、 ADC12MCTL0 |= ADC12SREF_1;。

    如果我切换至 ADC12MCTL0 |= ADC12SREF_0;在3.30V 时使用 REF+= AVCC、我获得预期性能、且中端附近没有死区。

    另一个问题、可能是相关的、也可能是不相关的、就是当 AVCC 作为 REF+、通道 A10、温度传感器时、会输出比预期高得多的指示电压(例如、在20C 时为1.09V 与预期的735mV)。 作为参考、A12 (VBAT/3)和 A11 ([AVCC-AVSS}/2)正确指示[引用用户="Dennis Lehman"]

    尊敬的 Thomas:

    您要测量的电压范围是多少?  大于2.5V 的电压?  您的 AVCC 是什么?

    谢谢。