打印
[STM32F1]

能否用定时器触发多通道采样DMA传输

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


2679967c1d6f4b8735.png (4.17 KB )

2679967c1d6f4b8735.png

使用特权

评论回复
沙发
磨砂| | 2025-5-8 08:52 | 只看该作者
STM32的定时器可以产生多种触发事件,如更新事件、比较匹配事件等,这些事件可以作为ADC转换的外部触发源

使用特权

评论回复
板凳
晓伍| | 2025-5-8 11:04 | 只看该作者
在STM32F1系列中,TIM2、TIM3等定时器的TRGO信号可作为ADC的外部触发信号

使用特权

评论回复
地板
八层楼| | 2025-5-8 13:28 | 只看该作者
STM32的ADC模块支持多通道扫描模式,即可以在一次触发下依次对多个通道进行采样

使用特权

评论回复
5
观海| | 2025-5-8 15:58 | 只看该作者
ADC还具备DMA功能,能够将转换后的数据传输到指定的内存区域,无需CPU干预,提高了数据传输效率

使用特权

评论回复
6
guanjiaer| | 2025-5-8 18:36 | 只看该作者
将ADC设置为多通道扫描模式,并指定外部触发源为相应的定时器触发信号。同时,根据实际需求设置ADC的分辨率、数据对齐方式等参数

使用特权

评论回复
7
heimaojingzhang| | 2025-5-8 20:59 | 只看该作者
配置DMA的源地址为ADC的数据寄存器地址,目标地址为存储采样数据的内存缓冲区地址

使用特权

评论回复
8
keaibukelian| | 2025-5-9 08:44 | 只看该作者
设置DMA的传输方向为从外设到内存,数据宽度与ADC的输出数据宽度相匹配,如半字或字

使用特权

评论回复
9
paotangsan| | 2025-5-9 11:08 | 只看该作者
根据需要选择合适的传输模式,如循环模式可实现连续采样

使用特权

评论回复
10
renzheshengui| | 2025-5-9 13:31 | 只看该作者
在许多实际应用中,如电机控制、电源管理、数据采集等,都采用了定时器触发多通道采样DMA传输的方式

使用特权

评论回复
11
wowu| | 2025-5-9 16:06 | 只看该作者
通过定时器定期触发ADC对电机的电流、电压等参数进行采样,然后利用DMA将采样数据快速传输到内存中进行处理,从而实现对电机的精确控制

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

16

主题

18

帖子

0

粉丝