- SinoMCU_FAE_LHB
-
5 发帖0 回复165 积分
- 私信他 + 关注
MC30P6060的T1中带有3路同周期的PWM输出功能,其逻辑框图如下:
从上图可以看出,PWM0,PWM1,PWM2都是与T1CNT进行比较,然后根据比较结果进行输出,最终输出到端口时受到PWM0E/PWM1E/PWM2E控制。
由于T1CNT为递减计数,递减到0时产生T1溢出中断请求标志T1IF标志位,且重载T1LOAD值到T1CNT。
当PWM0OE=1时,将输出PWM波形,当T1CNT计数到与T1DATA相等时,PWM0输出置1;当T1CNT计数溢出时,PWM0输出清0,PWM0占空比的计算如下:
PWM0高电平时间 = (T1DATA)* T1CNT计数时钟周期
PWM0周期(T1的溢出周期) = (T1LOAD+1)*T1CNT的计数周期
PWM0占空比 = (T1DATA/(T1LOAD+1))
当BUZOE=1且PWM0OE=0时,输出BUZ信号,BUZ信号的输出频率为T1溢出频率的2分频。
三路PWM的周期和T1的计数溢出时间决定,三路是同步且相同的周期。占空比测由各自的T1DATAx值(x=0,1,2)确定。算法同上。
使用PWM时,必须开启TC1EN=1,且设置对应的P10,P11,P12为PWM端口功能(即设置PWM0OE/PWM1OE,PWM2OE的值)。
PWMCR寄存器说明:
BIT[7]
0:允许PWM0/BUZ输出,P12端口输出PWM0/BUZ信号BIT[7] PWM0OE– PWM0输出选择
1:禁止PWM0/BUZ输出,P12端口作为I/O口
BIT[6] PWM1OE– PWM1输出选择
0:禁止PWM1输出,端口作为I/O口
1:允许PWM1输出,端口输出PWM1信号
BIT[5] PWM2OE– PWM2输出选择
0:禁止PWM2输出,端口作为I/O口
1:允许PWM2输出,端口输出PWM2信号
以上几BIT为设置相关端口功能为GPIO 或PWM功能
BIT[4] DBLCK–T1时钟倍频选择 ;设置T1的时钟频率,当为DBLCK=1时,比计数频率快一倍
0:T1时钟不倍频
1:T1时钟倍频(T1PR=000时有效)
BIT[3] PWMMD–PWM输出选择
0:P11输出PWM1同时P10输出PWM2
1:P11输出PWM0同时P10输出(PWM1异或PWM2)或(PWM1同或PWM2)
;当PWMMD=0时,输出三路PWM 与设置的T1DATAx 直接成对应关系,正常
;当PWMMD=1,PWMINV=0时,P12端口出输波形不变,仍为PWM0波形,P11端口输出波形等于PWM0波形,
P10端口输出波形为 原来PWM1 同或 PWM2的波形。
;当PWMMD=1,PWMINV=1时,P12端口出输波形不变,仍为PWM0波形,P11端口输出波形等于PWM0波形,
P10端口输出波形为 原来PWM1 异或 PWM2的波形。
如下面三图从上至下分别为正常,同或,异或的输出波形(程序见后面):
BIT[2] PWMINV–PWM逻辑操作模式选择
0:PWM1同或PWM2
1:PWM1异或PWM2
BIT[1] PWM1E– PWM1使能选择
0:关闭PWM1
1:开启PWM1
BIT[0] PWM2E– PWM2使能选择
0:关闭PWM2
1:开启PWM2
以上两BIT位,和T1CR中的PWM0E 设置 PWM功能的输出开与关。
块
导
航
举报
请选择举报类别
- 广告垃圾
- 违规内容
- 恶意灌水
- 重复发帖