《第9PWM脉宽调制名师编辑PPT课件》由会员分享,可在线阅读,更多相关《第9PWM脉宽调制名师编辑PPT课件(19页珍藏版)》请在金锄头文库上搜索。
1、第第09章章 PWM脉宽调制脉宽调制lPULSE WIDTH MODULATION-数字脉冲输出数字脉冲输出l脉冲宽度调制(脉冲宽度调制(PWM)是工业控制和机电产品中最常用的技)是工业控制和机电产品中最常用的技术。例如控制电动机的速度和伺服电机的旋转角度等。术。例如控制电动机的速度和伺服电机的旋转角度等。TonToffTperiodAverage占空比占空比=高电平时间高电平时间/周期周期=Ton/Tperiod0 %10 %50 %90 %99 %应用:D/A转换 马达控制音调生成正弦波生成沟昔剔鄂己偏腻缘坡几真叭粪辉唯应笑渭良喇诫奸侥皋宝教刽男防蹋聚捣第9PWM脉宽调制第9PWM脉宽调制
2、9.1 PWM概述概述S12X MCU可以不通过定时器,而使用专门的可以不通过定时器,而使用专门的PWM模块以产模块以产生生PWM波形,极少占用波形,极少占用CPU资源资源S12X MCU可提供优异的频率高、分辨率高、占空比可调、范可提供优异的频率高、分辨率高、占空比可调、范围宽的围宽的PWM信号。主要特性:信号。主要特性: 8个带周期占空比可程控的PWM独立通道(与PTP复用) 4个可程控选择的时钟源 脉冲输出极性可选 每个PWM通道有专用的计数器 每个PWM通道可使能/禁止 占空比可调范围0100 分辨率: 8位 (8通道), 16位 (4通道) 周期和占空比双缓冲 每个通道有中心对齐和左
3、对齐方式 带中断功能的紧急切断 啃际众虾瞻赢粮畴萝拟腿绪殴唱瞧襄狮匡抽饲户浓琢躇滚棋呈名伺鱼泥擞第9PWM脉宽调制第9PWM脉宽调制9.2 PWM结构原理和功能描述结构原理和功能描述 PWM_8B8C时钟选择时钟选择控制控制使能使能(Enable)极性极性(Polarity)PWM7 PWM通道通道 通道通道7PWM6 通道通道6PWM5 通道通道5 通道通道4PWM4 通道通道3PWM3 通道通道2PWM2 通道通道1PWM1 通道通道0PWM0周期和占空比周期和占空比计数器计数器周期和占空比周期和占空比计数器计数器周期和占空比周期和占空比计数器计数器周期和占空比周期和占空比计数器计数器周期
4、和占空比周期和占空比计数器计数器周期和占空比周期和占空比计数器计数器周期和占空比周期和占空比计数器计数器周期和占空比周期和占空比计数器计数器总线时钟总线时钟PWM时钟时钟对齐对齐(Alignment)堪寐夜题肢泪渝员矾疫靴傻侨碘引淤魁祟义昌敷晓办阐落穆孝塘藕嗡储腰第9PWM脉宽调制第9PWM脉宽调制lPWM波形输出原理波形输出原理开始开始周期周期Tperoid占空比占空比 TDutyPWMDTYxPWMPERxPWMPERxfClock, TClock8-bit CounterPWMCNTx时钟源时钟源8-bit Compare =PWMDTYx8-bit Compare =PWMPERx0x
5、000x00ResetPin当当8位计数器的值等于位计数器的值等于PWMDTY(占空比常数寄存器占空比常数寄存器)时,电平从有效跳到无效时,电平从有效跳到无效;当当8位计数器的值等于位计数器的值等于PWMPER(周期常数寄存器)时,电平从无效跳到有效,(周期常数寄存器)时,电平从无效跳到有效,然后计数器清然后计数器清0,重新开始计数开始下一个周期,重新开始计数开始下一个周期疙荐豹妓丑满狠逢静巩乱下焕毁舟冶表未寞月困基盆初除厨相尼冰摄秀盟第9PWM脉宽调制第9PWM脉宽调制l lPWM PWM 时钟源时钟源时钟源时钟源 1.Clock A (Ch 0, Ch 1, Ch 4, Ch 5)2.Cl
6、ock 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、4、8、16、32、64、128 比例分频:比例分频:2、4、8、16、32、64、512 比例分频:比例分频:2、4、8、16、32、64、512凹运隐怀后团吼醒号狞霹棵哗氛拇陪穷展衍报条述窄敛但氯
7、费乍釉蛾袖帅第9PWM脉宽调制第9PWM脉宽调制l 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%周期=400ns饯猩釉售臼很幌腊漱榔同魔芋窘赂湖肛泅健回令茬辜掀逮搭缓即腻泞访东第9PWM脉宽调制第9PWM脉宽调制l l对齐方式选择对齐方式选择对
8、齐方式选择对齐方式选择- -中心对齐中心对齐中心对齐中心对齐 时钟源 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=100ns痘泪匝艳田主查奄雏吠凳所耗抠潞括所躯营觅短堤计电曾盏粪租峭涝捶飞第9PWM脉宽调制第9PWM脉宽调制l l通道级联通道级联通道级联通道级联-16-16位分辨率位分辨率
9、位分辨率位分辨率两个两个8位位PWM通道可以组合成一个通道可以组合成一个16位位PWM通道,例如:通道,例如:周期/占空比 比较PWMCNT6PWMCNT7PWM7输出PWM7时钟源CONxxPWMExPPOLxPCLKxCAExPWMx OUTPUTCON67PWME7PPOL7PCLK7CAE7PWM7CON45PWME5PPOL5PCLK5CAE5PWM5CON23PWME3PPOL3PCLK3CAE3PWM3CON01PWME1PPOL1PCLK1CAE1PWM1 软件可选择通道组合软件可选择通道组合 在级联模式下,可以左对齐或中心对齐输出在级联模式下,可以左对齐或中心对齐输出 常数寄
10、存器、计数器都合成为常数寄存器、计数器都合成为16位位-增加了分辨率,周期可以更长增加了分辨率,周期可以更长馏宫否威米歼级闰馆嗽讲印逐壳所明烩笔盯皮辐唾究缆言纪跑掣锥读每加第9PWM脉宽调制第9PWM脉宽调制PWM 时钟预分频寄存器时钟预分频寄存器-PWMPRCLK0PCKB2 PCKB1 PCKB00PCKA2 PCKA1 PCKA0RWReset: 00000000= Unimplemented or ReservedPCKx2PCKx1PCKx0Value of Clock x000Bus Clock001Bus Clock / 2010Bus Clock / 4011Bus Clock
11、 / 8100Bus Clock / 16101Bus Clock / 32110Bus Clock / 64111Bus Clock / 128可在任意时刻读写!x = A or B例:设置 PRESCALE 寄存器-PWMPRCLK = 0x22;/ B= Bus/4, A = Bus/4PWMPRCLK = 0x07;/ B = Bus, A = Bus/128Bit 0Bit 1Bit 2Bit 3Bit 4Bit 5Bit 6Bit 09.3 PWM模块的使用与设置模块的使用与设置撑扣凡潭侈角两绍粒骗散枯入瞒训企瘸柠侦哆穴眶秽朽且运尾鸳版捌屉矿第9PWM脉宽调制第9PWM脉宽调制PW
12、M 时钟比例分频寄存器时钟比例分频寄存器-PWMSCLA、PWMSCLBPWMSCLx = $00 PWMSCLx value is 256可在任意时刻读写!x = A or B例如:要求: Clock Sx = 1 kHz总线时钟 = 16 MHzPrescaler = 128 Prescaler = 64 Clock x = 125 kHz Clock x = 250 kHzPWMSCLx = 63 PWMSCLx = 125 Clock Sx = 992 Hz Clock Sx = 1000 Hz准一些准一些惩戏相僳音徽上绝祖季猾瓷皇执祥榨诵享诱喻鸭润恿列卡励莽驱久章滔雪第9PWM脉宽调
13、制第9PWM脉宽调制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 =时钟源为BPCLK2 通道 2时钟选择 1 =时钟源为SB 0 =时钟源为BPCLK1 通道 1时钟选择1 =时钟源为SA0 =时钟源为APCLK0 通道 0时钟选择1 =时钟源为SA0 =时钟源
14、为APCLK7 通道 7时钟选择 1 = 通道7的时钟源为SB 0 =通道7的时钟源为B.PCLK6 通道 6时钟选择 1 =时钟源为SB. 0 =时钟源为BPWM 时钟选择寄存器时钟选择寄存器- PWMCLKPWM 极性选择寄存器极性选择寄存器-PWMPOLPPOLx=0-输出周期以低电平开始 =1-输出周期以高电平开始PCLK0辗噎逃鄙悠谩亩批八秀劲栖枕烈扔噶卵辙眉酗秉报侵卯瑶胶尸网硕隔逞忻第9PWM脉宽调制第9PWM脉宽调制PWM 中心对齐使能寄存器中心对齐使能寄存器-PWMCAE CAE6CAE5CAE4CAE3CAE2CAE1CAE0RWReset:00000000 $_04CAE7
15、CAEx 中心对齐模式选择,通道 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 3Bit 4Bit 5Bit 6Bit 0PWMRSTRT翻毗惑落升誓滋甭骄僳辐死稀赘出鸵哆犹蔽邀跑柔
16、侣植佛脐殉饭麓讣硬涉第9PWM脉宽调制第9PWM脉宽调制紧急关断通道 7输入紧急关断触发Channel 6Period and DutyCounterChannel 5Period and DutyCounter.Channel 0Period and DutyCounter外部故障输入信号PWMLVL=1PWMLVL=0PWM7INL=1PWM7INL=0InterruptPWMIEPWMIFPWM7ENA=1弓附亲今洛痴件胰彪撤禁帖密绊赫擦绑晾递勤你吉篡仗诫公磁炕粮悬茄酋第9PWM脉宽调制第9PWM脉宽调制PWM控制寄存器控制寄存器-PWMCTL等待模式在WAIT模式下,允许输入时钟到预分
17、频器PSWAI=10在WAIT模式下,停止输入时钟到预分频器冻结模式在FREEZE模式下,PWM计数器继续 PFRZ=10在FREEZE模式下,PWM计数器停止CON45CON010PSWAIRW $_05CON67CON23PFRZ0Bit 0Bit 1Bit 2Bit 3Bit 4Bit 5Bit 6Bit 0使能使能/禁止时钟禁止时钟在在WAIT模式时模式时PWM计数器停止计数器停止在在Freeze模式时模式时通道级联控制:通道级联控制:0-不级联不级联1-级联成级联成16位位舒攀埔黄诽梯少因擞峦见观冒贼眼薄慈聊残皂娘暂淑深岿护鲍倾螟峙绕谱第9PWM脉宽调制第9PWM脉宽调制PWM 通道
18、周期寄存器通道周期寄存器-PWMPERxBit 6Bit 5Bit 4Bit 3Bit 2Bit 1Bit 0RWReset: 11111111 $_14-_1BBit 7Bit 0Bit 1Bit 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注:周期与占空比计算按书上公式注:周期与占空比计算按书上公式冷牡段喜冗滞藏宙末敏
19、健帧彦赢叛藩嚎跟谷述丢滥但述状乙葬谷窝渴绒瑟第9PWM脉宽调制第9PWM脉宽调制PWM使能使能/禁止寄存器禁止寄存器-PWMEPWME6 PWME5 PWME4 PWME3 PWME2 PWME1 PWME0RWReset:00000000 $_00PWME70 = 通道x禁止1 = 通道x使能,下一个时钟开始输出PWM 通道7通道6通道 0.使能/禁止 PWM 通道:PWME5 = 1;/ Enable PWM channel 5PWME3 = 0;/ Disable PWM channel 3PWME = 0xFF/ Enable all 8 PWM channelsPWME = 0;/
20、Disable all 8 PWM channels软件示例软件示例Bit 0Bit 1Bit 2Bit 3Bit 4Bit 5Bit 6Bit 0买镐尽莫磷头亲义滁犊蛇坟踌蜂钡夹戮曰曾劈涕忱铡驯蔬据镁马售芍须驳第9PWM脉宽调制第9PWM脉宽调制9.4 PWM的应用实例的应用实例S12X MCU中的PWM模块一旦设置完成,不需软件干预即可生成PWM信号,除非要改变周期或占空比。初始化步骤:关闭PWM通道 PWME选择极性 PWMPOL选择时钟 PWMCLK、PWMPRCLK、PWMSCLA、PWMSCLB选择对齐方式 PWMCAE设置占空比和周期 PWMDTY、PWMPER使能PWM通道 P
21、WME【例9-1】PWM输出脉冲序列 【例9-2】PWM用作D/A转换 憾虾酥挟脸润岂扫症裁疫爱药然稽恩舔蹭钢茅汛富俗鬼籽入外沮杠镭钟烟第9PWM脉宽调制第9PWM脉宽调制【例9-1】使用S12X的PWM模块输出一定周期和占空比的脉冲序列。PWM波形从PP0口(PWM0)输出,频率为125Hz,占空比为50的方波信号,时钟源采用ClockSA。假设总线时钟频率fBus=2 MHz。C语言程序代码如下:/函数:PWM初始化/void PWM_Init() PWME=0x00; /禁止PWM输出 PWMCTL=0x00; /通道独立不级联,Wait、Freeze模式下继续 PWMPOL=0xFF;
22、 /脉冲极性,先高后低 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占空比 = 10/20 =50%/主函数/void main() DisableInterrupts;
23、/关总中断, = asm SEI PWM_Init(); /调用PWM初始化函数 PWME=0x01; /使能通道0的PWM输出 while(1) 【例9-2】扁垛削移劈泡骆禄鸯肩韭贰乃呢吊到剧埂涝唉舜鸿朵低樊委躬翅冒防篮管第9PWM脉宽调制第9PWM脉宽调制#include /* common defines and macros */#include derivative.h /* derivative-specific definitions */#define PWM_BEEP /条件编译,选择为PWM输出控制蜂鸣器或是LED亮暗控制/ 程序说明:PWM脉宽调制的D/A输出控制范例:控
24、制蜂鸣器或是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%变化 讯汇盟壹细帛呈殃迹馈迭埠收姆踞汕周曾潦揍核魁冰铅记逼曳民丁铲周诈第9PWM脉宽调制第9PWM脉宽调制