基于stm32cubemx实现spwm调制

avatar
作者
猴君
阅读量:0

基于stm32cubemx实现spwm调制

本篇文章主要讲述了如何利用STM32CUBEMX实现发出SPWM波形

一.基础知识

1.定时器

(1)STM32H750有八个定时器

高级定时器:TIM1 TIM8

通用定时器:TIM2 TIM3 TIM4 TIM5

基本定时器:TIM6 TIM7

(2)预分频器:

分频器(Prescaler-PSC)用来将定时器时钟源进行分频输出。

当预分频器设置为1时,预分频器数0、1后才发送一个脉冲到计数器

/zb_users/upload/2024/csdn/2635f1bb2b0190c60a12b6f42e9c7e90.png

(3)自动重装载计数器

实时监控计数器的值是否和自己的值相同,当计数器记到和自己相同的值时,便将计数器的值重置为零并触发中断

二. SPWM原理

假设定时器工作模式设置为向上计数 PWM模式,且当 CNT<CCRx 时,输出 1,当 CNT>=CCRx 时输出 0,则:

当 CNT 值小于 CCRx 的时候, IO 输出高电平 (1)

当 CNT 值大于等于 CCRx 的时候,IO 输出低电平 (0)

当 CNT 达到 ARR 值的时候,重新归零,然后重新向上计数,依次循环。

因此,改变 CCRx 的值,就可以改变 PWM 输出的占空比和幅值,

改变 ARR 或者psc的值,就可以改变 PWM 输出的周期(频率),

因为我们配置的晶振是72Mhz,所以将psc设为0,arr设为7200-1,可以算出频率10000Hz(72000000/0+1/7200),

/zb_users/upload/2024/csdn/15d0056287b3be2cbb06b09010c79234.png ​​/zb_users/upload/2024/csdn/f90f06c9a8595fa65847f7bbb9774ebe.png三.实现过程

1.时钟源配置

APB1和APB2都设置为72MHz

2.定时器设置

TIM1设置为中央计数模式,开启互补通道,设置死区时间,死区时间是多少个时钟计数周期,比如TIM1计数周期是72M,设置为72就是1000ns。

需要更改的参数如下图所示,其他参数默认即可。

高级定时器TIM1参数配置

通用定时器TIM2参数设置


spwm频率设置为10k,然后TIM1每个通道的比较值达到时更新比较值。
调制度m范围为0~1,设为0.8
正弦调制波的频率是自己设置的,方法是f=载波频率/表中点数,这里设置的是载波频率10K,取200个点,得到的正弦频率就是50Hz。

正弦表可以用取点工具得到。

3. 代码实现

头文件

四.实验结果

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!