松翰单片机--SN8F5702学习笔记(五)PWM

【松翰单片机--SN8F5702学习笔记(五)PWM】PW1定时器包括一个16位二进制上升4通道PWM和一个脉冲PWM功能。由计数器达到上限值(PW1Y),清除其计数器并触发中断信号。PWM的占空比由PW1D寄存器控制。PWM还支持一个脉冲输出信号,该信号可在第一个PWM结束时自行禁用周期。因此,在这种情况下只能产生一个脉冲。 PWM有四个可编程通道与GPIO引脚共用,由PW1CH寄存器控制。输出操作必须是通过使能PW1CH寄存器的每个位/通道。启用的PWM通道交换GPIO到PWM输出。当PW1CH寄存器禁用时,PWM通道返回上一状态GPIO模式。如果中断使能,则PWM内置空闲模式唤醒功能。当PWM时发生定时器溢出(从PW1Y-1到PW1Y计数),PWM1F将立即发出可以通过固件读/写。 PWM时钟源为fosc,除以1至128倍由PW1R [2:0]位控制。 PW1中断功能由EPWM1??控制。
松翰单片机--SN8F5702学习笔记(五)PWM
文章图片

普通PWM
?PW1定时器内置PWM功能,由PW1EN和PW1CH寄存器控制。 PWM10,PWM11,PWM20,PWM21是输出引脚(与P0.5,P0.6,P1.4和P1.5共用)。 那些输出引脚是与PW1CH寄存器控制的GPIO引脚共用。 输出PWM功能时,必须设置PW1EN = 1。 当PWM输出信号同步完成时,PWM通道交换GPIO到PWM输出。 当PW1EN = 0时,PWM通道返回GPIO模式并返回上一个状态。
?从PW1Y和PW1D比较组合的结果产生PWM信号。 当PW1C从0x0000开始计数,PWM输出高电平状态,即PWM初始状态。 PW1C是从PW1Y寄存器加载新数据以确定PWM周期和分辨率。 PW1C继续计数,并且系统比较PW1C和PW1D。 当PW1C = PW1D时,PWM输出状态交换到低PW1C继续计数。 当PW1定时器溢出时(PW1Y-1至0x0000),并且PWM信号的一个周期结束。 PW1C自动从0x0000重新加载,并且PWM
输出状态在下一个周期交换为高电平。 PW1D决定高占空比和PW1Y决定PWM的分辨率和周期。 PW1D不能大于PW1Y,否则PWM信号将是错误的。
松翰单片机--SN8F5702学习笔记(五)PWM
文章图片

单脉冲PWM
?当PW1PO = 0时,PW1为PWM功能模式。 当PW1PO = 1且PW1EN = 1时,PW1将输出PW1计数器溢出时,发出单脉冲PWM功能和PWM1F。 PW1EN位清零自动和脉冲输出引脚返回空闲状态。 输出下一个脉冲是设置PW1EN位按程序再次。 由PW1CH寄存器选择的一个脉冲PWM通道。 当输出一个脉冲PWM功能时,我们必须设置PW1PO = 1和PW1EN = 1。 当一个脉冲PWM输出信号同步完成后,PWM通道从GPIO切换到PWM输出。 当一个脉冲PWM输出结束,PW1EN = 0,PWM通道返回GPIO模式和上一个状态。
松翰单片机--SN8F5702学习笔记(五)PWM
文章图片

反转和死区
?PWM建立反向输出功能。 当PWNVn = 1时,PWM具有一个反向PWM信号。当PWNVn = 1时,PW1输出PWM1的反向PWM信号。 当PWNVn = 0时,PW1输出PWM1的非反向PWM信号。反向PWM输出波形如下图。
松翰单片机--SN8F5702学习笔记(五)PWM
文章图片

?PWM死区出现在PWM高脉冲宽度,死区周期可编程来自PW1A和PW1D-PW1B寄存器。 死区周期在左右终端是对称的PWM脉冲宽度与否。 如果死区周期长于PWM占空比,则PWM不输出。
PWM寄存器
松翰单片机--SN8F5702学习笔记(五)PWM
文章图片

1、PWM输出引脚控制:PW1CH

寄存器 bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
PW1CH - - PWCH21 PWCH20 - - PWCH11 PWCH10
引脚对应 - - P1.5 P0.6 - - P1.4 P0.5
解释 - - 设置为0则为普通引脚,设置为1则作为PWM输出引脚 同左 - - 同左 同左
2、PWM功能模式配置:PW1M
寄存器 bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
PW1M PW1EN PW1R2 PW1R1 PW1R0 PWNV2 PWNV1 - PW1PO
解释 PWM使能:1打开,0关闭 时钟源选择2位 时钟源选择1位 时钟源选择0位 PWM20/21输出控制:1可反转,0不可反转 PWM10/11输出控制:1可反转,0不可反转 - 单脉冲功能:1打开,0关闭
时钟源选择位:
分频
000 fosc / 128
001 fosc / 64
010 fosc / 32
011 fosc / 16
100 fosc / 8
101 fosc / 4
110 fosc / 2
111 fosc / 1
3、PWM周期控制:PW1YH,PW1YL
16位
4、PWM占空比控制:PW1DH,PW1DL
16位
5、PWM死区控制B点:PW1BH,PW1BL
16位
6、PWM死区控制A点:PW1A
8位
注意:在死区控制配置中,B点必须要大于A点
PW1M |= 0x70; // PW1 rate is Fhosc/1PWMê?3??μ?ê?£(32/1)/256 = 125KHZPWM?ü?ú?a8uSPW1M |= 0x08; // enable PWM20/21 output PW1M |= 0x04; // enable PWM10/11 output//PW1M |= 0x01; // enable PW1 pulse output function (PW1PO)PW1YH = 0x00; PW1YL = 0xFF; // set PW1 cycle control256PW1DH = 0x00; PW1DL = 0x40; // set PWM duty control64占空比为25%(低电平的占空比)

    推荐阅读