使用STM32 DMA测量计算脉宽(占空比)是否可行?实现方案咨询
STM32 高频多组占空比测量可行解决方案
- 方案1:采用定时器PWM输入模式,单DMA通道实现双参数采集
STM32 通用/高级定时器自带专属 PWM 输入功能,仅需将待测信号接入定时器通道1,配置为上升沿捕获触发,同时开启定时器从复位模式,触发源绑定通道1捕获事件。此时通道1捕获寄存器CCR1会自动存储信号完整周期值,通道2捕获寄存器CCR2自动存储高电平持续时长。仅需配置1个DMA通道,触发源选择通道1捕获事件,开启DMA突发传输,每次触发时连续读取CCR1、CCR2两个寄存器值存入内存即可,无需为两个捕获通道单独分配DMA,完全规避CubeMX的配置限制。 - 方案2:手动配置双DMA通道,绕过CubeMX图形化限制
CubeMX 图形化界面的配置限制不代表硬件不支持同一定时器双捕获通道的DMA映射。你可以先在CubeMX中完成定时器基础参数、两个捕获通道的触发沿配置,之后手动编写DMA初始化代码,只要DMA请求源配置符合对应芯片手册中定时器捕获通道的DMA请求编号,即可正常实现双通道DMA数据传输,不受图形化配置限制。 - 方案3:ADC+DMA过采样方案(适配超高频率信号)
如果待测信号频率超出定时器捕获的最高工作上限,可将信号接入ADC引脚,配置ADC为最高采样率+DMA循环传输模式,批量缓存采样数据后通过电平阈值判断计算高低电平持续时长,可支持10MHz以上的超高频率信号占空比测量。
内容的提问来源于stack exchange,提问作者Amin Khorsandi
相关产品推荐
相关产品推荐

