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.

[参考译文] CCS/MSP430F5338:仅从 REF+=AVCC 的 ADC12获取线性输出

Guru**** 2502205 points
Other Parts Discussed in Thread: MSP430F5338

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/923327/ccs-msp430f5338-only-getting-linear-output-from-adc12-with-ref-avcc

器件型号:MSP430F5338

工具/软件: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基准的原因的想法?

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

    尊敬的 Thomas:

    我想您已经两次发布了这个问题。

    请参阅此 链接至其他帖子 以获取回复。

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

    正确。 当我第一次发布时、我收到了一条奇怪的错误消息、使我不确定是否收到了该消息。  

    无论如何,我有兴趣听取对所观察到的问题可能作出的解释/解决办法。

    有什么想法吗?