首页 文章

STM32F302 Adc,带有不同大小和通道的DMA

提问于
浏览
0

我正在使用STM32F302 QFN32,不幸的是,它只有一个ADC模块 . 一个通道必须在一个周期内获得大约500个采样,并且必须与PWM同步(使用定时器进行思考,这个i / o将在回调中切换,因为在读取其ADC通道时,我必须知道i / o是否高或低,以便根据此值,将决定值) . 此外,还有4个通道必须读取 . (之前不需要更多样本,8或16个样本就足够了 . )但是,它只有一个ADC模块 . 因此,我可以这样做吗?如果有,怎么样?谢谢 .

1 回答

  • 2

    ST ADC有两种转换模式 . 常规和注入 .

    常规模式就像所有ADC一样 . 你可以通过软件或触发器(timer / gpio)启动它,它可以执行一次或一系列转换 . 结果写入共同的寄存器,DMA负责处理 .
    注入模式是高优先级抢占转换 . 通过软件或触发器启动注入转换序列后 . ADC在常规转换之间注入转换 . 作为更优先的一个 . 结果存储在中断的一个注入结果通道中 .
    只有常规模式支持DMA . 有关详细信息,请参阅AN4195 .

    我建议您使用计时器来触发快速通道的常规序列,并使用循环DMA设置来移动数据 . 并使用另一个计时器来触发注入的序列 . 最多有4个注入通道,所以你很幸运!

    显然,你可以反过来做到这一点 . 快速注射和慢速定期 . 但是你需要另一个与注入的启动触发器同步的定时器来让DMA移动数据 .
    也就是说,如果您的采样率不允许立即处理 . 否则你可以使用ISR .

相关问题