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的多通道采样

Part Number: MSP430F5438A

参考

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

重复序列采样A0 - A3

但是传感器的电压信号是持续不断的,这样就会一直触发ADC的采样中断,无法进行正常程序。

我想每个10s进行一次采样,其他时间正常使用板卡进行其他操作。

请问有什么方法不进行中断就可以adc采样或者可以采样完成后跳出中断,进行完其他程序再进行中断

  • 同时还需要连接UART串口的传感器,因此也需要UART中断读取传感器的数据,如何避免冲突

  • 您好我们已收到您的问题并升级到英文论坛,如有答复将尽快回复您。谢谢!

  • 您好,

    1. 请将

    >   ADC12CTL1 = ADC12SHP+ADC12CONSEQ_3;

    改为

    >   ADC12CTL1 = ADC12SHP+ADC12CONSEQ_1;  // Sample a batch each time ADC12SC is set

    2. 当您要捕获 1 个批次 (序列) 时,请使用:

    >   ADC12CTL0 &= ~ADC12SC;   // Reset  ADC

    >   ADC12CTL0 |= ADC12SC;   // Start ADC

    样本应在  (4 channels * (64 SHT + 12 + 1) ) = 308 ADC时钟周期 或者308/5 = ~62 微秒内完成。

    3. 如果您不想使用 LPM 等待,您可以使用以下命令旋转:

    >  while (ADC12CTL1 & ADC12BUSY) /*EMPTY*/;   // Spin until ADC finishes

    [参考User Guide (SLAU208Q) Table 28-14 and Sec 28.2.7.2 ]

  • 由于只是简单的采样,有没有不使用ADC中断的方法。可不可以直接进行读数,执行

    A0results = ADC12MEM0; // Move A0 results, IFG is cleared
    A1results = ADC12MEM1; // Move A1 results, IFG is cleared

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

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

    或者就简单的延迟 10s,长时间后也可以完成转换。

    如果您使用以上提供的方法3的话,您也可以删除以下这一行:

    >  ADC12IE = 0x08; // Enable ADC12IFG.3

    因为当旋转环路完成 (ADC12BUSY=0) 时,采样完成。 (删除 ADC12IE 设置后,您可以删除 ISR)

x 出现错误。请重试或与管理员联系。