0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

应用笔记 | STM32使用DMA产生PWM时波形异常分析

STM32单片机 来源:未知 2023-09-22 17:05 次阅读

29761040-5926-11ee-939d-92fbcf53809c.gif

关键字:回调函数,HAL库

目录预览

1.前言

2.实验

3.使用实例

4.小结

01 前言

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

02

实验

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

硬件:STM32F401RE-NUCLEO

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

2981025c-5926-11ee-939d-92fbcf53809c.png

29a89e48-5926-11ee-939d-92fbcf53809c.png

生成代码,并定义两个数组如下图所示:

29c57252-5926-11ee-939d-92fbcf53809c.png

在主函数中开启Timer。

29e214a2-5926-11ee-939d-92fbcf53809c.png

我们可以发现,实验结果如客户反馈的,TIM2输出的PWM是不正确的,TIM3输出的PWM是正确的。

2a022026-5926-11ee-939d-92fbcf53809c.png

03 分析

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

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

2a1fdee0-5926-11ee-939d-92fbcf53809c.png

根本原因在于,对于大部分STM32系列,主设备基于AHB外设进行寻址是不支持byte/half-word传输的,总线会强制将数据转化为32bit传送到总线上,这就是为什么我们看到CCR1的高半字和低半字的值是相同的原因。

当我们将TIM2的DMA外设端修改为word长度,并将内存数组定义为32bit,再次实验,可以发现PWM的波形就是正常的了:

2a36b39a-5926-11ee-939d-92fbcf53809c.png

2a666b44-5926-11ee-939d-92fbcf53809c.png

2a79522c-5926-11ee-939d-92fbcf53809c.png

04 小结

因为F103上没有32bit计数器的Timer,所以客户在F103上并没有出现类似的问题。在使用DMA访问经过AHB转APB的桥接外设时,我们要注意DMA对外设的访问宽度配置问题。

完整内容请点击“阅读原文”下载原文档。


原文标题:应用笔记 | STM32使用DMA产生PWM时波形异常分析

文章出处:【微信公众号:STM32单片机】欢迎添加关注!文章转载请注明出处。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6001

    文章

    43978

    浏览量

    620862
  • PWM
    PWM
    +关注

    关注

    114

    文章

    4901

    浏览量

    209916
  • STM32
    +关注

    关注

    2240

    文章

    10674

    浏览量

    348788

原文标题:应用笔记 | STM32使用DMA产生PWM时波形异常分析

文章出处:【微信号:STM32_STM8_MCU,微信公众号:STM32单片机】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    如何通过DMA方式在任意GPIO引脚产生PWM波?

    用定时器2的通道1的PWM功能,但不产生CH1的实际输出。而是在定时器2的更新回调函数和比较回调函数里分别置高/置低指定的GPIO引脚。 后来发现,有can接收中断时,输出的pwm波形
    发表于 04-19 06:09

    f446rct6在使用dma控制pwm占空比时,pwm波形异常的原因?

    需要更新数据时,启动一次dma传输 现象:pwm波的频率,占空比没有问题,但是在启动dma传输的第一个或第二个波形,经常会 出现一个三角形的奇怪
    发表于 04-09 07:45

    STM32G070CB TIM1使用DMA 方式来产生PWM不同duty的波形,无法进入中断的原因?

    TIM1使用DMA 方式来产生PWM不同duty 的波形,想监控一下DMA 是否完成,但是无法进入中断。以下初始化的配置:(
    发表于 03-20 08:28

    STM32U575 pwmDMA输出的波形少一段怎么处理?

    这是我的 DMA 的配置 这是我的PWM配置 上面的波形是F103输出的波形。 下面的波形是U575输出的
    发表于 03-13 06:10

    LTC1624 TG、SW波形异常产生的原因?

    项目中使用LTC1624这个IC,用于24V to 5V@1A,原理图如下 现在测试发现 TG 以及 SW引脚的波形异常,黄色为TG、紫色为SW。但是输出5V是正常的。 请帮忙分析一下为何会
    发表于 01-08 07:49

    STM32 DMA传输的问题分析

    用户使用STM32G473RET6芯片,开发环境STM32CubeMX+Keil(LL库)。使用DMA1通道1,在半传输中断和完全传输中断里,拷贝ADC采集的数据。在应用过程中发现DMA
    的头像 发表于 12-01 09:19 1091次阅读
    <b class='flag-5'>STM32</b> <b class='flag-5'>DMA</b>传输的问题<b class='flag-5'>分析</b>

    STM32PWM波形输出配置的大神总结

    STM32PWM波形输出配置的大神总结
    的头像 发表于 10-24 16:00 2281次阅读
    <b class='flag-5'>STM32</b>的<b class='flag-5'>PWM</b><b class='flag-5'>波形</b>输出配置的大神总结

    AN2784应用笔记

    这个应用笔记说明了如何使用大容量的STM32F10xxx的FSMC(灵活的静态存储器控制器)驱动一组外部的存储器。文中首先简要地介绍了STM32F10xxx的FSMC控制器,然后给出了包含典型
    发表于 10-10 07:45

    用笔记 | STM32U575/585 MCU 硬件开发入门

    用笔记 | STM32U575/585 MCU 硬件开发入门
    的头像 发表于 09-28 18:13 2693次阅读
    应<b class='flag-5'>用笔记</b> | <b class='flag-5'>STM32</b>U575/585 MCU 硬件开发入门

    STM32 TIMER+DMA输出PWM异常案例的问题解析

    有人使用STM32U575的TIMER加上DMAPWM输出。具体就是利用某TIMER的一个通道的比较事件触发DMA,通过DMA修改CCR值
    的头像 发表于 09-28 09:04 4254次阅读
    <b class='flag-5'>STM32</b> TIMER+<b class='flag-5'>DMA</b>输出<b class='flag-5'>PWM</b><b class='flag-5'>异常</b>案例的问题解析

    STM32F1移植到STM32F0的应用笔记分享

    需要将应用程序移植到其它微控制器。另一方面,为了降低成本,用户可能被迫转换为更小的元件并缩减 PCB 面积。本应用笔记旨在帮助您分析从现有的 STM32F1 器件移植到 STM32F0
    发表于 09-22 07:23

    TIM DMA burst输出变频PWM波形

    电子发烧友网站提供《TIM DMA burst输出变频PWM波形.pdf》资料免费下载
    发表于 09-19 17:06 2次下载
    TIM <b class='flag-5'>DMA</b> burst输出变频<b class='flag-5'>PWM</b><b class='flag-5'>波形</b>

    使用STM32缓存来优化性能与功率效率应用笔记

    电子发烧友网站提供《使用STM32缓存来优化性能与功率效率应用笔记.pdf》资料免费下载
    发表于 08-01 10:02 0次下载
    使用<b class='flag-5'>STM32</b>缓存来优化性能与功率效率应<b class='flag-5'>用笔记</b>

    STM32单片机学习笔记(6):PWM波形产生

    利用CubMX生成基于32单片机的HAl库工程,然后编写程序在proteus上仿真验证。本项目最适合没有开发板的同学学习,零成本利用仿真软件率先入门STM32单片机。这是第六部分针对STM32单片机内置TIM模块的PWM
    发表于 07-19 15:34 1377次阅读
    <b class='flag-5'>STM32</b>单片机学习<b class='flag-5'>笔记</b>(6):<b class='flag-5'>PWM</b><b class='flag-5'>波形</b><b class='flag-5'>产生</b>

    STM32单片机的应用笔记 奇怪的NRST 管脚异常复位问题

    做EMS 浪涌测试的时候发生的, 平台上使用了一个 STM32G474 RCT6 MCU 。 在某个等级的EMS 测试中, 客户发现MCU有时候会异常复 位而影响平台的稳定 工作。 2.1. MCU
    的头像 发表于 07-13 18:55 7572次阅读
    <b class='flag-5'>STM32</b>单片机的应<b class='flag-5'>用笔记</b> 奇怪的NRST 管脚<b class='flag-5'>异常</b>复位问题