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