Top Banner
第第第 ATD 第第第 PWM 第第 MC9S12 单单单 PWM 单单 单单单单单单单单单单单单单 2010.8
36

MC9S12 单片机 PWM 模块

Jan 08, 2016

Download

Documents

zilya

MC9S12 单片机 PWM 模块. 山东大学控制科学与工程学院 2010.8. 脉冲宽度调制 PWM 模块. PWM ( Pulse Width Modulate )即脉宽调制,脉宽调制波是一种可用程序来控制波形 占空比 、 周期 、 相位 的波形。它在电动机驱动、 D/A 变换等场合有着广泛的应用。 周期,占空比,相位。 周期指上图中的 τ ,占空比为 t/ τ ,相位指高低电平。. 9S12 PWM 模块特性. - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: MC9S12 单片机 PWM 模块

第八章 ATD 模块和 PWM 模块

MC9S12 单片机 PWM 模块

山东大学控制科学与工程学院

2010.8

Page 2: MC9S12 单片机 PWM 模块

第八章 ATD 模块和 PWM 模块脉冲宽度调制 PWM 模块

PWM( Pulse Width Modulate)即脉宽调制,脉宽调制波是一种可用程序来控制波形占空比、周期、相位的波形。它在电动机驱动、 D/A 变换等场合有着广泛的应用。

周期,占空比,相位。周期指上图中的 τ,占空比为 t/ τ,相位指高低电平。

Page 3: MC9S12 单片机 PWM 模块

第八章 ATD 模块和 PWM 模块9S12 PWM 模块特性

对于 DG128( 80pin): 7个周期、占空比可编程的 PWM

通道 (PP0-PP5,PP7);对于 112引脚的,有 8个 PWM通道。 专用的 PWM计数器 PWM功能的软件使能和禁止(允许寄存器) 软件选择脉冲极性 PWM波形输出对齐方式分为左对齐和居中对齐 可以两个通道级联以获得更高的精度 可选择 4个时钟源, 4个时钟源均为独立的分频设置 紧急关断功能

Page 4: MC9S12 单片机 PWM 模块

第八章 ATD 模块和 PWM 模块1. 时钟

四个时钟源 CLOCKA 、 CLOCKB 、 CLOCKSA 、 CLOCKSB 。

总线时钟

CLOCKA

CLOCKB

CLOCKSA

CLOCKSB

分频

分频

分频

分频

CLOCKA ( B )可以把总线时钟进行 1 、 2 、 4 、 8 、 16 、 32 、 64 、 128 分频。 Clock A 的预分频因子通过 PWMPRCLK 寄存器中的 PCKA2 、 PCKA1

和 PCKA0 来选择 Clock B 的预分频因子通过 PWMPRCLK 寄存器中的 PCKB2 、 PCKB1

和 PCKB0 来选择。

Page 5: MC9S12 单片机 PWM 模块

第八章 ATD 模块和 PWM 模块

CLOCKSA ( B ) 从 CLOCKA ( B )进行分频的比例因子可以为 1 、

2 、 4 、 8 、 16 、 32 、 64 、 128 、 256 ,最大可以进行 512 分频。计算公式为:CLOCKSA ( B ) =CLOCKA ( B ) / ( 2*PRESCALER )

通道 0 、 1 、 4 、 5 可选 CLOCKA 或 CLOCKSA

通道 2 、 3 、 6 、 7 可选 CLOCKB 或 CLOCKSB

时钟的选择 PWMCLK 寄存器中的 PCLKx 位来控制

Page 6: MC9S12 单片机 PWM 模块

第八章 ATD 模块和 PWM 模块2. 允许控制

PWM 的允许位相当于“开关”,可以允许和禁止相应通道的 PWM 输出。

每个 PWM 通道都对应一个允许位( PWMEx ),只有 PWMEx=1 时,对应的通道才输出波形。

计数器计数结束的那一刻,只要 PWMEx 为高电平,则会自动开始下一个波形的输出。

Page 7: MC9S12 单片机 PWM 模块

第八章 ATD 模块和 PWM 模块3. 极性控制

每个 PWM 通道都对应一个极性设置位,决定了 P

WM 波的输出首先是高电平还是低电平。PPOLx=1 时,对应的通道首先输出高电平,直到

计数器计数到占空比寄存器的值后变为低电平PPOLx=0 时,对应的通道首先输出低电平,直到

计数器计数到占空比寄存器的值后变为高电平。

Page 8: MC9S12 单片机 PWM 模块

第八章 ATD 模块和 PWM 模块4. 周期和占空比

每个通道都有一个独立周期寄存器一个独立的占空比寄存器

输出波形的周期受周期寄存器的控制,当计数器的计数值等于周期寄器的值时, PWM 波周期结束。

当计数器的计数值等于占空比寄存器的值时, PW

M 输出波形的极性改变。

Page 9: MC9S12 单片机 PWM 模块

第八章 ATD 模块和 PWM 模块5. 计数器

每个通道都有一个 8 位的加法 / 减法计数器计数器的计数频率 = 选择的时钟频率

Page 10: MC9S12 单片机 PWM 模块

第八章 ATD 模块和 PWM 模块6. 左对齐的输出波型

PWMCAE 寄存器中的 CAEx 位是输出格式的控制位。 CAEx=0 ,则对应通道的输出格式是左对齐的。 CAEx=1 ,则对应通道的输出格式是居中对齐的。

当使用左对齐格式输出时, 8 位的计数器只使用加法计数。 当计数器加法计数到占空比寄存器中的值时, PWM 通道输出波形的电平就发生变化;当计数器加法计数到周期寄存器中的值时,计数器复位,输出波形电平发生变化。然后再次读取占空比和周期寄存器中的值作为下次计数参考使用。注意,计数器是从 0 开始计数的,直到周期寄存器中的值。

Page 11: MC9S12 单片机 PWM 模块

第八章 ATD 模块和 PWM 模块

PWM 波形频率的计算:

用时钟源的频率除以周期寄存器中的值

PWMx 频率 = Clock(A, B, SA, or SB) / PWMPERx

Page 12: MC9S12 单片机 PWM 模块

第八章 ATD 模块和 PWM 模块

PWM 波形占空比的计算:(高电平占得百分比)若 Polarity = 0 (PPOLx=0) :首先输出低电平

Duty Cycle = [(PWMPERx-PWMDTYx)/PWMPERx] × 100%

若 Polarity = 1 (PPOLx=1) :首先输出高电平

Duty Cycle = [PWMDTYx / PWMPERx] × 100%

Page 13: MC9S12 单片机 PWM 模块

第八章 ATD 模块和 PWM 模块

下面举一个左对齐输出的例子:假设时钟源频率 =10MHz (周期 =100ns ), PPOLx=0 (首先输出低电平), PWMPERx=4 (周期寄存器), PWMDTYx=1

(占空比寄存器)。所以, PWMx 的频率 = 10MHz/4 = 2.5MHz , PWMx 的周期 =4

00ns , PWMx 的占空比 =3/4×100% = 75% 。

Page 14: MC9S12 单片机 PWM 模块

第八章 ATD 模块和 PWM 模块居中对齐的输出波型

• CAEx=1 ,则对应通道的输出格式是居中对齐的。

计数器既进行加法计数也进行减法计数。 当计数器加法计数到占空比寄存器中的值时, PWM 通道输出波形的电

平发生变化; 当加法计数到周期寄存器中的值时,计数器会从加法计数改变为减法计

数; 当计数器再次减法计数到占空比寄存器中的值时, PWM 通道输出波形

的电平再次发生变化; 当计数器继续减法计数到 $00 时,计数器重新变为加法计数器,然后再

次读取占空比和周期寄存器中的值作为下次计数参考使用。

Page 15: MC9S12 单片机 PWM 模块

第八章 ATD 模块和 PWM 模块

PWM 输出波形的频率:时钟源的频率除以周期寄存器中值的 2 倍PWMx Frequency = Clock(A, B, SA, or SB) / (2×PWMPERx)

若 Polarity = 0 (PPOLx=0)

Duty Cycle = [(PWMPERx-PWMDTYx)/PWMPERx] × 100%若 Polarity = 1 (PPOLx=1)

Duty Cycle = [PWMDTYx / PWMPERx] × 100%

Page 16: MC9S12 单片机 PWM 模块

第八章 ATD 模块和 PWM 模块

下面举一个居中对齐输出的例子:假设时钟源频率 =10MHz (周期 =100ns ), PPOLx=0 , P

WMPERx=4 , PWMDTYx=1 。所以, PWMx 的频率 = 10MHz/8 = 1.25MHz , PWMx 的周期 =800ns , PWMx 的占空比 =3/4×100% = 75% 。

Page 17: MC9S12 单片机 PWM 模块

第八章 ATD 模块和 PWM 模块9S12 PWM 模块的通道级联

如果需要 PWM 输出波形的精度更高,则可以把 2 个 8 位 P

WM 通道级联起来组成 1 个 1

6 位通道。 PWMCTL 寄存器中有 4 个控

制位,可以完成这个级联的功能。 CON67 、 CON45 、 CO

N23 和 CON01 可以把相应的两个通道级联起来。

Page 18: MC9S12 单片机 PWM 模块

第八章 ATD 模块和 PWM 模块

级联后的寄存器 6 和 7 级联时, 6 的寄存器为级联后寄存器的高 8 位 4 和 5 级联时, 4 的寄存器为级联后寄存器的高 8 位 2 和 3 级联时, 2 的寄存器为级联后寄存器的高 8 位 0 和 1 级联时, 0 的寄存器为级联后寄存器的高 8 位

级联后的控制寄存器 时钟是受低 8 位对应通道的寄存器的控制 6 和 7 级联时, 7 的寄存器为级联后控制寄存器 4 和 5 级联时, 5 的寄存器为级联后控制寄存器 2 和 3 级联时, 3 的寄存器为级联后控制寄存器 0 和 1 级联时, 0 的寄存器为级联后控制寄存器

Page 19: MC9S12 单片机 PWM 模块

第八章 ATD 模块和 PWM 模块

PWM 波形是从低 8 位对应通道的外部引脚上输出的。

– 1 、 3 、 5 、 7

PWM 波形的允许、极性、对齐方式、也是由低 8 位对应通道的寄存器控制的。

Page 20: MC9S12 单片机 PWM 模块

第八章 ATD 模块和 PWM 模块寄存器介绍

允许控制寄存器— PWME

极性寄存器— PWMPOL

时钟选择寄存器— PWMCLK

预分频时钟选择寄存器 -PWMPRCLK

居中对齐允许寄存器— PWMCAE

控制寄存器— PWMCTL

比例因子寄存器 A—PWMSCLA

比例因子寄存器 B—PWMSCLB

计数寄存器— PWMCNTx

周期寄存器— PWMPERx

占空比寄存器— PWMDTYx

关断寄存器 --PWMSDN

Page 21: MC9S12 单片机 PWM 模块

第八章 ATD 模块和 PWM 模块允许控制寄存器 --PWME

PWMEx :通道有效选择位。 1= 允许 PWM 输出, 0= 禁止。 当 PWMEx 被置位后, PWM 输出就会立即开始。但是直到 PWM 模块时钟的下一个周期到来之时,才可以输出正确的波形,而在这之前的波形可能会是无效的。当处于级联模式时, 8 个 8 位 PWM 通道组成 4 个 16 位的 PWM 通道, PWME1 、 PWME3 、 PWME5 和 PWME7

对这 4 个通道进行控制,而其它控制位处于无效状态。

Page 22: MC9S12 单片机 PWM 模块

第八章 ATD 模块和 PWM 模块极性寄存器 --PWMPOL

PPOLx :通道 x 的输出极性。1= 先高后低,0= 先低后高。

PWMPOL 寄存器随时都可以进行设置。如果某 PWM 通道在输出波形的过程中,波形的极性发生了改变,那么在两组波形的连接处可能会出现缩短或者拉伸了的不正常波形。

Page 23: MC9S12 单片机 PWM 模块

第八章 ATD 模块和 PWM 模块时钟选择寄存器 --PWMCLK

通道 0 、 1 、 4 、 5 可选 CLOCKA 或 CLOCKSA ;通道 2 、 3 、 6 、 7 可选 CLOCKB 或 CLOCKSB 。PCLK7 : PWM 通道 7 时钟源选择。 1=Clock SB ; 0=Clock BPCLK6 : PWM 通道 6 时钟源选择。 1=Clock SB ; 0=Clock BPCLK5 : PWM 通道 5 时钟源选择。 1=Clock SA ; 0=Clock APCLK4 : PWM 通道 4 时钟源选择。 1=Clock SA ; 0=Clock APCLK3 : PWM 通道 3 时钟源选择。 1=Clock SB ; 0=Clock BPCLK2 : PWM 通道 2 时钟源选择。 1=Clock SB ; 0=Clock BPCLK1 : PWM 通道 1 时钟源选择。 1=Clock SA ; 0=Clock APCLK0 : PWM 通道 0 时钟源选择。 1=Clock SA ; 0=Clock A

Page 24: MC9S12 单片机 PWM 模块

第八章 ATD 模块和 PWM 模块预分频时钟选择寄存器 -PWMPRCLK

此寄存器用来选择 Clock A ( B ) 的预分频因子 Clock B 预分频因子的选择

PCKB2 、 PCKB1 、 PCKB0 : Clock A 预分频因子的选择

PCKA2 、 PCKA1 、 PCKA0

详细列表见课本 P266

Page 25: MC9S12 单片机 PWM 模块

第八章 ATD 模块和 PWM 模块居中对齐允许寄存器 --PWMCAE

此寄存器控制每个 PWM 通道输出波形的对齐方式, 可以是左对齐或者居中对齐。CAEx : 1= 对应 x 通道为居中对齐模式 0= 对应 x 通道为左对齐模式 注意只有当对应通道被禁止输出时,才可以设置此寄存器。

Page 26: MC9S12 单片机 PWM 模块

第八章 ATD 模块和 PWM 模块控制寄存器 --PWMCTL

此寄存器可以实现把 8 个 8 位 PWM 通道级联为 4 个 16 位通道。

CONxy : x 通道和 y 通道级联,以获得更高的输出精度。

1= 级联模式0= 非级联模式

x 通道作为高 8 位, y 通道作为低 8 位。只有通道 y 的时钟选择位、极性控制位、输出允许位和对齐方式选择位才有效;通道 x 的相应寄存器均无效。PFRZ :冻结模式 PWM 计数器停止,(程序调试时有用)

1= 停止, 0= 继续运行。

Page 27: MC9S12 单片机 PWM 模块

第八章 ATD 模块和 PWM 模块比例因子寄存器 A--PWMSCLA

此寄存器用来提供产生时钟 Clock SA 的比例因子Clock SA 是由 Clock A 经过一系列运算得来的,公式:

Clock SA = Clock A / (2×PWMSCLA)

当 PWMSCLA=0 时,默认比例因子为 256 ,此时 Cloc

k SA 的频率等于 Clock A 的频率除以 512 。

Page 28: MC9S12 单片机 PWM 模块

第八章 ATD 模块和 PWM 模块比例因子寄存器 B--PWMSCLB

此寄存器用来提供产生时钟 Clock SB 的比例因子Clock SB 是由 Clock B 经过一系列运算得来的,公式如下:

Clock SB = Clock B / (2×PWMSCLB)

当 PWMSCLB=0 时,默认比例因子为 256 ,此时Clock SB 的频率等于 Clock B 的频率除以 512 。

Page 29: MC9S12 单片机 PWM 模块

第八章 ATD 模块和 PWM 模块x 通道计数寄存器 --PWMCNTx

每个 PWM 通道都有一个独立的加法 / 减法计数器,计数器的频率 = 时钟源的频率。可以在任意时刻来读取计数器里的值,而计数器的工作不会受到影响。

★ 注意左 / 居中对齐方式时,计数器的计数方式。对计数寄存器进行写操作将使它复位,计数器会立即开始加法计数,从周期寄存器和占空比寄存器的缓冲区里得到周期和占空比值,然后根据设置的极性来输出。当相应的 PWM 通道被禁止输出( PWMEx=0 )时,计数器不工作;当 PWM 通道允许时,计数器会以计数寄存器中的值为起点开始计数。

Page 30: MC9S12 单片机 PWM 模块

第八章 ATD 模块和 PWM 模块周期寄存器 --PWMPERx

每个 PWM 通道都有一个独立的周期寄存器,周期寄 存器中的值对应 PWM 通道输出波形的周期。此寄存器具有双重缓存功能,新输入的值被送到缓冲区,而不是立即生效,到下一个有效周期开始时才会有效,所以 PWM 输出波形的周期在改变时不会产生无效波形。

Page 31: MC9S12 单片机 PWM 模块

第八章 ATD 模块和 PWM 模块占空比寄存器 --PWMDTYx

每个 PWM 通道都有一个独立的占空比寄存器。此寄存器同样是双重缓存的。

Page 32: MC9S12 单片机 PWM 模块

第八章 ATD 模块和 PWM 模块关断寄存器 --PWMSDN

在有紧急情况发生时,立即关断 PWM 的输出。PWM7ENA : PWM 紧急关断允许

当此位为 1 时,通道 7 会被强制配置为输入端口,并且允许紧急关断。只有当此位为 1 时,寄存器中的其它位才有意义。

PWM7INL : 紧急关断通道 7 的有效电平。 1= 高电平, 0= 低电平。PWM7IN : PWM 通道 7 的输入电平状态。PWMLVL : PWM 紧急关断后的输出电平。 1= 高, 0= 低。PWMRSTRT :PWM 重新启动。只有在当 PWM 通道 7 处于无效状态(非紧急关闭)时,才可以重新启动 PWM 模块。把 PWMRSTRT 置一,当计数器返回 0 时, PWM 通道才开始运行。PWMIE : PWM 中断允许。 1= 允许, 0= 禁止。PWMIF : PWM 中断标志。当 PWM7ENA 被置位时, PWM 通道 7 上电平的任意变化将产生中断并使 PWMIF 置位。

1=PWM7IN 输入有变化。 0=PWM7IN 输入无变化。

Page 33: MC9S12 单片机 PWM 模块

第八章 ATD 模块和 PWM 模块PWM 的复位和中断

复位复位时,计数器配置为加法计数器所有通道被禁止,计数器不工作

中断PWM 模块仅有一个中断源,在紧急关断时使用

Page 34: MC9S12 单片机 PWM 模块

第八章 ATD 模块和 PWM 模块PWM 的综合举例

利用 PWM5 通道来做 DA 转换输出变化的电压控制小灯的亮度。灯会从暗逐渐变亮。

void PWM_Init(void){PWMPOL=0x20; // 脉冲先高后低PWMCLK=0x20; // 使用 SA 时钟源PWMPRCLK=0x07; // 时钟 A 为总线 128 分频PWMCAE=0x00; // 通道 5 为左对齐输出模式PWMCTL=0x00; //单独使用通道 5, 非级联PWMSCLA=0x05; //Clock SA=Clock A/(2*PWMSCLA)PWMPER5=0x64; // 设定周期}

Page 35: MC9S12 单片机 PWM 模块

第八章 ATD 模块和 PWM 模块

void main(void){

unsigned char i;unsigned long j=10000;SET_PLL(); // 设置锁相环EnableInterrupts;PWMInit(); //初始化 PWMfor(i=0;i<0x64;i++){

while(j--);j=10000;while(j--);j=10000;PWMDTY5=i; // 设定占空比PWME=0x20; // 使能 PWM

}}

Page 36: MC9S12 单片机 PWM 模块

第八章 ATD 模块和 PWM 模块

谢 谢!