打印
[应用相关]

SC0069—AT32F4xx_使用DMA动态更新PWM占空比

[复制链接]
3569|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 ArterySW 于 2022-5-16 19:01 编辑

AT32F4xx_使用DMA动态更新PWM占空比
示例目的
本示例代码基于AT32F403A,展示了如何使用AT32 的TMR 和DMA 动态更新PWM 占空比。
该示例使用TMR4 的更新事件触发DMA1 搬运数据至TMR4 的通道2 数据寄存器(TMRx_C2DT),达到在TMR4 的通道2(PB7)动态输出占空比不同的PWM 波的效果。

支持型号列表:
AT32F403xx
AT32F403Axx
AT32F407xx
AT32F413xx
AT32F415xx
AT32F421xx

主要使用外设列表:
TMR4
DMA

1. 硬件资源
1) AT-START-F403A V1.0开发板
图 1. AT-START-F403A V1.0 开发板

2. 软件资源
1) 该Demo 以AT32F403A 为例,BSP 版本AT32F403A_407_Firmware_Library_V2.0.6。
2) TMR 配置:
  • 配置TMR4 的通道2(PB7)产生PWM 波。
  • 配置DMA1 并将其请求映射选择为通道7(TMR4 的更新事件),搬运内存中的不同占空比数据至TMR4 的通道2 数据寄存器(TMRx_C2DT),动态更新占空比。
3) 对main.c 的“src_buffer[]”数组直接做相应修改可配置想要的占空比,数组长度软件会自动计算。
注: 所有project 都是基于keil 5 而建立, 若用户需要在其他编译环境上使用, 请参考
AT32xxx_Firmware_Library_V2.x.x\project\at_start_xxx\templates中各种编译环境(例如IAR6/7,keil 4/5)进行简单修
改即可。

3. 示例使用
1) 硬件连接:将PB7(TMR4_CH2)接入逻辑分析仪或示波器。
2) 打开\SourceCode\SC0069_SourceCode_V2.0.0\utilities\SC0069_Demo\mdk_v5\Duty.uvprojx 源程序,编译后下载到实验板。
3) 抓取PB7 波形,验证程序效果。当正常运行时,TMR4_CH2(PB7)将按照uint16_t src_buffer[]= {10,20,30,40,50,60,70,80,90,10,20,30,40,50,60,70,80,90};中的变量输出对应占空比的PWM波形,Demo 中的PWM 波形如下图
图 2. Demo 中 DMA 动态更新 PWM 占空比波形

附件:
SC0069_AT32_TMR_DMA_Update_PWM_Duty_Cycle_Dynamically_V2.0.0.zip (778.29 KB)
SC0069_AT32_TMR_DMA_Update_PWM_Duty_Cycle_Dynamically_ZH_V2.0.0.pdf (468.47 KB)

使用特权

评论回复
沙发
数据采集存储| | 2021-9-8 08:38 | 只看该作者
这个不错呀,很棒的资料。很好。很好。很好。

使用特权

评论回复
板凳
6552918| | 2021-9-25 17:34 | 只看该作者
本帖最后由 6552918 于 2021-9-29 13:59 编辑

这个代码里有坑,最后一个脉冲结束后,管脚会一直维持高电平到下一次的开始。

使用特权

评论回复
地板
duo点| | 2021-9-29 09:46 | 只看该作者
很棒的资料

使用特权

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

本版积分规则

179

主题

276

帖子

11

粉丝