STM32PWM
考前拾遗,后面将没有多少时间学习STM32,直到我考完期末
电路部分
STM32有四个定时器,每个定时器都有不同的输出通道(TIMy_Channelx),在STM32F103C8T6的四个定时器中,每个定时器都有四个输出通道,其中高级定时器的前三个输出通道拥有死区生成和互补输出的功能。
设置每个定时器的CCR
,在CNT
寄存器取到不同的值时,channel
将产生不同的电平。
每个通道有各自的CCR
寄存器,但是同一个定时器里的不同(4个)通道共用同一个CNT
计数器。
PWM
在具有惯性的系统中,可以通过对一系列脉冲的宽度进行调制,来等效地获得所需要的模拟参量,常用于电机速控等领域。
按笔者的理解,这个系统不仅仅需要惯性,还需要阻尼。当我们失去对这个系统的控制时,这个系统会自发地向某种能量水平运动。例如小车会慢慢停下,灯泡会逐渐熄灭,电容充电到满为止(然后发热发光:()。
PWM参数$T_{ON}$是高电平持续时间,与之对应的是$T_{OFF}$,当然还有$T_S=T_{ON}+T_{OFF}$:
如果带入下面讲OC时的各寄存器,那么公式就会变成:
输出比较模式(OC)
电路的图片在江科大自化协PPT的第66页。简单来说,是配置了输出的设置之后,寄存器通过途中OC1(对于其它通道,会是OC2,OC3……)连接到GPIO输出上去。因此我们要使能TIM_TimeBase(让它开始计数),使能TIM_OC(让它开始比较),初始化GPIO(让它能正确地作用,从内部的信号到外界的输出)
图中的输出模式控制器的作用是,在不同的设置下,根据CNT和CCR不同的取值,给REF以不同的电平。REF是什么?REF会被送到输出使能电路,它决定了OCx的输出电平,在此过程中途径TIMx_CCER,功能是“极性选择”,当它被激活时,REF信号的意义就变成了时OC的输出电平翻转。
我不画表格了,md的表格太呆
冻结:CNT=CCR时,REF为原状态
匹配时置有效电平:CNT=CCR时,REF置有效电平
匹配时置无效电平:CNT=CCR时,REF置无效电平
匹配时电平翻转:CNT=CCR时,REF电平翻转
强制为无效电平:CNT与CCR无效,REF强制为无效电平
强制为有效电平:CNT与CCR无效,REF强制为有效电平PWM模式1:
向上计数:CNT < CCR时,REF置有效电平;CNT >= CCR时,REF置无效电平
向下计数:CNT > CCR时,REF置无效电平;CNT <= CCR时,REF置有效电平
PWM模式2(反过来):
向上计数:CNT < CCR时,REF置无效电平;CNT >= CCR时,REF置有效电平
向下计数:CNT > CCR时,REF置有效电平;CNT <= CCR时,REF置无效电平
名词解释
有效电平
:(高电平)是高级定时器里的,无效电平
:(低电平)是高级定时器里的,冻结
:不用管,是高级定时器里的。
数学
对于匹配使电平翻转
的模式:
如果带入各种各样的寄存器,有:
寄存器再解释一遍:CK_PSC
:预分频系数,对于你需要的频率可以用上面的PWM频率
这条公式来计算CK_PSC
的值。你手边就是计算器,以后别见到CK_PSC
就发愁了。ARR
:自动重装器,决定了计数的范围。江科大将它解释作步距。CCR
:输出比较寄存器。
更具体的流程
晶振->PSC预分频器->CNT计数器(ARR自动重装器)->CCR捕获/比较器->输出模式控制器->极性选择->GPIO
对于高级输出比较通道,这个电源赛道应该用不上,跳过。配置方式可以百度。
期待…
七月和八月,会有美妙的事情发生,无论是对我,还是对我的队友……