本帖最后由 Anrenly 于 2023-7-6 10:12 编辑
PWM 广泛应用于测量、通信、功率控制与变换等需许多领域,使用非常广泛。RD8T37系列的PWM可支持周期及占空比的调整,寄存器PWMCFG、PWMCON0 和 PWMCON1 控制PWM的状态及周期,各路PWM的打开及输出波形占空比可单独调整。
一直想搞清楚PMW中的周期和占空比如何配置, 规格书里有2个公式,如下:
根据规格书中的描述,周期寄存器是PWMPD,占空比寄存器是PDT0x 比如设置周期为100us,占空比为50%的PWM0波形, 时钟为32MHz 周期套公式: 100us = (PWMPD[15:0]+1)/32Mhz PWMPD[15:0]+1 = 3200 PWMPD[15:0] = 3200-1=3199,也就是0x0C7F , PWMPD 配置为0x0C7F 占空比套公式: 50% = PDT0x[15:0]/(PWMPD[15:0]+1) PDT0x[15:0] = (PWMPD[15:0]+1) *50%= 3200*0.5=1600,也就是0x640, PDT0x[15:0] 配置为0x640
unsigned int xdata PWMREG[14] _at_ 0x2034; //PWM占空比调节寄存器
void PWM_Init(void) { //设置周期为100us,占空比为50%的PWM0波形 //PWM00,PWM01独立输出 PWMCON0 = 0x00; //分频系数设置为1分频,独立模式,边沿对齐 PWMCFG |= 0x02; //PWM00不反向,PWM01反向 PWMCON1 |= 0x03; //PWM00,PMW01输出 PWMPDL = 0x7F; //周期配置低8位 PWMPDH = 0x0C; //周期配置高8位 PWMREG[6] = 0x640; //PWM00占空比 PWMREG[7] = 0x640; //PWM01占空比 PWMCON0 |= 0x80; //使能PWM0 IE1 |= 0x02; //开启中断标志位 //设置了周期为500us,占空比为50%的PWM2波形 TXINX = 0x02; //TimerX寄存器组指向TIM2 THX = 0X00; //计数器高8位清零 TLX = 0x00; //计数器低8位清零 TXMOD |= 0x30; //使能PWM20,PWM21波形输出 TXMOD |= 0x08; //PWM21输出反向 RCAPXH = 0x3E; //配置周期寄存器高8位 RCAPXL = 0x7F; //配置周期寄存器低8位 PWMREG[0] = 0x1F40; //配置PWM20占空比 PWMREG[1] = 0x1F40; //配置PWM21占空比 TXCON |= 0x04; //使能PWM2 ET2 = 0; //关闭PWM2中断 //设置了周期为1ms,占空比为50%的PWM3波形 TXINX = 0x03; //TimerX寄存器组指向TIM3 THX = 0X00; //计数器高8位清零 TLX = 0x00; //计数器低8位清零 TXMOD |= 0x30; //使能PWM30,PWM31波形输出 TXMOD |= 0x08; //PWM31输出反向 RCAPXH = 0x7C; //配置周期寄存器高8位 RCAPXL = 0xFF; //配置周期寄存器低8位 PWMREG[2] = 0x3E80; //配置PWM30占空比 PWMREG[3] = 0x3E80; //配置PWM31占空比 TXCON |= 0x04; //使能PWM3 IE1 &= ~0x40; //关闭PWM3中断 //设置了周期为2ms,占空比为50%的PWM4波形 TXINX = 0x04; //TimerX寄存器组指向TIM4 THX = 0X00; //计数器高8位清零 TLX = 0x00; //计数器低8位清零 TXMOD |= 0x30; //使能PWM40,PWM41波形输出 TXMOD |= 0x80; //PWM41输出反向 RCAPXH = 0xF9; //配置周期寄存器高8位 RCAPXL = 0xFF; //配置周期寄存器低8位 PWMREG[4] = 0x7D00; //配置PWM40占空比 PWMREG[5] = 0x7D00; //配置PWM41占空比 TXCON |= 0x04; //使能PWM4 IE1 &= ~0x40; //关闭PWM4中断 EA = 1; //总中断开启 }
RD8T37系列的PWM0具有的功能如下: 1、 16位PWM精度 2、 输出波形可反向 3、 类型:可设为中心对齐型或者边沿对齐型 4、 模式:可设为独立模式或互补模式 a) 独立模式下,8路PWM周期相同,但每一路PMW输出波形的占空比单独可设置; b) 互补模式下课同时输出四组互补、带死区的PWM波形 5、 提供1个PWM溢出的中断 6、 支持故障检测机制
|