⼿把⼿教你写S12XS128程序--PWM模块介绍
该教程以MC9S12XS128单⽚机为核⼼进⾏讲解,全⾯阐释该16位单⽚机资源。本⽂为第⼀讲,开始介绍该MCU的PWM模块。
PWM 调制波有8个输出通道,每⼀个输出通道都可以独⽴的进⾏输出。每⼀个输出通道都有⼀个精确的计数器(计算脉冲的个数),⼀个周期控制寄存器和两个可供选择的时钟源。每⼀个P WM 输出通道都能调制出占空⽐从0—100% 变化的波形。PWM 的主要特点有:
1、它有8个独⽴的输出通道,并且通过编程可控制其输出波形的周期。2、每⼀个输出通道都有⼀个精确的计数器。
3、每⼀个通道的P WM 输出使能都可以由编程来控制。4、PWM 输出波形的翻转控制可以通过编程来实现。
5、周期和脉宽可以被双缓冲。当通道关闭或PWM 计数器为0时,改变周期和脉宽才起作⽤。6、8 字节或16 字节的通道协议。
7、有4个时钟源可供选择(A、SA、B、SB),他们提供了⼀个宽范围的时钟频率。8、通过编程可以实现希望的时钟周期。9、具有遇到紧急情况关闭程序的功能。
10、每⼀个通道都可以通过编程实现左对齐输出还是居中对齐输出。1、PWM启动寄存器PWMEPWME 寄存器每⼀位如图1所⽰:复位默认值:0000 0000B
图1 PWME 寄存器
每⼀个PWM 的输出通道都有⼀个使能位P WMEx 。它相当于⼀个开关,⽤来启动和关闭相应通道的PWM 波形输出。当任意的P WMEx 位
置1,则相关的P WM 输出通道就⽴刻可⽤。⽤法:PWME7=1 --- 通道7 可对外输出波形PWME7=0 --- 通道7 不能对外输出波形
注意:在通道使能后所输出的第⼀个波形可能是不规则的。当输出通道⼯作在串联模式时(PWMCTL 寄存器中的CONxx置1),那么)使能相应
的16位PWM 输出通道是由PWMEx 的⾼位控制的,例如:设置PWMCTL_CON01 = 1,通道0、1级联,形成⼀个16位PWM 通道,由通道 1 的使能位控制PWM 的输出。
2、PWM时钟选择寄存器PWMCLKPWMCLK 寄存器每⼀位如图3所⽰:复位默认值:0000 0000B
图2 PWMCLK 寄存器
S12的PWM 共有四个时钟源,每⼀个P WM 输出通道都有两个时钟可供选。其中0、1、4、5 通道可选⽤择(Clock A、Clock SA 或Clock B、Clock SB))
Clock A和ClockSA,2、3、6、7 通道可选⽤ClockB、ClockSB 通道。该寄存器⽤来实现⼏个通道时钟源的选择。⽤法:PCLK0 =1 --- 通道0(PTP0)的时钟源设为ClockSAPCLK2 =0 --- 通道2(PTP2)的时钟源设为ClockB1、PWM预分频寄存器PWMPRCLKPWMPRCLK 寄存器每⼀位如图3所⽰:复位默认值:0000 0000B
图3PWMPRCLK 寄存器
PWMPRCLK 寄存器包括ClockA预分频和ClockB预分频的控制位。ClockA、ClockB的值为总线时钟的1/2n (0≤n≤7),具体设置参照图4和图5
图4Clock A 预分频设置
图5Clock B预分频设置PCKB0~PCKB2是对ClockB进⾏预分频。PCKA0~PCKA2是对ClockA进⾏预分频。2、PWM分频寄存器PWMSCLA、PWMSCLBPWMSCLA 寄存器每⼀位如图6所⽰:
图6 PWMSCLA寄存器
Clock SA 是通过对P WMSCLA 寄存器的设置来对ClockA 进⾏分频⽽产⽣的。其计算公式为:Clock SA=Clock A /(2*PWMSCLA)
PWMSCLB 寄存器与PWMSCLA 寄存器相似,Clock S B 就是通过对PWMSCLB 寄存器的设置来对C lockB 进⾏分频⽽产⽣的。其计算公式为:Clock SB=Clock B /(2*PWMSCLB)1、PWM极性选择寄存器PWMPOLPWMPOL 寄存器每⼀位如图7所⽰:
该寄存器是0~7通道PWM输出起始极性控制位,⽤来设置PWM输出的起始电平。
⽤法:PWMPOL_PPOL0=1--- 通道0 在周期开始时输出为⾼电平,当计数器等于占空⽐寄存器的值时,输出为低电平。对外输出波形先是⾼电平然后再变为低电平。
2、PWM波形对齐寄存器PWMCAEPWMCAE 寄存器每⼀位如图8所⽰:
图8PWMCAE 寄存器
PWMCAE 寄存器包含8个控制位来对每个P WM 通道设置左对齐输出或中⼼对齐输出。⽤法: PWMCAE_CAE0 = 1 --- 通道0 中⼼对齐输出PWMCAE_CAE7 = 0 --- 通道7 左对齐输出
注意:只有输出通道被关闭后才能对其进⾏设置,即通道被激活后不能对其进⾏设置。1、PWM控制寄存器PWMCTLPWMCTL 寄存器每⼀位如图9所⽰:图9PWMCTL 寄存器
该控制寄存器设定通道的级联和两种⼯作模式:等待模式和冻结模式。这两种模式如图10和图11所⽰。
图10 等待模式图11 冻结模式
只有当相应的通道关闭后,才能改变这些控制字。⽤法:
PWMCTL_CON67=1 --- 通道6、7 级联成⼀个16位的PWM通道。此时只有7通道的控制字起作⽤,原通道7的使能位、PWM输出极性选择位、时钟选择控制位以及对齐⽅式选择位⽤来设置级联后的PWM输出特性PWMCTL_CON67=0 --- 通道6,7通道不级联
CON45、CON23、CON01 的⽤法同CON67 相似。设置此控制字的意义在于扩⼤了P WM 对外输出脉冲的频率范围。
PSW AI=1--- M CU ⼀旦处于等待状态,就会停⽌时钟的输⼊。这样就不会因时钟在空操作⽽费电;当它置为0,则M CU 就是处于等待状态,也允许时钟的输⼊。
P FRZ=1 --- M CU ⼀旦处于冻结状态,就会停⽌计数器⼯作。
S12微控制器PWM模块是由独⽴运⾏的8位脉冲计数器PWMCNT、两个⽐较寄存器PWMPER和PWMDTY组成。1、左对齐⽅式
在该⽅式下,脉冲计数器为循环递增计数,计数初值为0 。
当PWM使能后,计数器PWMCNT从0开始对时钟信号递增计数,开始⼀个输出周期。当计数值与占空⽐常数寄存器
PWMDTY相等时,⽐较器1输出有效,将触发器置位,⽽PWMCNT继续计数;当计数值与周期常数寄存器PWMPER相等时,⽐较器2输出有效,将触发器复位,同时PWMCNT也复位,结束⼀个输出周期。原理参照图14:
图14 PWM左对齐⽅式2、中⼼对齐⽅式
在该⽅式下,脉冲计数器为双向计数,计数初值为0 。
当PWM使能后,计数器PWMCNT从0开始对时钟信号递增计数,开始输出⼀个周期。当计数器与占空⽐常数寄存器
PWMDTY相等时,⽐较器1输出有效,触发器翻转,⽽PWMCNT继续计数,当计数值与周期常数PWMPER相等时,⽐较器2输出有效,此时改变PWMCNT的计数⽅向,使其递解计数;当PWMCNT再次与PWMDTY
相等时,⽐较器1再⼀次输出有效,使触发器再次翻转,⽽PWMCNT继续递减计数,等待PWMCNT减回⾄0,完成⼀个输出
周期。原理参照图15:
图15 中⼼对齐⽅式3、周期计算⽅法左对齐⽅式:
输出周期 = 通道周期× PWMPERx中⼼对齐⽅式:
输出周期 = 通道周期× PWMPERx × 24、脉宽计算⽅法左对齐⽅式:
占空⽐ = [ (PWMPERx - PWMDTYx) / PWMPERx ] × 100%中⼼对齐⽅式:占空⽐ = [ PWMDTYx / PWMPERx ] × 100%1、PWM通道计数寄存器PWMCNTx
PWMCNTx 寄存器共有8个,每⼀个通道都有⼀个8位PWM加/减双向计数器,通道级联后可变成16位PWM加/减双向计数器。下⾯以PWMCNT0为例对P WMCNTx 寄存器进⾏介绍。PWMCNT0寄存器如图12所⽰:
图12 PWMCNT0 寄存器
计数器以所选时钟源的频率运⾏。计数器在任何时候都可以被读,⽽不影响计数,也不影响对P WM 通道的操作。
任何值写⼊PWMCNT0 寄存器都会导致计数器复位置0,且其计数⽅向会被设置为向上计数,并且会⽴刻从缓冲器载⼊任务和周期值,并会根据翻转极性的设置来改变输出。当计数器达到计数值后,会⾃动清零。只有当通道使能后,计数器才开始计数。
2、PWM通道周期寄存器PWMPERx
PWMPERx 寄存器共有8个,每⼀个通道都有⼀个这样的周期寄存器。这个寄存器的值就决定了相关P WM 通道的周期。每⼀个通道的周期寄存器都
是双缓冲的,因此如果当通道使能后,改变他们的值,将不会发⽣任何作⽤,除⾮当下列情况之⼀发⽣:*有效的周期结束。
*对计数器进⾏写操作(计数器复位)*通道不可⽤(PWME x = 0)
这样就会使P WM 输出波形要么是新波形要么是旧波形,并不会在两者之
间进⾏交替变换。如果通道不可⽤,那么对周期寄存器进⾏写操作,将会直接图表1导致周期寄存器同缓冲器⼀起闭锁。图13所⽰的是P WMPER0 寄存器:
图13 PWMPER0 寄存器
3、PWM通道占空⽐寄存器PWMDTYx
PWMDTYx 寄存器也有8 个,每⼀个通道都有⼀个这样的占空⽐常数寄存器。这个寄存器的值就决定了相关P WM 通道输出波形的占空⽐。每⼀个
通道的占空⽐寄存器都是双缓冲的,因此如果当通道被激活后,改变他们的值将不会发⽣任何作⽤,除⾮当下列情况之⼀发⽣:*有效的周期结束。
*对计数器进⾏写操作(计数器复位)*通道不可⽤(PWME x = 0)
这样就会使P WM 输出波形要么是新波形要么是旧波形,并不会在两者之
间进⾏交替变换。如果通道没有被激活,那么对占空⽐常数寄存器进⾏写操作,将会直接导致周期寄存器同缓冲器⼀起闭锁。当计数值与占空⽐常数PWMDTY 相等时,则⽐较输出器有效,这时就会将触发器置位,然后P WMCNT 继续计数,当计数值与周期常数P WMPER 相等时,⽐较器输出有效,将触发器复位,同时也使P WMCNT 复位,结束⼀个输出周期。S12微控制器PWM模块是由独⽴运⾏的8位脉冲计数器PWMCNT、两个⽐较寄存器PWMPER和PWMDTY组成。1、左对齐⽅式
在该⽅式下,脉冲计数器为循环递增计数,计数初值为0 。
当PWM使能后,计数器PWMCNT从0开始对时钟信号递增计数,开始⼀个输出周期。当计数值与占空⽐常数寄存器
PWMDTY相等时,⽐较器1输出有效,将触发器置位,⽽PWMCNT继续计数;当计数值与周期常数寄存器PWMPER相等时,⽐较器2输出有效,将触发器复位,同时PWMCNT也复位,结束⼀个输出周期。原理参照图14:
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- jqkq.cn 版权所有 赣ICP备2024042794号-4
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务