首页 理论教育 STC15W4K32S4系列单片微机PWM波形控制寄存器使用

STC15W4K32S4系列单片微机PWM波形控制寄存器使用

时间:2023-11-02 理论教育 版权反馈
【摘要】:与其他功能部件一样,PWM波形发生器也是通过特殊功能寄存器来设置控制的。与增强型、高精度和带死区控制的PWM波形发生器有关的特殊功能寄存器见表10-5。ENPWM=1,使能PWM波形发生器,启动PWM计数器开始计数。ENC2O=1,PWM通道2的输出端口作为PWM输出,并受PWM波形发生器控制。

STC15W4K32S4系列单片微机PWM波形控制寄存器使用

与其他功能部件一样,PWM波形发生器也是通过特殊功能寄存器来设置控制的。这些寄存器采用特征编码方式实现对功能部件的控制。与增强型、高精度和带死区控制的PWM波形发生器有关的特殊功能寄存器见表10-5。

表10-5 PWM波形发生器相关特殊功能寄存器表

978-7-111-51881-5-Chapter10-35.jpg

(续)

978-7-111-51881-5-Chapter10-36.jpg

1.端口配置寄存器P_SW2

单片机内部SFR地址区只有128B,大部分地址已经分配使用,新增PWM波形发生器的功能需要很多控制寄存器,地址不够用。为解决新增PWM的控制问题,STC15W4K32S4单片机在内部扩展了SFR寄存器地址,其中P_SW2用于控制访问扩展SFR寄存器使能。P_SW2寄存器字节地址为0BAH,不可位寻址,系统复位后各有效位初值为00,其格式及各位的功能如下:

978-7-111-51881-5-Chapter10-37.jpg

(1)EAXSFR:扩展SFR访问控制使能位

EAXSFR=0,使用MOVX A,@DPTR指令时,DPTR指针指向扩展XRAM。

EAXSFR=1,使用MOVX A,@DPTR指令时,DPTR指针指向扩展SFR。

(2)DBLPWR、P31PU、P30PU位暂时未定义功能,初始化写0

2.PWM配置寄存器PWMCFG

寄存器PWMCFG用于设置增强型PWM输出口引脚的初始电平状态,其字节地址为0F1H,不可位寻址,系统复位后各有效位初值为00,其格式及各位的功能如下:

978-7-111-51881-5-Chapter10-38.jpg

(1)CBTADC:PWM计数器归零时(且CBIF=1)触发ADC转换控制位

CBTADC=0,PWM计数器归零时不触发ADC转换。

CBTADC=1,且CBIF=1时,在PWM和ADC必须被使能,即ENPWM=1、ADCON=1的前提下,当PWM计数器归零时触发ADC转换。

(2)C7INI:设置PWM7输出口的初始电平控制位

C7INI=0,PWM7输出端口的初始电平位低电平。

C7INI=1,PWM7输出端口的初始电平位高电平

(3)C6INI:设置PWM6输出口的初始电平控制位

C6INI=0,PWM6输出端口的初始电平位低电平。

C6INI=1,PWM6输出端口的初始电平位高电平。

(4)C5INI:设置PWM5输出口的初始电平控制位

C5INI=0,PWM5输出端口的初始电平位低电平。

C5INI=1,PWM5输出端口的初始电平位高电平。

(5)C4INI:设置PWM4输出口的初始电平控制位

C4INI=0,PWM4输出端口的初始电平位低电平。

C4INI=1,PWM4输出端口的初始电平位高电平。

(6)C3INI:设置PWM3输出口的初始电平控制位

C3INI=0,PWM3输出端口的初始电平位低电平。

C3INI=1,PWM3输出端口的初始电平位高电平。

(7)C2INI:设置PWM2输出口的初始电平控制位

C2INI=0,PWM2输出端口的初始电平位低电平。

C2INI=1,PWM2输出端口的初始电平位高电平。

3.PWM控制寄存器PWMCR

寄存器PWMCR用于使能增强型PWM波形发生器输出波形,其字节地址为0F5H,不可位寻址,系统复位后各有效位初值为00,其格式及各位的功能如下:

978-7-111-51881-5-Chapter10-39.jpg

(1)ENPWM:使能增强型PWM波形发生器控制位

ENPWM=0,关闭PWM波形发生器。

ENPWM=1,使能PWM波形发生器,启动PWM计数器开始计数。

注意:如果PWM一旦被使能后,内部PWM计数器立即开始计数,并与PWM定时器/计数器T1、T2两个翻转点的值进行比较。必须在PWM功能设置、T1与T2翻转点设置、初始电平设置、PWM异常检测设置和PWM中断设置等全部设置完成后,最后才能使能EN-PWM位。

ENPWM是整个PWM模块的使能控制位,也是启动PWM计数器开始计数的控制位。在PWM计数器计数过程中,若ENPWM清0,PWM将立即停止计数。当再次对ENPWM置1时,PWM将从0开始重新计数。

(2)ECBI:PWM计数器归零中断使能控制位

ECBI=0,关闭或禁止PWM计数器归零中断,但CBIF标志依然会被硬件置位。

ECBI=1,使能或允许PWM计数器归零中断。

(3)ENC7O:PWM通道7输出口使能控制位

ENC7O=0,PWM通道7的输出端口作为GPIO使用。

ENC7O=1,PWM通道7的输出端口作为PWM输出,并受PWM波形发生器控制。

(4)ENC6O:PWM通道6输出口使能控制位

ENC6O=0,PWM通道6的输出端口作为GPIO使用。

ENC6O=1,PWM通道6的输出端口作为PWM输出,并受PWM波形发生器控制。

(5)ENC5O:PWM通道5输出口使能控制位

ENC5O=0,PWM通道5的输出端口作为GPIO使用。

ENC5O=1,PWM通道5的输出端口作为PWM输出,并受PWM波形发生器控制。

(6)ENC4O:PWM通道4输出口使能控制位

ENC4O=0,PWM通道4的输出端口作为GPIO使用。

ENC4O=1,PWM通道4的输出端口作为PWM输出,并受PWM波形发生器控制。

(7)ENC3O:PWM通道3输出口使能控制位

ENC3O=0,PWM通道3的输出端口作为GPIO使用。

ENC3O=1,PWM通道3的输出端口作为PWM输出,并受PWM波形发生器控制。

(8)ENC2O:PWM通道2输出口使能控制位

ENC2O=0,PWM通道2的输出端口作为GPIO使用。

ENC2O=1,PWM通道2的输出端口作为PWM输出,并受PWM波形发生器控制。

4.PWM中断标志寄存器PWMIF

寄存器PWMIF用作增强型PWM计数器归零时记录各个中断标志,其字节地址为0F6H,不可位寻址,系统复位后各有效位初值为00,其格式及各位的功能如下:

978-7-111-51881-5-Chapter10-40.jpg

(1)CBIF:PWM计数器归零中断标志位

CBIF=0,当PWM计数器没有归零,该位保持为0。

CBIF=1,当PWM计数器归零,硬件自动对该位置1,需要软件清0。如果ECBI=1允许中断,则程序会跳转到相应中断入口执行中断服务程序。

(2)C7IF:第7通道的PWM中断标志位

C7IF=0,当PWM没有发生翻转,该位保持为0。

C7IF=1,可设置在翻转点1和翻转点2触发C7IF。当PWM发生翻转时,硬件自动将该位置1,需要软件清0。如果EPWM7=1允许中断,则会跳转到相应中断入口执行中断服务程序。

(3)C6IF:第6通道的PWM中断标志位

C6IF=0,当PWM没有发生翻转,该位保持为0。

C6IF=1,可设置在翻转点1和翻转点2触发C6IF。当PWM发生翻转时,硬件自动将该位置1,需要软件清0。如果EPWM6=1允许中断,则会跳转到相应中断入口执行中断服务程序。

(4)C5IF:第5通道的PWM中断标志位

C5IF=0,当PWM没有发生翻转,该位保持为0。

C5IF=1,可设置在翻转点1和翻转点2触发C5IF。当PWM发生翻转时,硬件自动将该位置1,需要软件清0。如果EPWM5=1允许中断,则会跳转到相应中断入口执行中断服务程序。

(5)C4IF:第4通道的PWM中断标志位

C4IF=0,当PWM没有发生翻转,该位保持为0。

C4IF=1,可设置在翻转点1和翻转点2触发C4IF。当PWM发生翻转时,硬件自动将该位置1,需要软件清0。如果EPWM4=1允许中断,则会跳转到相应中断入口执行中断服务程序。

(6)C3IF:第3通道的PWM中断标志位

C3IF=0,当PWM没有发生翻转,该位保持为0。

C3IF=1,可设置在翻转点1和翻转点2触发C3IF。当PWM发生翻转时,硬件自动将该位置1,需要软件清0。如果EPWM3=1允许中断,则会跳转到相应中断入口执行中断服务程序。

(7)C2IF:第2通道的PWM中断标志位(www.xing528.com)

C2IF=0,当PWM没有发生翻转,该位保持为0。

C2IF=1,可设置在翻转点1和翻转点2触发C2IF。当PWM发生翻转时,硬件自动将该位置1,需要软件清0。如果EPWM2=1允许中断,则会跳转到相应中断入口执行中断服务程序。

5.PWM外部异常控制寄存器PWMFDCR

寄存器PWMFDCR用作增强型PWM外部异常检测控制寄存器,其字节地址为0F7H,不可位寻址,系统复位后各有效位初值为00,其格式及各位的功能如下:

978-7-111-51881-5-Chapter10-41.jpg

(1)ENFD:PWM外部异常检测功能控制位

ENFD=0,关闭或禁止PWM外部异常检测功能。

ENFD=1,使能或允许PWM外部异常检测功能。

(2)FLTFLIO:发生PWM外部异常时,对PWM输出口控制位

FLTFLIO=0,发生PWM外部异常时,PWM的输出口不作任何改变。

FLTFLIO=1,发生PWM外部异常时,PWM的输出口立即被设置为高阻输入模式,既不对外输出电流,也不对内输入电流。

注意:只有ENCnO=1,所对应的端口才会被强制悬空;当PWM外部异常状态取消时,相应的PWM的输出口会自动恢复以前的I/O口设置。

(3)EFDI:PWM异常检测中断使能位

ENFD=0,关闭或禁止PWM外部异常检测中断(发生外部异常时,FDIF会被硬件置1)。

ENFD=1,使能或允许PWM外部异常检测中断。

(4)FDCMP:设定PWM外部异常检测源为比较器的输出控制位

FDCMP=0,比较器与PWM无关。

FDCMP=1,当比较器正极(P5.5/CMP+)的电平高于比较器负极(P5.4/CMP-)的电平,比较器正极(P5.5/CMP+)的电平高于内部参考电压源1.28V时,触发PWM外部异常。

(5)FDIO:设定PWM外部异常检测源为端口P2.4的状态控制位

FDIO=0,P2.4的状态与PWM无关。

FDIO=1,当P2.4的电平为高电平时,触发PWM外部异常。

(6)FDIF:PWM外部异常检中断标志位

FDIF=0,PWM没有异常。

FDIF=1,当发生异常(比较器正极(P5.5/CMP+)的电平高于比较器负极(P5.4/CMP-)的电平,比较器正极(P5.5/CMP+)的电平高于内部参考电压源1.28V)时,硬件自动将该位置1,触发PWM外部异常中断申请。此时若EFDI=1,程序将跳转到相应中断入口执行中断服务程序,中断响应后需要软件对FDIF清0。

6.PWM计数器

PWM计数器是一个15位的计数器,包括PWMCH、PWMCL两个寄存器,是STC15单片机内部扩展的2个特殊功能寄存器(XSFR),其字节地址分别为0FFF0H和0FFF1H,不可位寻址,系统复位后各有效位初值为00,其格式及各位的功能如下:

978-7-111-51881-5-Chapter10-42.jpg

PWM波形发生器内部的计数器从0开始计数,15位的计数器计数范围可设定在1~32767之间,每个PWM时钟周期计数器加1。当内部计数器的计数值达到PWMCH、PWMCL寄存器的设定值时,PWM波形发生器内部的计数器会从00开始重新计数,硬件会自动将PWM归零中断标志位CBIF置1,此时若ECBI=1,允许PWM归零中断,程序会跳转到相应中断入口执行中断服务程序。

7.PWM时钟选择寄存器PWMCKS

PWMCKS寄存器用作PWM时钟选择,是STC15单片机内部扩展的一个特殊功能寄存器(XSFR),其字节地址为0FFF2H,不可位寻址,系统复位后各有效位初值为00,其格式及各位的功能如下:

978-7-111-51881-5-Chapter10-43.jpg

(1)SELT2:PWM时钟源选择控制位

SELT2=0,选择PWM时钟源为系统时钟经分频器分频之后的时钟。

SELT2=1,选择PWM时钟源为定时器/计数器2的溢出率。

(2)PS[3:0]:系统时钟预分频参数控制位

当SELT2=0时,PWM时钟=系统时钟/(PS[3:0]+1)。

8.PWM2翻转计数器

STC15W4K32S4单片机集成了6路PWM,每路PWM设计了一个15位翻转计数器,即每路PWM波形发生器包含2个15位计数器、共4个PWMnT1H、PWMnT1L、PWMnT2H、PWMnT2L寄存器(其中n=2~7),这些寄存器是STC15单片机内部扩展的特殊功能寄存器(XSFR),不可位寻址,系统复位后各有效位初值为00,其字节地址及格式如下(其中n=2~7,x=0~5)。

978-7-111-51881-5-Chapter10-44.jpg

由于每路PWM波形发生器都设计了2个用于控制PWM波形翻转的15位计数器,计数范围可设定在1~32767之间。PWM波形发生器内部计数器的计数值与16位PWM定时器/计数器T1、T2所设定的值相匹配时,PWM的输出波形将发生翻转。

9.PWM2的控制寄存器PWM2CR

PWM2CR寄存器用作PWM2(即第2路PWM)输出引脚选择和中断控制,是STC15单片机内部扩展的一个特殊功能寄存器(XSFR),其字节地址为0FF04H,不可位寻址,系统复位后各有效位初值为00,其格式及各位的功能如下:

978-7-111-51881-5-Chapter10-45.jpg

(1)PWM2_PS:PWM2输出引脚选择控制位

PWM2_PS=0,PWM2的输出设定在PWM2:P3.7引脚。

PWM2_PS=1,PWM2的输出设定在PWM2_2:P2.7引脚。

(2)EPWM2I:PWM2中断使能控制位

EPWM2I=0,关闭或禁止PWM2中断。

EPWM2I=1,使能或允许PWM2中断,当C2IF被硬件置1时,程序将跳转到相应中断入口执行中断服务程序。

(3)EC2T2SI:PWM2的匹配发生波形翻转时的中断使能控制位

EC2T2SI=0,关闭或禁止T2翻转时中断。

EC2T2SI=1,使能或允许T2翻转时中断。当PWM波形发生器内部计数值与T2计数器所设定的值相匹配时,PWM的波形发生翻转,同时硬件将C2IF置1,此时若EPWM2I=1,则程序将跳转到相应中断入口执行中断服务程序。

(4)EC2T1SI:PWM2的匹配发生波形翻转时的中断使能控制位

EC2T1SI=0,关闭或禁止T1翻转时中断。

EC2T1SI=1,使能或允许T1翻转时中断。当PWM波形发生器内部计数值与T1计数器所设定的值相匹配时,PWM的波形发生翻转,同时硬件将C2IF置1,此时若EPWM2I=1,则程序将跳转到相应中断入口执行中断服务程序。

10.PWM3的控制寄存器PWM3CR

PWM3CR寄存器用作PWM3(即第3路PWM)输出引脚选择和中断控制,是STC15单片机内部扩展的一个特殊功能寄存器(XSFR),其字节地址为0FF14H,不可位寻址,系统复位后各有效位初值为00,其格式及各位的功能如下:

978-7-111-51881-5-Chapter10-46.jpg

(1)PWM3_PS:PWM3输出引脚选择控制位

PWM3_PS=0,PWM3的输出设定在PWM3:P2.1引脚。

PWM3_PS=1,PWM3的输出设定在PWM3_2:P4.5引脚。

(2)EPWM3I:PWM3中断使能控制位

EPWM3I=0,关闭或禁止PWM3中断。

EPWM3I=1,使能或允许PWM3中断,当C3IF被硬件置1时,程序将跳转到相应中断入口执行中断服务程序。

(3)EC3T2SI:PWM3的匹配发生波形翻转时的中断使能控制位

EC3T2SI=0,关闭或禁止T2翻转时中断。

EC3T2SI=1,使能或允许T2翻转时中断。当PWM波形发生器内部计数值与T2计数器所设定的值相匹配时,PWM的波形发生翻转,同时硬件将C3IF置1,此时若EPWM3I=1,则程序将跳转到相应中断入口执行中断服务程序。

(4)EC3T1SI:PWM3的匹配发生波形翻转时的中断使能控制位

EC3T1SI=0,关闭或禁止T1翻转时中断。

EC3T1SI=1,使能或允许T1翻转时中断。当PWM波形发生器内部计数值与T1计数器所设定的值相匹配时,PWM的波形发生翻转,同时硬件将C3IF置1,此时若EPWM3I=1,则程序将跳转到相应中断入口执行中断服务程序。

11.PWM4~PWM7的控制寄存器

PWM4CR、PWM5CR、PWM6CR、PWM7CR寄存器分别用作PWM3~PWM7(即第3路~第7路PWM)输出引脚选择和中断控制,它们都是STC15单片机内部扩展的特殊功能寄存器(XSFR),不可位寻址,系统复位后各有效位初值为00,其字节地址及格式如下:

978-7-111-51881-5-Chapter10-47.jpg

(1)PWM4_PS:PWM4输出引脚选择控制位

PWM4_PS=0,PWM4的输出设定在PWM4:P2.2引脚。

PWM4_PS=1,PWM4的输出设定在PWM4_2:P4.4引脚。

(2)PWM5_PS:PWM5输出引脚选择控制位

PWM5_PS=0,PWM5的输出设定在PWM5:P2.3引脚。

PWM5_PS=1,PWM5的输出设定在PWM5_2:P4.2引脚。

(3)PWM6_PS:PWM6输出引脚选择控制位

PWM6_PS=0,PWM6的输出设定在PWM6:P1.6引脚。

PWM6_PS=1,PWM6的输出设定在PWM6_2:P0.7引脚。

(4)PWM7_PS:PWM7输出引脚选择控制位

PWM7_PS=0,PWM7的输出设定在PWM7:P1.7引脚。

PWM7_PS=1,PWM7的输出设定在PWM7_2:P0.6引脚。

至于其他各个控制位,均与PWM2或PWM3的相应位的功能作用类似。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈