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.

[参考译文] MSP430F5438A:ADC 的多通道采样

Guru**** 2587345 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1081046/msp430f5438a-multi-channel-sampling-of-the-adc

部件号:MSP430F5438A

大家好,团队

客户提出的问题可能需要您的帮助:

请参阅 此处,重复采样序列 A0 - A3。  但是,来自传感器的电压信号是连续的,它始终会触发 ADC 采样中断,并且不允许正常过程。

他们希望每10秒采样一次,其他时间通常使用电路板执行其他操作。  还需要连接到 UART 串行端口的传感器,因此读取传感器数据也需要 UART 中断。 如何避免冲突?

我们是否可以知道是否有任何可在不中断的情况下对 ADC 进行采样? 或者,在采样完成后中断可以跳出,而中断可以在其他程序之后完成。  

您能帮您研究这种情况吗? 谢谢。

此致,

樱桃

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

    1)更改此行:

    >  ADC12CTL1 = ADC12SHP+ADC12CONSEQ_3;

    为此:

    >  ADC12CTL1 = ADC12SHP+ADC12CONSEQ_1; //每次设置 ADC12SC 时对批次进行采样

    2)当您想要采集1个批次(序列)时,请使用:

    >  ADC12CTL0 &=~ADC12SC;  //重置 ADC

    >  ADC12CTL0 |= ADC12SC;  //启动 ADC

    样本应以(4通道*(64张+12+1)=308 ADC 时钟信号或308/5 =~62微秒完成。

    3)如果您不想使用 LPM 等待,可以使用以下方法旋转完成:

    > 同时(ADC12CTL1和 ADC12BUSY)/*empty*/;  //自旋直至 ADC 完成

    [参考用户指南(SLAU208Q)表28-14和第28.2.7.2节]

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

    大家好,布鲁斯,

    感谢你的帮助!

    由于这是一个简单的采样,是否有办法不使用 ADC 中断? 只需直接读取读数并执行

    A0results = ADC12MEM0;//移动 A0结果,IFG 被清除
    A1results = ADC12MEM1;//移动 A1结果,IFG 被清除

    谢谢,此致,

    樱桃

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

    你好,Cherry,

    它需要 ADC 中断标志以确保转换完成。 您可以添加   

    While (!ADC12IFG3); 等待 ADC 转换完成

    或者,您可以简单地处理延迟10,它也可以在很长的时间内完成转换。

    谢谢,致以诚挚的问候

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

    如果您使用上面的项目(3),您可以删除此行:

    > ADC12IE = 0x08;//启用 ADC12IFG.3

    自旋转回路完成(ADC12BUSY=0)以来,样本已完成。 (删除 ADC12IE 设置后,可以删除 ISR。)