你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

Timer结合DMA 2D通道实现不同波形输出

[复制链接]
STMCU小助手 发布时间:2023-2-14 18:37
1. 问题背景客户需要使用 MCU 输出正弦波,但受限于 MCU DAC 数量不足,建议尝试使用 PWM加滤波方式产生正弦波。同时要求正弦波与固定电平交替输出。因此可用一个 TIM 输出PWM,同时用另一个 TIM 来定时切换输出正弦波或固定电平。
使用 TIM 输出 PWM 产生正弦波形时,需要结合 GPDMA 来实现。在 STM32U5 系列中,GPDMA 共有 16 个独立通道,其中 12-15 通道还具有 2D addressing/ repeat 功能。因此也可以使用一个 TIM 加 GPDMA 的一个 2D 通道实现 PWM 波形切换功能。


2. 产生 PWM
本文按以下配置产生 PWM,在 U575 NUCLEO 板测试:
(1)MCU 主频:100MHz
(2)PWM 频率 2MHz(周期 500ns),脉宽可调范围 0~50 个计数时钟,
(3)每个正弦波周期(10us)对应 20 个 PWM 脉冲,各 PWM 脉宽用计数时钟表示分别为:25, 33, 40, 45, 49, 50, 49, 45, 40, 33, 25, 17, 10, 5 , 1 , 0 , 1 , 5 , 10, 17
(4)将步骤 3 中的正弦波重复 1000 次,对应 10ms 的连续正弦波形


2.1. STM32CubeMX 生成测试工程
2.1.1. TIM1 CH1 PWM 配置
图1. TIM1 CH1 PWM


B7AC]_YHPR{2F8(D)GXZ)3Q.png


2.1.2. GPDMA CH12 配置
选用 GPDMA 通道 12,并配置为循环模式:
图2. GPDMA CH12


ME}{4PBTTYAM~DLGDV(4T[E.png


2.1.3. GPDMA Linked List 配置
创建 Linked List Queue,并配置为搭配 GPDMA 2D 功能通道使用。创建两个节点,TN1, TN2,并使用循环模式,指定首个循环节点为 TN1。


Y~KDNT)M]O%{05A6NT{W`A6.png


TN1 节点配置,由此节点结合 TIM 来产生 PWM,并滤波成正弦信号:
(1)TIM1 更新事件作为 DMA 请求
(2)使能 2D 功能,一个 block 传输完成后,回退到数组起点,重新传输
(3)使能 Repeat 功能,重复 block 传输 1000 次


JSVWPZ7{V~Y2G{$XZ_GYY{E.png


TN2 节点配置,与 TN1 节点类似,用于切换到第二组数据产生第二种波形


完整版请查看:附件 Timer结合DMA 2D通道实现不同波形输出_v1.0.pdf (1.08 MB, 下载次数: 0)
收藏 评论0 发布时间:2023-2-14 18:37

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版