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.

[参考译文] MSP430FR4133:ADC序列示例代码未按预期运行

Guru**** 2589265 points
Other Parts Discussed in Thread: MSP-EXP430FR4133

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/641899/msp430fr4133-adc-sequence-example-code-not-functioning-as-expected

部件号:MSP430FR4133
主题中讨论的其他部件:MSP-EXP430FR4133MSP430WARE

您好,

我正在尝试从A2到A0读取一系列ADC值。  我正在使用MSP430Ware,开发工具和MSP-EXP430FR4133下的TI资源浏览器上提供的msp430fr413x_ADC10_10.c示例。  当我运行此代码并将ADC_Result添加到表达式窗口时,我注意到在进入低功耗模式之前只收集A2,而该设备随后从未离开。  您能告诉您如何正确地增加此代码以实际读取通道A2,A1和A0吗?

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

    您好,Patrick:

    不幸的是,问题似乎是由ADC使用MODCLK作为时钟源引起的。 这在LPM0中应该是正常的,但由于某种原因,它不工作。 我将对此进行研究,但现在,您可以通过以下两种方法之一来解决此问题:

    1. 将第90行替换为:ADCCTL1|= ADCSHP | ADCCONSEQ_1;(这将使用ACLK而不是MODCLK)
    2. 或者,将第106行替换为__bis_sr_register(GIE);  (这将使设备保持活动模式)

    此致,

    Nathan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    更一般地说,此示例依赖于ADC时钟的速度足够慢(相对于MCLK),您可以在突发中的下一个转换完成之前抢取MEM0值。 由于没有DMA/DTC/多个MEMx寄存器,您需要一些CPU余量。 为此目的,Nathans建议使用ACLK (REFOCLK或XT1,在任何情况下~32kHz)就足够了--它会将脉冲减慢30倍。

    在我的案例中,我使用FR2311上的计时器(TTB 1.1)来触发转换。 我以3倍的速度运行计时器,使用CONSEQ_3,但离开MSC=0。 因此,每个触发器都以我选择的速率逐步通过脉冲,但ADC只在短时间内处于活动状态,因为它使用了更快的时钟。