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

基于 STM32 定时器实现定制波形的示例

[复制链接]
STMCU小助手 发布时间:2022-8-2 18:06
有人想实现如下 PWM 输出波形,周期 T=12us,两路输出波形特征一样,只是第 2 路【下图中的 CHn】波形的输出比第 1 路【下图中的 CHm】滞后 T/2。另外,还要保证二者占空比0~50%范围内可以同步调节。

(~QA$`32PCDP]3QEAHBOMVR.png

对于这种输出波形,如果使用 2 个定时器来做会相对方便点,通过定时器的主从模式来实现。现在客户希望使用 1 个定时器来完成,那如何实现呢?
当然,用 1 个带多比较通道的定时器也是可以实现的。我们可以使用 PWM 输出模式来实现第 1 路,使用 OC toggle 模式来实现第 2 路。下面以 STM32F334 Nucleo 开发板来着手配置、编程、验证。
这里不妨选用 TIM3 来实现该输出波形。TIM3 的时钟源目前配置为 64Mhz,不做预分频,使用向上计数模式。一个计数周期对应的 ARR 是 (12*64)-1,即 767。TIM3 的通道 1 输出对应于下图中第 1 路,TIM3 的通道 3 输出对应于第 2 路.【图中的黄色斜箭头表示计数器计数变化趋势,从 0 到 ARR,并周期性循环计数。】


YK142~J%YX`J[N~O_AYA{Y1.png

因为 TIM3 通道 1 采用 PWM 模式来输出,设置好 CCR1、ARR 的值即可。通道 3 采用 OC 切换输出模式来实现。对于通道 3,在一个周期内有两个翻转点,即上图中第 2 路上升沿的 R点和下降沿的 F 点。结合本实例需求,不难得知,R 点所对应的比较值【CCR3】为768/2,即 384 并保持不变。F 点的比较值的大小决定其占空比。由于这里实际需求的占空比不超过 50%,正常来讲,则 F 点可以设置的比较值最大不会超过 ARR 的值。
我们可以借助 TIM3 CH3 的比较事件触发 DMA,通过 DMA 来传输存储在内存中 R 点/F 点所对应的比较值以更新 CCR3 寄存器内容。在 R 点发生比较事件时,更新 F 点的比较值,在 F点发生比较事件时更新 R 点的比较值。刚才前面说过了,这里上升沿 R 点的比较值始终保持不变,即 384,我们是通过改变 F 点的比较值来改变 TIM3 通道 3 的占空比。
另外,我们在 TIM3 通道 1 的比较中断里修改 CCR1 的值和通道 3 在 F 点所对应的 CCR3 比较值,最终实现 2 路占空比 0~50%灵活可调的输出。
大致原理就介绍到这里。下面描述从基于 STM32CubeMx 进行初始配置开始到实现输出的全过程。下面有关 RCC/SYS 等的初始配置从略,不附加截图了。
1、关于定时器 TIM3 的基本时基参数配置如下:


O{9}A$GSK6ZTQ_Z2[3Q(4~L.png

完整版请查看:附件


Form_waveform_based_on_stm32timer.pdf

下载

371.78 KB, 下载次数: 0

收藏 评论0 发布时间:2022-8-2 18:06

举报

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