• 资料介绍
    • 前言
    • 实验
    • 分析
    • 小结
  • 资料预览
  • 相关推荐
申请入驻 产业图谱

LAT1259 STM32使用DMA产生PWM时波形异常分析

03/25 14:52
307
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

LAT1259 STM32使用DMA产生PWM时波形异常分析

350.17 KB

前言

有客户反馈,使用 STM32F4 的 TIM2 结合 DMA,产生的 PWM 波形不符合预期,但是相同的配置使用在 TIM3 上,得到的 PWM 波形就是符合预期的。其代码和配置都是从 F1 移植过来的,在 F1 上使用 TIM2 是没有问题的,对于 F4 的 TIM2 发生的问题,客户一直没有找到根本原因。

实验

根据客户的反馈,我们进行了实验。

硬件:STM32F401RE-NUCLEO

在 STM32CubeMX 中,将 TIM2 和 TIM3 所有参数均做相同的配置,其中配置 DMA 两端均为 halfword 长度。

分析

我们的实验中,TIM2 和 TIM3 的配置是完全一样的,即使传输相同的数据,得到的 PWM 波形也是不同的。为此我们比较了 TIM2 和 TIM3 的硬件属性,可以很容易查看出,TIM2 的计数器是 32bit 的,而 TIM3 的计数器是 16bit 的。

我想我们已经知道答案了,TIM2 的计数器是 32bit 的,但是我们配置的 DMA 是 halfword 长度,这在 AHB 总线上解析数据时产生了非预期的结果。在调试界面我们也能看到,当问题发生时,TIM2 的 CCR1 竟然比 ARR 的值要大,或者出现异常值,所以出现异常波形。

小结

对于 32 位计数器的 Timer,我们在使用 DMA 时,需要将 DMA 的长度配置为 32bit。因为 F103 上没有 32bit 计数器的 Timer,所以客户在 F103 上并没有出现类似的问题,归根结底,我们要学会类似查找问题的方法。

资料预览

点赞
收藏
评论
分享
加入交流群
举报

相关推荐

方案定制

去合作
方案开发定制化,2000+方案商即时响应!