如果我禁用DMAContinuousRequests,ADC是否会在每次完成转换时自动触发DMA请求


  1. 如果禁用DMAContinuousRequests,ADC是否会自动触发DMA每次完成转换时请求
  2. 如果我启用DMAContinousRequest,DMA会如果没有新的adc,则多次传输adc的样本中间的转换

这是手册中所说的:

"[…]此参数指定DMA请求是在单触发模式下执行(当达到转换次数时,DMA传输停止(还是在连续模式中执行(DMA传输不受限制,无论转换次数如何(">

我想做什么

我想观察输入是否有超过阈值的边。如果我检测到一个样本,我想通过DMA以Y样本/s的采样率将接下来的X个样本保存到内存中。

(例如:X=64和Y=10k(

我的想法

  1. 设置模拟看门狗
  2. 当超过阈值时,使用回调将ADC设置为DMA模式,并使用计时器触发它(禁用连续转换模式和禁用DMAContinousRequests(
  3. X个采样后切换回看门狗模式(DMA缓冲区已满(

回到问题

我的连续转换模式和DMA连续请求设置是否正确?

连续模式意味着它在转换了每个启用的通道后,再次从第一个通道开始,而不是停止。

无论哪种方式,DMA都只在准备就绪时被请求传输数据。

[编辑新问题]

当我阅读手册时,ADC只有两种DMA模式:在连续模式下,它将永远存在。在非连续模式下,它将只转换每个启用的通道一次。

如果你想多次读取同一个通道,但不是永远读取,那么你需要从一开始就启用连续DMA模式,然后在未来的某个时候将其关闭。DMA完全中断可能适用于此。

最新更新