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.

[参考译文] MSP430FR5994:8位A/D读数

Guru**** 2537230 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/582579/msp430fr5994-8-bit-a-d-readings

部件号:MSP430FR5994

我需要来自A/D转换器的8位值。  选择8位转换将返回8位以上的数据。

ADC12CTL2 || ADC12RES_0;         // 8位转换结果

我是否缺少其他设置?  以下是A15输入的设置代码:

//init A/D

P3SEL1 || BIT3;//启用A/D通道A15
P3SEL0 |= BIT3;

PM5CTL0 &=~LCKLPM5;//禁用GPIO开机默认高阻抗模式 以激活先前配置的端口设置

//默认情况下,REFMSTR=1 => REFCTL用于配置内部引用
while (REFCTL0 & REFGENBUSY);//如果ref发生器忙,请等待
REFCTL0 || REFVSEL_0 | REFON;//选择内部参考= 1.2V
ADC12CTL0 = ADC12SHT0_2 | ADC12ON;
ADC12CTL1 = ADC12SHP;// ADCCLK = MODOSC;采样计时器
ADC12CTL2 || ADC12RES_0;// 8位转换结果
ADC12MCTL0 |= ADC12INCH_15 | ADC12VRSEL_1;// A15 ADC输入选择;Vref=1.2V
while (!(REFCTL0 & REFGENRDY));//等待参考生成器稳定
ADC12CTL0 |= ADC12ENC;//启用转换

同时(1)


ADC12CTL0 |= ADC12SC;//启动转换软件触发器
同时(!(ADC12IFGR0和BIT0));
Temp = ADC12MEM0;//读取转换结果--- >读取> 8位值-需要所有答案都来自00-FF ...

}

谢谢!

Don

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

    你好Don!

    ADC12CTL2 |= ADC12RES_0;// 8位转换结果

    这将不会按您的要求工作。 ADC12CTL2中的ADC12RES在重置后设置为10b (14位)。 对于8位分辨率,ADC12RES必须具有00B。 ADC12RES_0将有0作为定义,所以当使用|=作为指令时,ADC12CTL2将保持不变,因为使用0的ORing不起作用。 您必须清除ADC12CTL2中的第4位和第5位以获得8位分辨率。

    您可以a)写入ADC12CTL2 &=~(0x10 | 0x20);或b)通过写入ADC12CTL2 =(ADC12RES_0 |...)完全初始化ADC12CTL2;由于ADC12RES_0为0,您根本不必写入此语句,但很容易看到您选择了设置_0。

    Dennis

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

    感谢您的快速响应!!