第09章PWM脉宽调制

上传人:桔**** 文档编号:576663680 上传时间:2024-08-20 格式:PPT 页数:19 大小:508KB
返回 下载 相关 举报
第09章PWM脉宽调制_第1页
第1页 / 共19页
第09章PWM脉宽调制_第2页
第2页 / 共19页
第09章PWM脉宽调制_第3页
第3页 / 共19页
第09章PWM脉宽调制_第4页
第4页 / 共19页
第09章PWM脉宽调制_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《第09章PWM脉宽调制》由会员分享,可在线阅读,更多相关《第09章PWM脉宽调制(19页珍藏版)》请在金锄头文库上搜索。

1、第第09章章 PWM脉宽调制脉宽调制lPULSE WIDTH MODULATION-数字脉冲输出数字脉冲输出l脉冲宽度调制(脉冲宽度调制(PWM)是工业控制和机电产品中最常用的技)是工业控制和机电产品中最常用的技术。例如控制电动机的速度和伺服电机的旋转角度等。术。例如控制电动机的速度和伺服电机的旋转角度等。TonToffTperiodAverage占空比占空比=高电平时间高电平时间/周期周期=Ton/Tperiod0 %10 %50 %90 %99 %应用:D/A转换 马达控制音调生成正弦波生成9.1 PWM概述概述S12X MCU可以不通过定时器,而使用专门的可以不通过定时器,而使用专门的P

2、WM模块以产模块以产生生PWM波形,极少占用波形,极少占用CPU资源资源S12X MCU可提供优异的频率高、分辨率高、占空比可调、范可提供优异的频率高、分辨率高、占空比可调、范围宽的围宽的PWM信号。主要特性:信号。主要特性: 8个带周期占空比可程控的PWM独立通道(与PTP复用) 4个可程控选择的时钟源 脉冲输出极性可选 每个PWM通道有专用的计数器 每个PWM通道可使能/禁止 占空比可调范围0100 分辨率: 8位 (8通道), 16位 (4通道) 周期和占空比双缓冲 每个通道有中心对齐和左对齐方式 带中断功能的紧急切断 9.2 PWM结构原理和功能描述结构原理和功能描述 PWM_8B8C

3、时钟选择时钟选择控制控制使能使能(Enable)极性极性(Polarity)PWM7 PWM通道通道 通道通道7PWM6 通道通道6PWM5 通道通道5 通道通道4PWM4 通道通道3PWM3 通道通道2PWM2 通道通道1PWM1 通道通道0PWM0周期和占空比周期和占空比计数器计数器周期和占空比周期和占空比计数器计数器周期和占空比周期和占空比计数器计数器周期和占空比周期和占空比计数器计数器周期和占空比周期和占空比计数器计数器周期和占空比周期和占空比计数器计数器周期和占空比周期和占空比计数器计数器周期和占空比周期和占空比计数器计数器总线时钟总线时钟PWM时钟时钟对齐对齐(Alignment)

4、lPWM波形输出原理波形输出原理开始开始周期周期Tperoid占空比占空比 TDutyPWMDTYxPWMPERxPWMPERxfClock, TClock8-bit CounterPWMCNTx时钟源时钟源8-bit Compare =PWMDTYx8-bit Compare =PWMPERx0x000x00ResetPin当当8位计数器的值等于位计数器的值等于PWMDTY(占空比常数寄存器占空比常数寄存器)时,电平从有效跳到无效时,电平从有效跳到无效;当当8位计数器的值等于位计数器的值等于PWMPER(周期常数寄存器)时,电平从无效跳到有效,(周期常数寄存器)时,电平从无效跳到有效,然后计

5、数器清然后计数器清0,重新开始计数开始下一个周期,重新开始计数开始下一个周期l lPWM PWM 时钟源时钟源时钟源时钟源 1.Clock A (Ch 0, Ch 1, Ch 4, Ch 5)2.Clock SA (Scaled A; Ch 0, Ch 1, Ch 4, Ch 5)3.Clock B (Ch 2, Ch 3, Ch 6, Ch 7)4.Clock SB (Scaled B; Ch 2, Ch 3, Ch 6, Ch 7)4个时钟源:Bus ClockPWMPRCLKClock SAClock SBClock AClock BPWMSCLAPWMSCLB 预分频:预分频:1、2、

6、4、8、16、32、64、128 比例分频:比例分频:2、4、8、16、32、64、512 比例分频:比例分频:2、4、8、16、32、64、512l l对齐方式选择对齐方式选择对齐方式选择对齐方式选择- -左对齐左对齐左对齐左对齐时钟源 选择= 10 MHz (100 ns period)PPOLx = 1PWMPERx = 4PWMDTYx = 1PWMx 频率 = 10 MHz/4 = 2.5 MHz 即:PWMx 周期 = 1/2.5MHz=400 nsPWMx 占空比 = 1/4*100% = 25%Clock=100ns占空比=25%周期=400nsl l对齐方式选择对齐方式选择对

7、齐方式选择对齐方式选择- -中心对齐中心对齐中心对齐中心对齐 时钟源 Clock = 10 MHz (100 ns period)PPOLx = 0PWMPERx = 4PWMDTYx = 1PWMx 频率 = 10 MHz/8 = 1.25 MHzPWMx 周期 = 1/1.25MHz=800 nsPWMx 占空比 = (4-1)/4*100% = 75%Clock=100ns占空比=75%周期=800nsClock=100nsl l通道级联通道级联通道级联通道级联-16-16位分辨率位分辨率位分辨率位分辨率两个两个8位位PWM通道可以组合成一个通道可以组合成一个16位位PWM通道,例如:通

8、道,例如:周期/占空比 比较PWMCNT6PWMCNT7PWM7输出PWM7时钟源CONxxPWMExPPOLxPCLKxCAExPWMx OUTPUTCON67PWME7PPOL7PCLK7CAE7PWM7CON45PWME5PPOL5PCLK5CAE5PWM5CON23PWME3PPOL3PCLK3CAE3PWM3CON01PWME1PPOL1PCLK1CAE1PWM1 软件可选择通道组合软件可选择通道组合 在级联模式下,可以左对齐或中心对齐输出在级联模式下,可以左对齐或中心对齐输出 常数寄存器、计数器都合成为常数寄存器、计数器都合成为16位位-增加了分辨率,周期可以更长增加了分辨率,周期

9、可以更长PWM 时钟预分频寄存器时钟预分频寄存器-PWMPRCLK0PCKB2 PCKB1 PCKB00PCKA2 PCKA1 PCKA0RWReset: 00000000= Unimplemented or ReservedPCKx2PCKx1PCKx0Value of Clock x000Bus Clock001Bus Clock / 2010Bus Clock / 4011Bus Clock / 8100Bus Clock / 16101Bus Clock / 32110Bus Clock / 64111Bus Clock / 128可在任意时刻读写!x = A or B例:设置 PRE

10、SCALE 寄存器-PWMPRCLK = 0x22;/ B= Bus/4, A = Bus/4PWMPRCLK = 0x07;/ B = Bus, A = Bus/128Bit 0Bit 1Bit 2Bit 3Bit 4Bit 5Bit 6Bit 09.3 PWM模块的使用与设置模块的使用与设置PWM 时钟比例分频寄存器时钟比例分频寄存器-PWMSCLA、PWMSCLBPWMSCLx = $00 PWMSCLx value is 256可在任意时刻读写!x = A or B例如:要求: Clock Sx = 1 kHz总线时钟 = 16 MHzPrescaler = 128 Prescaler

11、 = 64 Clock x = 125 kHz Clock x = 250 kHzPWMSCLx = 63 PWMSCLx = 125 Clock Sx = 992 Hz Clock Sx = 1000 Hz准一些准一些PCLK6 PCLK5 PCLK4 PCLK3 PCLK2 PCLK1RWReset: 00000000PCLK7Bit 0Bit 1Bit 2Bit 3Bit 4Bit 5Bit 6Bit 0PCLK5 通道 5时钟选择 1 =时钟源为SA 0 =时钟源为APCLK4 通道 4时钟选择 1 =时钟源为SA 0 =时钟源为APCLK3 通道 3时钟选择 1 =时钟源为SB. 0

12、 =时钟源为BPCLK2 通道 2时钟选择 1 =时钟源为SB 0 =时钟源为BPCLK1 通道 1时钟选择1 =时钟源为SA0 =时钟源为APCLK0 通道 0时钟选择1 =时钟源为SA0 =时钟源为APCLK7 通道 7时钟选择 1 = 通道7的时钟源为SB 0 =通道7的时钟源为B.PCLK6 通道 6时钟选择 1 =时钟源为SB. 0 =时钟源为BPWM 时钟选择寄存器时钟选择寄存器- PWMCLKPWM 极性选择寄存器极性选择寄存器-PWMPOLPPOLx=0-输出周期以低电平开始 =1-输出周期以高电平开始PCLK0PWM 中心对齐使能寄存器中心对齐使能寄存器-PWMCAE CAE

13、6CAE5CAE4CAE3CAE2CAE1CAE0RWReset:00000000 $_04CAE7CAEx 中心对齐模式选择,通道 x 0 = 通道 x 左对齐输出 1 = 通道 x 中心对齐输出Bit 0Bit 1Bit 2Bit 3Bit 4Bit 5Bit 6Bit 0.PWM 关断寄存器关断寄存器-PWMSDN 主要用于处理通道主要用于处理通道7的紧急关闭中断的紧急关闭中断PWMIEPWMLVL0PWM7INL PWM7ENARWReset: 00000000 $_24PWMIFPWM7IN= Unimplemented or ReservedBit 0Bit 1Bit 2Bit 3

14、Bit 4Bit 5Bit 6Bit 0PWMRSTRT紧急关断通道 7输入紧急关断触发Channel 6Period and DutyCounterChannel 5Period and DutyCounter.Channel 0Period and DutyCounter外部故障输入信号PWMLVL=1PWMLVL=0PWM7INL=1PWM7INL=0InterruptPWMIEPWMIFPWM7ENA=1PWM控制寄存器控制寄存器-PWMCTL等待模式在WAIT模式下,允许输入时钟到预分频器PSWAI=10在WAIT模式下,停止输入时钟到预分频器冻结模式在FREEZE模式下,PWM计数

15、器继续 PFRZ=10在FREEZE模式下,PWM计数器停止CON45CON010PSWAIRW $_05CON67CON23PFRZ0Bit 0Bit 1Bit 2Bit 3Bit 4Bit 5Bit 6Bit 0使能使能/禁止时钟禁止时钟在在WAIT模式时模式时PWM计数器停止计数器停止在在Freeze模式时模式时通道级联控制:通道级联控制:0-不级联不级联1-级联成级联成16位位PWM 通道周期寄存器通道周期寄存器-PWMPERxBit 6Bit 5Bit 4Bit 3Bit 2Bit 1Bit 0RWReset: 11111111 $_14-_1BBit 7Bit 0Bit 1Bit

16、2Bit 3Bit 4Bit 5Bit 6Bit 0PWM 通道占空比寄存器通道占空比寄存器-PWMDTYxBit 6Bit 5Bit 4Bit 3Bit 2Bit 1Bit 0RWReset: 11111111 $_1C-_23Bit 7Bit 0Bit 1Bit 2Bit 3Bit 4Bit 5Bit 6Bit 0注:周期与占空比计算按书上公式注:周期与占空比计算按书上公式PWM使能使能/禁止寄存器禁止寄存器-PWMEPWME6 PWME5 PWME4 PWME3 PWME2 PWME1 PWME0RWReset:00000000 $_00PWME70 = 通道x禁止1 = 通道x使能,下

17、一个时钟开始输出PWM 通道7通道6通道 0.使能/禁止 PWM 通道:PWME5 = 1;/ Enable PWM channel 5PWME3 = 0;/ Disable PWM channel 3PWME = 0xFF/ Enable all 8 PWM channelsPWME = 0;/ Disable all 8 PWM channels软件示例软件示例Bit 0Bit 1Bit 2Bit 3Bit 4Bit 5Bit 6Bit 09.4 PWM的应用实例的应用实例S12X MCU中的PWM模块一旦设置完成,不需软件干预即可生成PWM信号,除非要改变周期或占空比。初始化步骤:关闭P

18、WM通道 PWME选择极性 PWMPOL选择时钟 PWMCLK、PWMPRCLK、PWMSCLA、PWMSCLB选择对齐方式 PWMCAE设置占空比和周期 PWMDTY、PWMPER使能PWM通道 PWME【例9-1】PWM输出脉冲序列 【例9-2】PWM用作D/A转换 【例9-1】使用S12X的PWM模块输出一定周期和占空比的脉冲序列。PWM波形从PP0口(PWM0)输出,频率为125Hz,占空比为50的方波信号,时钟源采用ClockSA。假设总线时钟频率fBus=2 MHz。C语言程序代码如下:/函数:PWM初始化/void PWM_Init() PWME=0x00; /禁止PWM输出 P

19、WMCTL=0x00; /通道独立不级联,Wait、Freeze模式下继续 PWMPOL=0xFF; /脉冲极性,先高后低 PWMCAE=0x00; /左对齐输出方式 PWMCLK=0xFF; /使用ClockSA时钟 PWMPRCLK=0x33; /ClockA时钟为总线时钟8分频,=2MHz/8=250KHz PWMSCLA=50; /ClockSA= ClockA / (2*PWMSCLA) = 250KHz/ (2*50) = 2.5KHz PWMPER0=20; /设定通道0周期 = (1/2.5KHz) * 20 = 8ms (125Hz) PWMDTY0=10; /设定通道0占空

20、比 = 10/20 =50%/主函数/void main() DisableInterrupts; /关总中断, = asm SEI PWM_Init(); /调用PWM初始化函数 PWME=0x01; /使能通道0的PWM输出 while(1) 【例9-2】#include /* common defines and macros */#include derivative.h /* derivative-specific definitions */#define PWM_BEEP /条件编译,选择为PWM输出控制蜂鸣器或是LED亮暗控制/ 程序说明:PWM脉宽调制的D/A输出控制范例:控

21、制蜂鸣器或是LED亮暗 / 硬件平台:CQU-S12X-CORE&EXP / 参考书籍:单片机原理及应用-使用Freescale S12X构建嵌入式系统 by RY / 主函数void main() unsigned char i=0; unsigned long j=50000; DisableInterrupts; /关总中断 ,= asm(SEI) PWM_Init(); /调用PWM初始化函数 EnableInterrupts; /开总中断 ,= asm(SEI) ,可能用于其它 for(;) #ifdef PWM_BEEP PWMDTY0 = i; PWME = 0x01; /使能通道0的PWM输出 #else PWMDTY1 = i; PWME = 0x02; /使能通道1的PWM输出 #endif while(j-); /延时 j=50000; if(i+=20) i=0;/改变占空比,使其在0%100%变化

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 幼儿/小学教育 > 幼儿教育

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号