- 如果禁用DMAContinuousRequests,ADC是否会自动触发DMA每次完成转换时请求
- 如果我启用DMAContinousRequest,DMA会如果没有新的adc,则多次传输adc的样本中间的转换
这是手册中所说的:
"[…]此参数指定DMA请求是在单触发模式下执行(当达到转换次数时,DMA传输停止(还是在连续模式中执行(DMA传输不受限制,无论转换次数如何(">
我想做什么
我想观察输入是否有超过阈值的边。如果我检测到一个样本,我想通过DMA以Y样本/s的采样率将接下来的X个样本保存到内存中。
(例如:X=64和Y=10k(
我的想法
- 设置模拟看门狗
- 当超过阈值时,使用回调将ADC设置为DMA模式,并使用计时器触发它(禁用连续转换模式和禁用DMAContinousRequests(
- X个采样后切换回看门狗模式(DMA缓冲区已满(
回到问题
我的连续转换模式和DMA连续请求设置是否正确?
连续模式意味着它在转换了每个启用的通道后,再次从第一个通道开始,而不是停止。
无论哪种方式,DMA都只在准备就绪时被请求传输数据。
[编辑新问题]
当我阅读手册时,ADC只有两种DMA模式:在连续模式下,它将永远存在。在非连续模式下,它将只转换每个启用的通道一次。
如果你想多次读取同一个通道,但不是永远读取,那么你需要从一开始就启用连续DMA模式,然后在未来的某个时候将其关闭。DMA完全中断可能适用于此。