打印
[应用相关]

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

[复制链接]
1315|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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开发板

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 占空比波形
进版到V2.0.1


SC0069_AT32_TMR_DMA_Update_PWM_Duty_Cycle_Dynamically_V2.0.1.zip

778.28 KB

使用特权

评论回复
沙发
amceylg| | 2023-3-10 13:36 | 只看该作者
这个是不是直接可以控制WS2812了?

使用特权

评论回复
板凳
jimmhu| | 2023-4-4 22:01 | 只看该作者
以把原始的数据转换成PWM占空比的值,存在DAM缓存中

使用特权

评论回复
地板
vivilyly| | 2023-4-7 18:30 | 只看该作者
这个的控制很简答的。              

使用特权

评论回复
5
jtracy3| | 2023-4-7 22:34 | 只看该作者
有相关的代码可以参考的吗              

使用特权

评论回复
6
1988020566| | 2023-4-8 13:34 | 只看该作者
使用 DMA+PWM 方式               

使用特权

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

本版积分规则

25

主题

75

帖子

1

粉丝