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:MSP 低功耗微控制器论坛

Guru**** 2473000 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1322654/msp430fr5969-msp-low-power-microcontroller-forum

器件型号:MSP430FR5969

您好!

我尝试从32个 ADC 通道中的 A0到 A3读取4个 ADC 通道。 我希望它在 通道序列(自动扫描)模式下工作。

对于配置、我执行了以下步骤:

ADC12CTL0 |= ADC12SHT0_0 | ADC12SHT1_0;   //设置采样时间
ADC12CTL1 |= ADC12CONSEQ_1;               //通道序列,单次转换模式
ADC12CTL1 |= ADC12SSEL_3;                  //选择 SMCLK 时钟
ADC12CTL1 |= ADC12SHP;                     //使用采样计时器
ADC12CTL2 ~(3<<4);                      //重置 ADC 分辨率设置
ADC12CTL2 |= ADC12RES_2;                  //选择12位分辨率
ADC12MCTL0 |= ADC12INCH_0;                //选择 ADC 输入通道 A0
ADC12MCTL1 |= ADC12INCH_1;                //选择 ADC 输入通道 A1
ADC12MCTL2 |= ADC12INCH_2;                //选择 ADC 输入通道 A2
ADC12MCTL3 |= ADC12INCH_3;                //选择 ADC 输入通道 A3

对于逻辑、我执行了以下步骤:

ADC12CTL0 |= ADC12ON;                      //打开 ADC
ADC12CTL0 |= ADC12ENC;                    //启用 ADC
ADC12CTL0 |= ADC12SC;                     //开始转换-软件触发
while (ADC12CTL1和 ADC12BUSY);              //轮询 ADC 忙状态
for (index = 0;index < 4;index++){
   ADCvar[index]=ADC12MEM++;              //将转换后的值存储到数组中

在调试模式下检查代码时、发现  ADC12BUSY 始终保持高电平。 因此、它卡在 while 环路中。
    ADC 配置有什么问题吗?
    请注意: ADC12ENC 和 ADC12SC 位用单独的指令置位、同时内部触发。

Q2 -这些值仅存储在 ADC12MEM0中。 用户是否应该在 ADC12CTL3中增加寄存器 ADC12CSTARTADDx?
    我预计在转换开始后、它会由处理器自动递增。 这不是该函数吗?

谢谢!
Padmini

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

    我认为您还需要:

    > ADC12CTL0 |= ADC12MSC;  //一次完成整个批次

    ADC12MCTL3 |= ADC12INCH_3|ADC12EOS; //选择 ADC 输入通道 A3,这是最后一个

    如果没有第一个信号、ADC 每次转换都需要一个单独的触发器(ADC12SC)[请参阅用户指南(SLAU367P)图34-9]。

    而没有第二个通道、ADC 将一直循环遍历(全部32个)通道[以及图34-9]。

    [编辑:我刚刚注意到:

    >    ADCvar[index]= ADC12MEM++;              //将转换后的值存储到数组中

    我怀疑你想要

    >    ADCvar[index]= ADC12MEM[index];           //将转换后的值存储到数组中

    ]

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

    我添加了这两条语句、它确实起了作用。

    谢谢!