目前正在用STM32F1,用于开发一款数据记录设备。其中一个要求是,需要以超过1Mb/s的速率对14个数字I/O进行采样。打算使用定时器周期性地触发DMA传输,例如从portE的IDR寄存器传输到RAM。
由于处理器需要执行信号分析任务,使用中断服务程序(ISR)启动DMA传输是不可行的。
《应用笔记AN2548》(Using the STM32F101xx and STM32F103xx DMA controller)讲了如何通过使用两个定时器来解决这个问题:一个生成PWM信号在引脚上,另一个对同一引脚进行采样并相应地触发DMA。感觉有点傻,想寻找一个更优雅,更美妙的解决方案。总而言之:有没有一种方法可以通过使用定时器定期启动DMA传输,而不使用ISR?
|