网站建设要什么软件,网站建设企业网站制作平台,网站开发好做还是平面好做,管理咨询公司排名 国内PWM 输出比较通道
在这里以通用定时器的通道1作为介绍。 如图#xff0c;左边就是CNT计数器和CCR1第一路的捕获/比较寄存器#xff0c;它俩进行比较#xff0c;当CNTCCR1, 或者CNTCCR1时#xff0c;就会给输出模式控制器传送一个信号#xff0c;然后输出模式控制器就…PWM 输出比较通道
在这里以通用定时器的通道1作为介绍。 如图左边就是CNT计数器和CCR1第一路的捕获/比较寄存器它俩进行比较当CNTCCR1, 或者CNTCCR1时就会给输出模式控制器传送一个信号然后输出模式控制器就会改变它的 输出OC1ref的高低电平这里ref是referencel的缩写意思是参考信号。 上面还有个ETRF输入这个是定时器的一个小功能一般不用。 接着这个ref信号有两条路可以走一路可以前往主模式控制器把这个ref信号映射到主模式的 TRGO输出上去。而另一路先到达极性选择模块由寄存器TIMx_CCER控制给TIMx_CCER的 CC1P写0信号往上走输入信号不反相写1信号就会往下走信号会通过一个非门取反 那输出的信号就是输入信号高低电平反转的信号。 接着就是输出使能电路选择要不要输出由寄存器TIMx_CCER的CC1E控制。 最后就是0C1引脚这个引脚就是CH1通道的引脚。
输出比较模式
输出比较模式的选择是通过改变输出模式控制器的执行逻辑实现的由寄存器TIMx_CCMR1的OC1M控制。 输出比较模式总共有8种我们这里只介绍最常用的PWM模式。PWM输出就是对外输出脉宽(即占空比)可调的方波信号信号频率由自动重装寄存器ARR的值决定占空比由比较寄存器CCR的值决定。PWM模式分为两种PWM1和PWM2,总得来说是差不多的。 配置好了时基单元CNT就开始不断地自增运行了。然后就是输出比较单元总共有四路。输出比较单元的最开始是CCR,它的值由我们自己设定CNT不断自增运行同时与CCR进行比较。后面就是输出模式控制器以PWM模式1向上计数为例CNT小于CCR时REF置有效电平CNT大于等于CCR时REF置无效电平。再经过极性选择使能输出最终通向GPIO口输出波形。
PWM波的实现
如上图右上角所示CNT从O开始自增一直增到ARR(这里值为99)之后清零继续自增。设定下面绿色线为输出状态在这个过程中CNT小于CCR(这里值为30)输出置高电平反之置低电平。这样一直持续下去REF的电平就会不断变化
PWM参数计算
1.PWM频率FreqCK_PSC/(PSC1)/(ARR1) 2.PWM占空比DutyCCR/(ARR1) 3.PWM分辨率Reso1/(ARR1) PWM的周期对应着计数器的溢出更新周期所以PWM的频率就等于计数器的更新频率。 分辨率就是占空比变化的步距。CCR的值应该设置在O到ARR1这个范围里当CCRARR1 时占空比刚好为100%。如果CCR再大一些占空比依然为100%没有意义。所以CCR的变化范围取决于ARR的值ARR越大CCR的范围就越大对应的分辨率就越大。对于同一个定时器的不同通道输出的PWM,因为不同通道是共用一个计数器的所以它们的频率是一样的。而它们的占空比是由各自的CC决定的所以占空比可以各自设定它们的相位由于计数器更新所有PWM同时跳变所以它们的相位是同步的.
区别
PWM1中空控制的是高电平的占空比外接LED的时候灯光是随着TIMx_SetComparex函数中占空比的增大由最亮逐渐变最暗当达到100%的占空比的时候最暗。
PWM2中空控制的是低电平的占空比外接LED的时候灯光是随着TIMx_SetComparex函数中占空比的增大由最暗逐渐变最亮当达到100%的占空比的时候最亮
输出极性
PWM模式1-*在向上计数时*一旦TIMx_CNTTIMx_CCR1时通道1为有效电平否则为无效电平在向下计数时一旦TIMx_CNTTIMx_CCR1时通道Q1为无效电平(OC1REF0),否则为有效电平(OC1REF1)。 PWM模式2-*在向上计数时一旦TIMx_CNTTIMx_CCR1时通道1为无效电平*否则为有效电平在向下计数时一旦TIMx CNTTIMx CCR1时通道1为有效电平否则为无效电平 输出比较极性指的是你在比较匹配之后输出口比如LED灯输出的极性。 就是让你设置LED灯有效极性你可以设置为高电平有效或者低电平有效 理解后正题开始 首先只看向上计数别的都不看。 再看下面的图 根据上面的图举例正点原子板子上的LED灯一股都是低电平有效而我们想达到的效果是随着占空比的增加向上计数模式灯的亮 度增加低电平。 根据上面的图能实现的方式有两种 1.低极性PWM1 2.高极性PWM2 如果我们自己画的板子硬件LED设计是高电平有效那么就是随着占空比的增加向上计数模式灯的亮度增加高电平。 根据上面的图能实现的方式有两种 1.高极性PM12.低极性PWM2
输出极性
http://www.openedv.com/forum.php?modviewthreadtid285008highlight%CA%E4%B3%F6%BC%AB%D0%D4
定义TIM_OCNPolarity_High为高极性 TIM_OCNPolarity_Low为低极性 110PWM模式1 在向上计数时一旦TIMx_CNTTIMx_CCR1时通道1为有效电平否则为 无效电平在向下计数时一旦TIMx_CNTTIMx_CCR1时通道1为无效电平(OC1REF0)否 则为有效电平(OC1REF1)。 111PWM模式2 在向上计数时一旦TIMx_CNTTIMx_CCR1时通道1为无效电平否则为 有效电平在向下计数时一旦TIMx_CNTTIMx_CCR1时通道1为有效电平否则为无效电 平 首先要先理解好这一句话 当PWM模式2 在向上计数时一旦TIMx_CNTTIMx_CCR1时 通道1为无效电平否则为有效电平 TIM_SetCompare2(TIM3,0); 1为什么在高极性时灯会灭呢 因为TIMx_CNTTIMx_CCR1通道1为无效电平 战舰板的LED是低电平亮而TIM_SetCompare2(TIM3,0);即TIMx_CCR1的值为0也就是TIMx_CCR1 TIM3_CNT时通道2输出是高电平 不符合LED灯低电平亮LED灯是不亮的。 2那么把高极性改为低极性为什么灯会亮 如TIM_OCInitStructure.TIM_OCPolarity TIM_OCPolarity_High; //输出极性:TIM输出比较极性高 因为CC1P0时OC1高电平有效 TIM_OCNPolarity_High CC1P1时OC1低电平有效 TIM_OCNPolarity_Low 由于低极性输出的是低电平有效所以灯可以点亮 3为什么把PWM2改成了PWM1别的什么都没动灯就亮了 “PWM模式1 在向上计数时一旦TIMx_CNTTIMx_CCR1时通道1为有效电平” 4考虑到设置CCR的值设置为300到500效果不是很明显 所以CCR取0和899可以直接看出效果现象