硬汉嵌入式论坛

 找回密码
 立即注册
查看: 3000|回复: 6
收起左侧

如何用一个定时器产生多路相位可调,占空比可调的一组PWM

[复制链接]

76

主题

237

回帖

465

积分

高级会员

积分
465
发表于 2021-4-22 16:16:31 | 显示全部楼层 |阅读模式
RT,想请教一下,如何用一个定时器,产生两路或多路相位可调、占空比可调的一组PWM波形?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117530
QQ
发表于 2021-4-23 08:41:56 | 显示全部楼层
可以,两种方法
1、使用TIM DMA,动态调整CCR寄存器。原理是DMA动态设置CCR数值来实现不同占空比,当然相位也随意。
2、使用TIM UP更新事件触发DMA做的GPIO数据输出,你可以选择任意IO,多路输出。
回复

使用道具 举报

76

主题

237

回帖

465

积分

高级会员

积分
465
 楼主| 发表于 2021-4-23 09:17:28 | 显示全部楼层
eric2013 发表于 2021-4-23 08:41
可以,两种方法
1、使用TIM DMA,动态调整CCR寄存器。原理是DMA动态设置CCR数值来实现不同占空比,当然相 ...

1、DMA的触发时机怎么确定?就是何时触发DMA传输数据到CCR?貌似占空比不是50%的话需要一直调整CCR,不想在中断里更新,太占资源...
2、GPIO端口是16位的,怎么做才能只使用其中的几位而不影响其他脚的电平?比如我只需要PA0-PA2三路输出,TIM UP触发DMA传输的时候,如何把数据送到端口A的低三位,而不影响高13位,PA3-PA15还有其他用处,不想被干扰。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117530
QQ
发表于 2021-4-23 17:23:40 | 显示全部楼层
kokoromi 发表于 2021-4-23 09:17
1、DMA的触发时机怎么确定?就是何时触发DMA传输数据到CCR?貌似占空比不是50%的话需要一直调整CCR,不想 ...

1、由你配置的定时器基准频率决定的,
2、BSRR寄存器。
回复

使用道具 举报

76

主题

237

回帖

465

积分

高级会员

积分
465
 楼主| 发表于 2021-4-23 19:40:41 | 显示全部楼层
eric2013 发表于 2021-4-23 17:23
1、由你配置的定时器基准频率决定的,
2、BSRR寄存器。

多谢大佬。
论坛里有相关的例程吗?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117530
QQ
发表于 2021-4-24 10:06:18 | 显示全部楼层
kokoromi 发表于 2021-4-23 19:40
多谢大佬。
论坛里有相关的例程吗?

第41或者43章

https://forum.anfulai.cn/forum.php?m ... &extra=page%3D1
回复

使用道具 举报

76

主题

237

回帖

465

积分

高级会员

积分
465
 楼主| 发表于 2021-4-24 13:18:53 | 显示全部楼层
eric2013 发表于 2021-4-24 10:06
第41或者43章

https://forum.anfulai.cn/forum.php?m ... &extra=page%3D1

3Q~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-12 21:19 , Processed in 0.040711 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表