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.

[参考译文] MSP430FR5969:无法读取 ADC 值

Guru**** 2555640 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/598832/msp430fr5969-unable-to-read-adc-value

器件型号:MSP430FR5969

我目前正在使用 MSP430 FR5969评估板。

 

我已将 P4.2配置为 ADC 通道7。

 

我正在检查 ADC12IFG7位以查看转换是否发生。

 

我看不到发生任何转换。

 

代码如下(TI 修改的示例代码):

#include

volatile unsigned int ADCvar;
define SAples 256
unsigned int rx_buffer[samples*2]={0};

int main (空)

WDTCTL = WDTPW | WDTHOLD;//停止 WDT
int i = 0;
//配置 GPIO
P2SEL1 |= BIT4;//启用 A/D 通道 A0
P2SEL0 |= BIT4;

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

//配置 ADC12
ADC12CTL0 = ADC12ON | ADC12SHT0_2;//打开 ADC12、设置采样时间
ADC12CTL1 = ADC12SHP;//使用采样计时器
ADC12MCTL0 = ADC12VRSEL_4;// VR+= VeREF+(外部)和 VR-=AVss
ADC12CTL0 |= ADC12ENC;//启用转换

while (i <样本)

ADC12CTL0 |= ADC12SC;//开始转换软件触发
while (!(ADC12IFGR0 & BIT7));
RX_buffer[i]= ADC12MEM7;//读取转换结果
i++;
__no_operation();//在此设置断点

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    由于您既不设置 ADC12CTL3:CSTARTADD 也不设置 ADC12MCTLx:ADC12INCH、因此您将对 A0 -> MEM0进行采样。

    如果您的目标是采样 A7 -> MEM7、则需要设置这两个字段。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢你的帮助。 要启用 ADC 通道6、应设置哪个寄存器? 它应该是 ADC12MCTL0还是 ADC12MCTL6?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我建议您保留 CSTARTADD=0并设置 MCTL0:INCH=7 (对于 A7)或=6 (对于 A6)。 结果将显示在 MEM0/IFG0中。

    如果您想将其扩展到序列、这种方法的扩展性会更好(另请参见 CONSEQ)。