STC15W4K32S4PWM811剖析.docx

上传人:b****6 文档编号:7406179 上传时间:2023-01-23 格式:DOCX 页数:66 大小:29.64KB
下载 相关 举报
STC15W4K32S4PWM811剖析.docx_第1页
第1页 / 共66页
STC15W4K32S4PWM811剖析.docx_第2页
第2页 / 共66页
STC15W4K32S4PWM811剖析.docx_第3页
第3页 / 共66页
STC15W4K32S4PWM811剖析.docx_第4页
第4页 / 共66页
STC15W4K32S4PWM811剖析.docx_第5页
第5页 / 共66页
点击查看更多>>
下载资源
资源描述

STC15W4K32S4PWM811剖析.docx

《STC15W4K32S4PWM811剖析.docx》由会员分享,可在线阅读,更多相关《STC15W4K32S4PWM811剖析.docx(66页珍藏版)》请在冰豆网上搜索。

STC15W4K32S4PWM811剖析.docx

STC15W4K32S4PWM811剖析

 

STC15W4K32S4系列新增6通道增强型带死区控制高精度

 

PWM波形发生器应用

 

STC15W4K32S4系列的单片机集成了一组(各自独立

 

6路)增强型的

 

PWM波形发生器。

 

PWM波

形发生器内部有一个15位的PWM计数器供6路PWM使用,用户可以设置每路PWM的初始电平。

另外,PWM波形发生器为每路PWM又设计了两个用于控制波形翻转的计数器T1/T2,可以非常灵活的每路PWM的高低电平宽度,从而达到对PWM的占空比以及PWM的输出延迟进行控制的目的。

由于6路PWM是各自独立的,且每路PWM的初始状态可以进行设定,所以用户可以将其中的任意两路配合起来使用,即可实现互补对称输出以及死区控制等特殊应用。

增强型的PWM波形发生器还设计了对外部异常事件(包括外部端口P2.4的电平异常、比较器比较结果异常)进行监控的功能,可用于紧急关闭PWM输出。

PWM波形发生器还可在15位的PWM计数器归零时出发外部事件(ADC转换)。

 

STC15W4K32S4系列增强型PWM输出端口定义如下:

[PWM2:

P3.7,PWM3:

P2.1,PWM4:

P2.2,PWM5:

P2.3,PWM6:

P1.6,PWM7:

P1.7]

每路PWM的输出端口都可使用特殊功能寄存器位CnPINSEL分别独立的切换到第二组

[PWM2_2:

P2.7,PWM3_2:

P4.5,PWM4_2:

P4.4,PWM5_2:

P4.2,PWM6_2:

P0.7,PWM7_2:

P0.6]

 

所有与PWM相关的端口,在上电后均为高阻输入态,必须在程序中将这些口设置为双向口或强推挽模式才可正常输出波形

端口模式设置相关特殊功能寄存器

符号

描述

地址

位地址及符号

初始值

B6

B5

B4

B3

B2

B1

B7

B0

P1M1

P1模式配置1

91H

0000,0000

P1M0

P1模式配置0

92H

0000,0000

P0M1

P0模式配置1

93H

0000,0000

P0M0

P0模式配置0

94H

0000,0000

P2M1

P2模式配置1

95H

0000,0000

P2M0

P2模式配置0

96H

0000,0000

P3M1

P3模式配置1

B1H

0000,0000

P3M0

P3模式配置0

B2H

0000,0000

P4M1

P4模式配置1

B3H

0000,0000

P4M0

P4模式配置0

B4H

0000,0000

端口模式设置

PxM1PxM0模式

00准双向口

01强推挽输出

10高阻输入

11开漏输出

若需要正常使用与PWM相关的端口,则需要将相应的端口设置为准双向口或强推挽输出口

 

例如将端口均设置为准双向口的汇编代码如下:

MOVP0M0,#00H

MOVP0M1,#00H

MOVP1M0,#00H

MOVP1M1,#00H

MOVP2M0,#00H

MOVP2M1,#00H

MOVP3M0,#00H

MOVP3M1,#00H

MOVP4M0,#00H

MOVP4M1,#00H

 

增强型PWM波形发生器相关的特殊功能寄存器

符号

描述

地址

位地址及符号

初始值

B7

B6

B5

B4

B3

B2

B1

B0

P_SW2

端口配置寄存器

BAH

EAXSFR

0

0

0

-

S4_S

S3_S

S2_S

0000,0000

PWMCFG

PWM配置

F1H

-

CBTADC

C7INI

C6INI

C5INI

C4INI

C3INI

C2INI

0000,0000

PWMCR

PWM控制

F5H

ENPWM

ECBI

ENC7O

ENC6O

ENC5O

ENC4O

ENC3O

ENC2O

0000,0000

PWMIF

PWM中断标志

F6H

-

CBIF

C7IF

C6IF

C5IF

C4IF

C3IF

C2IF

x000,0000

PWMFDCRPWM外部异常控制

F7H

-

-

ENFD

FLTFLIO

EFDI

FDCMP

FDIO

FDIF

xx00,0000

PWMCH

PWM计数器高位

FFF0H

-

PWMCH[14:

8]

x000,0000

PWMCL

PWM计数器低位

FFF1H

PWMCL[7:

0]

0000,0000

PWMCKS

PWM时钟选择

FFF2H

-

-

-

SELT2

PS[3:

0]

xxx0,0000

PWM2T1H

PWM2T1计数高位

FF00H

-

PWM2T1H[14:

8]

x000,0000

PWM2T1L

PWM2T1计数低位

FF01H

PWM2T1L[7:

0]

0000,0000

PWM2T2H

PWM2T2计数高位

FF02H

-

PWM2T2H[14:

8]

x000,0000

PWM2T2L

PWM2T2计数低位

FF03H

PWM2T2L[7:

0]

0000,0000

PWM2CR

PWM2控制

FF04H

-

-

-

-

PWM2_PS

EPWM2I

EC2T2SI

EC2T1SI

xxxx,0000

PWM3T1H

PWM3T1计数高位

FF10H

-

PWM3T1H[14:

8]

x000,0000

PWM3T1L

PWM3T1计数低位

FF11H

PWM3T1L[7:

0]

0000,0000

PWM3T2H

PWM3T2计数高位

FF12H

-

PWM3T2H[14:

8]

x000,0000

PWM3T2L

PWM3T2计数低位

FF13H

PWM3T2L[7:

0]

0000,0000

PWM3CR

PWM3控制

FF14H

-

-

-

-

PWM3_PS

EPWM3I

EC3T2SI

EC3T1SI

xxxx,0000

PWM4T1H

PWM4T1计数高位

FF20H

-

PWM4T1H[14:

8]

x000,0000

PWM4T1L

PWM4T1计数低位

FF21H

PWM4T1L[7:

0]

0000,0000

PWM4T2H

PWM4T2计数高位

FF22H

-

PWM4T2H[14:

8]

x000,0000

PWM4T2L

PWM4T2计数低位

FF23H

PWM4T2L[7:

0]

0000,0000

PWM4CR

PWM4控制

FF24H

-

-

-

-

PWM4_PS

EPWM4I

EC4T2SI

EC4T1SI

xxxx,0000

PWM5T1H

PWM5T1计数高位

FF30H

-

PWM5T1H[14:

8]

x000,0000

PWM5T1L

PWM5T1计数低位

FF31H

PWM5T1L[7:

0]

0000,0000

PWM5T2H

PWM5T2计数高位

FF32H

-

PWM5T2H[14:

8]

x000,0000

PWM5T2L

PWM5T2计数低位

FF33H

PWM5T2L[7:

0]

0000,0000

PWM5CR

PWM5控制

FF34H

-

-

-

-

PWM5_PS

EPWM5I

EC5T2SI

EC5T1SI

xxxx,0000

 

PWM6T1H

PWM6T1计数高位

FF40H

-

PWM6T1H[14:

8]

x000,0000

PWM6T1L

PWM6T1计数低位

FF41H

PWM6T1L[7:

0]

0000,0000

PWM6T2H

PWM6T2计数高位

FF42H

-

PWM6T2H[14:

8]

x000,0000

PWM6T2L

PWM6T2计数低位

FF43H

PWM6T2L[7:

0]

0000,0000

PWM6CR

PWM6控制

FF44H

-

-

-

-

PWM6_PSEPWM6IEC6T2SI

EC6T1SI

xxxx,0000

PWM7T1H

PWM7T1计数高位

FF50H

-

PWM7T1H[14:

8]

x000,0000

PWM7T1L

PWM7T1计数低位

FF51H

PWM7T1L[7:

0]

0000,0000

PWM7T2H

PWM7T2计数高位

FF52H

-

PWM7T2H[14:

8]

x000,0000

PWM7T2L

PWM7T2计数低位

FF53H

PWM7T2L[7:

0]

0000,0000

PWM7CR

PWM7控制

FF54H

-

-

-

-

PWM7_PSEPWM7IEC7T2SI

EC7T1SI

xxxx,0000

 

端口配置寄存器P_SW2

地址:

BAH

初始值:

0000,0000B

B7

B6

B5

B4

B3

B2

B1

B0

EAXSFR

0

0

0

-

S4_S

S3_S

S2_S

EAXSFR:

扩展

SFR访问控制使能

0:

MOVXA,@DPTR/MOVX@DPTR,A指令的操作对象为扩展

RAM(XRAM)

1:

MOVXA,@DPTR/MOVX@DPTR,A指令的操作对象为扩展

SFR(XSFR)

注意:

若要访问

PWM在扩展

RAM区的特殊功能寄存器,必须先将

EAXSFR位置为

1

BIT6,BIT5,BIT4

为内部测试使用,用户必须填

0

 

PWM配置寄存器PWMCFG

地址:

F1H

初始值:

0000,0000B

B7

B6

B5

B4

B3

B2

B1

B0

-

CBTADC

C7INI

C6INI

C5INI

C4INI

C3INI

C2INI

CBTADC:

PWM计数器归零时(

CBIF==1时)触发

ADC转换

0:

PWM计数器归零时不触发

ADC转换

1:

PWM计数器归零时自动触发ADC转换。

(注:

前提条件是PWM和ADC必须被使能,即ENPWM==1,

且ADCON==1)

CnINI:

设置PWM输出端口的初始电平

0:

PWM输出端口的初始电平为低电平

1:

PWM输出端口的初始电平为高电平

 

PWM控制寄存器PWMCR

地址:

F5H

初始值:

0000,0000B

B7

B6

B5

B4

B3

B2

B1

B0

ENPWM

ECBI

ENC7O

ENC6O

ENC5O

ENC4O

ENC3O

ENC2O

ENPWM:

使能增强型PWM波形发生器

0:

关闭PWM波形发生器

1:

使能PWM波形发生器,PWM计数器开始计数

ECBI:

PWM计数器归零中断使能位

0:

关闭PWM计数器归零中断(CBIF依然会被硬件置位)

1:

使能PWM计数器归零中断

 

ENCnO:

PWM输出使能位

0:

相应PWM通道的端口为GPIO

1:

相应PWM通道的端口为PWM输出口,受PWM波形发生器控制

 

PWM中断标志寄存器PWMIF

地址:

F6H初始值:

x000,0000B

B7B6B5B4B3B2B1B0

-CBIFC7IFC6IFC5IFC4IFC3IFC2IF

CBIF:

PWM计数器归零中断标志位

当PWM计数器归零时,硬件自动将此位置1。

当ECBI==1时,程序会跳转到相应中断入口执行中断服务程序。

需要软件清零。

CnIF:

第n通道的PWM中断标志位

可设置在翻转点1和翻转点2触发CnIF(详见ECnT1SI和ECnT2SI)。

当PWM发生翻转时,硬件自

动将此位置1。

当EPWMnI==1时,程序会跳转到相应中断入口执行中断服务程序。

需要软件清零。

 

PWM外部异常控制寄存器PWMFDCR

地址:

F7H初始值:

xx00,0000B

B7B6B5B4B3B2B1B0

--ENFDFLTFLIOEFDIFDCMPFDIOFDIF

ENFD:

PWM外部异常检测功能控制位

0:

关闭PWM的外部异常检测功能

1:

使能PWM的外部异常检测功能

FLTFLIO:

发生PWM外部异常时对PWM输出口控制位

0:

发生WM外部异常时,PWM的输出口不作任何改变

1:

发生WM外部异常时,PWM的输出口立即被设置为高阻输入模式。

(注:

只有ENCnO==1所对

应的端口才会被强制悬空)

EFDI:

PWM异常检测中断使能位

0:

关闭PWM异常检测中断(FDIF依然会被硬件置位)

1:

使能PWM异常检测中断

FDCMP:

设定PWM异常检测源为比较器的输出

0:

比较器与PWM无关

1:

当比较器的输出由低变高时,触发PWM异常

FDIO:

设定PWM异常检测源为端口P2.4的状态

0:

P2.4的状态与PWM无关

1:

当P2.4的电平由低变高时,触发PWM异常

FDIF:

PWM异常检测中断标志位

当发生PWM异常(比较器的输出由低变高或者P2.4的电平由低变高)时,硬件自动将此位置1。

当EFDI==1时,程序会跳转到相应中断入口执行中断服务程序。

需要软件清零。

 

PWM计数器的高字节

PWMCH(高7位)

地址:

FFF0H(XSFR)

初始值:

x000,0000B

B7

B6

B5

B4

B3

B2

B1

B0

-

PWMCH[14:

8]

PWM计数器的低字节PWMCL(低8位)

 

地址:

 

FFF1H(XSFR)

 

初始值:

 

0000,0000B

B7

B6

B5

B4

B3

B2

B1

B0

PWMCL[7:

0]

PWM计数器位一个

15位的寄存器,可设定

1~32767

之间的任意值作为

PWM的周期。

PWM波形发生

器内部的计数器从

0开始计数,每个

PWM时钟周期递增

1,当内部计数器的计数值达到

[PWMCH,

PWMCL]所设定的

PWM周期时,

PWM波形发生器内部的计数器将会从

0重新开始开始计数,硬件会

自动将

PWM归零中断中断标志位

CBIF置

1,若

ECBI==1,程序将跳转到相应中断入口执行中断服

务程序。

 

PWM时钟选择寄存器PWMCKS

地址:

FFF2H(XSFR)

初始值:

xxx0,0000B

B7

B6

B5

B4

B3

B2

B1

B0

-

-

-

SELT2

PS[3:

0]

SELT2:

PWM时钟源选择

0:

PWM时钟源为系统时钟经分频器分频之后的时钟

1:

PWM时钟源为定时器2的溢出脉冲

PS[3:

0]:

系统时钟预分频参数。

当SELT2==0时,PWM时钟为系统时钟/(PS[3:

0]+1)

 

PWM2的第一次翻转计数器的高字节

PWM2T1H

地址:

FF00H(XSFR)

初始值:

x000,0000B

B7

B6

B5

B4

B3

B2

B1

B0

-

PWM2T1H[14:

8]

PWM2的第一次翻转计数器的低字节

PWM2T1L

地址:

FF01H(XSFR)

初始值:

0000,0000B

B7

B6

B5

B4

B3

B2

B1

B0

PWM2T1L[7:

0]

PWM2的第二次翻转计时器的高字节

PWM2T2H

地址:

FF02H(XSFR)

初始值:

x000,0000B

B7

B6

B5

B4

B3

B2

B1

B0

-

PWM2T2H[14:

8]

PWM2的第二次翻转计时器的低字节

PWM2T2L

地址:

FF03H(XSFR)

初始值:

0000,0000B

B7

B6

B5

B4

B3

B2

B1

B0

PWM2T2L[7:

0]

PWM波形发生器设计了两个用于控制

PWM波形翻转的15位计数器,可设定

1~32767之间的任意

值。

PWM波形发生器内部的计数器的计数值与

T1/T2所设定的值相匹配时,

PWM的输出波形将发

生翻转。

PWM2的控制寄存器PWM2CR

地址:

FF04H(XSFR)

初始值:

xxxx,0000B

B7

B6

B5

B4

B3

B2

B1

B0

-

-

-

-

PWM2_PS

EPWM2I

EC2T2SI

EC2T1SI

PWM2_PS:

PWM2输出管脚选择位

0:

PWM2的输出管脚为PWM2:

P3.7

 

1:

PWM2的输出管脚为PWM2_:

2P2.7

EPWM2I:

PWM2中断使能控制位

0:

关闭PWM2中断

1:

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

EC2T2SI:

PWM2的T2匹配发生波形翻转时的中断控制位

0:

关闭

T2翻转时中断

1:

使能

T2

翻转时中断,当

PWM波形发生器内部计数值与

T2

计数器所设定的值相匹配时,

PWM

的波形发生翻转,同时硬件将C2IF置1,此时若EPWM2I==1,则程序将跳转到相应中断入口执行

中断服务程序。

EC2T1SI:

PWM2的T1匹配发生波形翻转时的中断控制位

0:

关闭

1:

使能

T1翻转时中断

T1翻转时中断,当

 

PWM波形发生器内部计数值与

 

T1

 

计数器所设定的值相匹配时,

 

PWM

的波形发生翻转,同时硬件将

C2IF

1,此时若

EPWM2I==1,则程序将跳转到相应中断入口执行

中断服务程序。

 

PWM3的第一次翻转计数器的高字节

PWM3T1H

地址:

FF10H(XSFR)

初始值:

x000,0000B

B7

B6

B5

B4

B3

B2

B1

B0

-

PWM3T1H[14:

8]

PWM3的第一次翻转计数器的低字节

PWM3T1L

地址:

FF11H(XSFR)

初始值:

0000,0000B

B7

B6

B5

B4

B3

B2

B1

B0

PWM3T1L[7:

0]

PWM3的第二次翻转计时器的高字节

PWM3T2H

地址:

FF12H(XSFR)

初始值:

x000,0000B

B7

B6

B5

B4

B3

B2

B1

B0

-

PWM3T2H[14:

8]

PWM3的第二次翻转计时器的低字节

PWM3T2L

地址:

FF13H(XSFR)

初始值:

0000,0000B

B7

B6

B5

B4

B3

B2

B1

B0

PWM3T2L[7:

0]

PWM波形发生器设计了两个用于控制

PWM波形翻转的15位计数器,可设定

1~32767之间的任意

值。

PWM波形发生器内部的计数器的计数值与

T1/T2所设定的值相匹配时,

PWM的输出波形将发

生翻转。

PWM3的控制寄存器PWM3CR

地址:

FF14H(XSFR)

初始值:

xxxx,0000B

B7

B6

B5

B4

B3

B2

B1

B0

-

-

-

-

PWM3_PS

EPWM3I

EC3T2SI

EC3T1SI

PWM3_PS:

PWM3输出管脚选择位

0:

PWM3的

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1