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.

[参考译文] MSP430G2553:在不延迟 MCU 运行的情况下访问多个 ADC 通道

Guru**** 2390965 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1123938/msp430g2553-access-multiple-adc-channels-without-delaying-mcu-operation

器件型号:MSP430G2553

各位专家:

你好。 向客户体验寻求您对此问题的帮助、并代表客户发布此问题。

此链接很有用、  

问题、如何使用同一方案对多个 ADC 通道进行采样? 是否有任何示例 code.guide?

谢谢你。

此致、
阿尔基·A.

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

    简而言之、答案是:使用 CONSEQ=3而不是 CONSEQ=2 (MSC=1)。 这将增加新的复杂性:

    1)当 CONSEQ=3 (或=1)时、ADC10从 INCH 开始对通道进行倒计数。 引用的线程使用 inch=10、因此每个周期可以得到11次转换(A10->A0)。 这不会损害未使用的通道(未在 AE0中得到反映)、但您必须为额外的转换留出空间/时间。

    2) 2)由于只有一个 MEM 寄存器、因此您无法在结果到达时尽快获取结果。 您需要使用 DTC (定制 DMA 引擎)将其放入您自己的阵列中。

    TI 示例中最接近的匹配可能是此处的 msp430g2x33_ADC10_14.c:

    https://dev.ti.com/tirex/explore/node?node=ACEuPdRDfguvAkgIDxhY1w__IOGqZri__LATEST

    浏览 ADC10_14代码、未经请求的建议是不要这样做:

    >ADC10SA = 0x200;//数据缓冲区启动

    它可以在 SRAM 的开头有效地分配32字的数组、而无需告知链接器。 这将在本示例中起作用(因为没有全局变量)、但不进行缩放。 相反、声明一个诚实的数组并指定:

    >无符号结果[0x20];  // DTC 接收器(上面 DTC1的0x20稳定)

    >ADC10SA =(无符号)和结果[0];//数据缓冲区启动