11. 脉冲宽度调制发生器 (PWM)
11.1. 概述
SWM221系列所有型号PWM操作均相同,不同型号PWM通道数可能不同。使用前需使能PWM模块时钟。
PWM模块用于实现芯片输出特定的方波,控制外部元器件,如步进电机等。计数器可以通过APB总线读写寄存器、和外部硬件同时控制,实现计数过程的控制。同时,CPU和外部硬件也可以共同实现对输出PWM信号的控制。
PWM模块提供了2组(PWM0、PMW1)、8路(PWM0A、PWM0B、PWM0AN、PWM0BN、PWM1A、PWM1B、PWM1AN、PWM1BN)独立通道,支持边沿模式、中心对称模式。
中心对称模式下,输出是互补输出。如PWM0A驱动 PWM0A 和 PWM0AN 两个输出信号,两个信号周期相等、电平值相反,且可设置死区。
11.2. 特性
2组16位宽PWM控制,每组PWM支持4路PWM输出(A/AN/B/BN路),最多可产生8路PWM信号
支持10 位预分频计数器,一个位宽为10位的预分频计数器
每组PWM支持4个翻转点(非对称中心对齐模式下,每路输出支持2个翻转点,其他情况下每路支持1个翻转点)
支持CPU和外部信号两个控制源,同时控制计数器的启动、停止、输出MASK、配置更新四种操作,同时外部信号还可以控制计数器的暂停操作
提供新周期开始中断,高电平结束中断、刹车中断以及中心对称模式下的半周期中断
最多支持7路外部信号控制源和3路外部HALT信号,支持对低4路外部信号和3路外部HALT信号进行滤波功能,支持不滤波、过滤4/8/16pclk宽度四种配置
支持PWM计数周期、翻转周期、死区值、trigger值的动态配置,先发起更新请求,并在周期溢出时完成更新
支持输出两种类型的触发信号,计数器比较匹配触发和计数器溢出触发
可选择初始输出电平选择
PWM输出的固定值可配
PWM空闲状态下的输出可配
支持刹车功能
支持硬件自动触发ADC采样
11.3. 功能描述
11.3.1. 模块结构框图
PWM 模块结构如 图 25 所示。
图 25 PWM 模块结构框图
11.3.2. 时钟分频
通过 CRx 寄存器 CLKSRC 和 CLKDIV位,可进行 PWM 工作时钟频率配置,支持工作时钟的分频范围为系统时钟的 1-1024 倍。
11.3.3. 死区保护
PWM 输出时 Dead Zone(死区)的作用是在电平翻转时插入一个时间间隔,避免关闭前一个设备和打开后一个设备时,因为开关速度的问题,出现同时开启状态而增加负荷的情况(在没有彻底关闭前打开了后一个设备),尤其是电流过大时容易造成短路等损坏设备。
此 PWM 模块每一路 PWM 的死区都独立配置,在独立模式和中心对称模式下均可配。效果为将上升沿推后指定周期。
当高电平周期设置为全 0 或者等于周期数,即占空比设置为 0 或 100 时,死区设置失效,此时输出电平为全低或全高。
死区示意图如 图 26 所示:
图 26 PWM 死区示意图
11.3.4. 计数器的启动与停止
边沿对齐模式
向上计数时,如 图 27 中如果IDLEAN为低,则需要插入死区,否则无死区。
START信号为上升沿触发,立即生效(系统时钟)。
STOP信号为高电平期间停止,低电平期间继续计数,立即生效(系统时钟)。
如 图 27 所示:
图 27 边沿对齐模式下向上计数时计数器启动与停止波形
向下计数时,如 图 28 所示,如果IDLEA为低,则需要插入死区,否则无死区。
图 28 边沿对齐模式下向下计数时计数器启动与停止波形
中心对齐模式
波形如 图 29 所示:
图 29 中心对齐模式下计数器启动与停止波形
非对称中心对齐模式
波形如 图 30 所示:
图 30 非对称中心对齐模式下计数器启动与停止波形
11.3.5. 计数器计数过程
边沿对齐模式
波形如 图 31 所示:
图 31 边沿对齐模式下计数器计数过程波形
中心对称模式
波形如 图 32 所示:
图 32 中心对称模式下计数器计数过程波形
HWHALT 控制和 SWHALT 控制情况下波形如 图 33 所示:
图 33 HWHALT 控制和 SWHALT 控制情况下
11.3.6. PWM 外部信号配置说明

图 34 PWM外部信号配置
备注
注:ext_event[0~1] 分别接 PWM_EVT0~1,ext_event[2~4] 分别接 SWEV0-2,ext_event[5~6] 分别接 TIMER0~1*
11.3.7. 硬件刹车控制和软件刹车控制
刹车功能可以控制x组y路PWM在BRK过程中输出电平的值,可以通过配置BRKCRx寄存器配置。
刹车功能同时可以控制在BRK过程中计数器是否停止计数。可通过配置BRKCRx寄存器STPCNT位配置在刹车过程中计数器是否继续计数或停止计数并清零。
刹车功能也可以控制在BRK信号撤销后PWM信号是否立即变为原始信号或刹车BRK的值直到当前计数周期溢出,PWM的信号才会跟随原始信号进行翻转。可通过配置BRKCRx寄存器OFFA/OFFB位分别配置A路信号和B路信号。
硬件刹车控制和软件刹车控制计数器计数波形如 图 35 所示:
图 35 硬件刹车控制和软件刹车控制计数器计数情况
BRK过程并不会影响计数器的周期数、对比值等内容,仅仅控制计数器是否完成一次重新启动。
11.3.8. 计数器重载
RELOAD信号为上升沿触发,不立即生效,需等到计数器溢出后生效。
计数器的RELOAD (重载)动作包含三个源头:由START动作引起、由主动CPU发起、由外部信号发起。
由START动作引起:CPU通过软件或硬件发起一次计数启动(START动作)时,完成自动重载。当计数器第一次启动或计数器从IDLE状态被重新启动时,都会在进入ACTIVE状态之后,自动完成重载动作。
由主动CPU发起:CPU通过写RELOAD寄存器
A:当CPU配置RELOAD_EN有效时,每当RPT_CNTER计到0且计数器溢出时,都会完成一次自动重载,即周期性的自动重载
B:当CPU配置RESTART_PWMX为1时,计数器会自动完成一次重载+重新启动的动作,即立即重载
外部信号发起:当发生EVMUXx寄存器中RELOAD所配置的ext_event[x]信号(ext_event上升沿),且RELOAD_EN有效时,计数器也会自动完成一次重载+重新启动动作,与CPU发起的立即重载类似
可通过配置IEx寄存器RELOADEN位配置计数器重载中断使能,IFx寄存器查看重载状态,此状态位为写1清零。
如 图 36 所示:
图 36 计数器重载波形
注:ext_event为计数器硬件触发信号,可以完成如下操作:
(1)计数器启动,上升沿启动
(2)计数器停止,高电平时停止,可以配置为停止到当前值,还是初始值(向上计数情况下,初始值是0,向下计数情况下,初始值是PERIOD)
(3)计数器暂停,高电平期间暂停,低电平期间正常计数
(4)寄存器REALOAD,上升沿触发,在当前周期溢出时完成RELOAD动作
(5)输出MASK,低电平期间PWM正常输出,高电平期间PWM被MASK到指定值
11.3.9. PWM移相
在使用移相功能时,我们通常使用重启PWM来实现。
如在PWMx计数到周期六分之一时,对PWMx执行一次RESTERT,PWMx将从重新计数,及波形延迟了360/60度相位。
波形示意图如 图 37 所示:
图 37 PWM移相示意图
11.3.10. PWM信号产生波形
以A路信号为例说明:
边沿对齐模式:
图 38 边沿对齐模式下PWM信号产生波形
中心对齐模式:
图 39 中心对齐模式下PWM信号产生波形
非对称中心对齐模式:
图 40 非对称中心对齐模式下PWM信号产生波形
BRK情况下中心对齐模式:
图 41 BRK中心对齐模式下PWM信号产生波形
11.3.11. TRIGGER控制
PWM模块在计数过程中,可以根据配置输出三种trigger信号:
PWM计数器比较匹配触发:
PWM计数器在计数过程中,当计到TRIG_CNT中配置的参考值时,就会产生一个周期的trig信号。根据配置,可以将该trig信息映射到输出的trig[7:0]信号上,且输出宽度可以配置,以4个计数周期为单位进行设置,最小长度为0个(即不输出PWM_TRIG,只输出ADC_TRIG),最大长度为252个计数
当重复计数功能有效时,trig信号会在最后一次重复计数时产生。
ADC触发:
在PWM_TRIG输出宽度的正中间,会输出一个pclk的ADC_TRIG信号,用于触发ADC采样。
PWM计数器溢出触发:
当计数器溢出TRIG使能,且计数器发生向上溢出或向下溢出时,会产生一个pclk周期的TRIG信号,与自定义TRIG一致,可以根据配置将该trig信息映射到输出的trig[7:0]信号上。
TRIGGER控制波形如 图 42 所示:
图 42 TRIGGER控制波形
11.3.12. 重复计数功能
重复计数器主要用于控制寄存器RELOAD的时机,在周期性自动重载情况下,只有当重复计数器计为0,且计数器溢出时,才会完成重载动作。
图 43 重复计数功能波形图
11.3.13. 触发SAR ADC采样
PWM在任意模式下可以触发ADC,每一路输出独立的ADC触发信号,且每个周期可以设置1个ADC触发点,每个PWM只输出一个触发信号,不区分A.B分别触发。
将SAR ADC配置寄存器(CTRL)中TRIG方式设置为PWM触发。每路PWM对应1个ADTRG值,当PWM计数到指定值,可触发ADC进行采样。
另外,当使用PWM触发ADC时,需将CPU触发通道值与PWM通道触发通道值一致才能触发ADC,即ADC->CHSEL.SW和ADC->CHSEL.PWM的值必须一样,PWM触发ADC才有效。
具体配置方式如下:
配置PWMx路触发ADC控制寄存器,设置触发点是否有效以及PWM触发ADC时间点。
配置ADC的触发方式为PWM触发
使能PWM模块EN位,当计数值到达MATCH设置值时,触发ADC配置寄存器(CTRL)中选中的通道(CHx)进行采样,采样完成后,将产生EOC标志位,并产生ADC中断
示意图如 图 44 所示:
图 44 PWM触发ADC采样示意图
11.3.14. 电平翻转
PWM模块支持电平翻转,可通过配置OUTCRx寄存器中INVA和INVB位,分别对应A通道和B通道。
如 图 45 所示:
图 45 电平翻转示意图
11.3.15. 挖坑及ADC触发功能
挖坑功能指的是外部信号在高/低电平期间输出被MASK到指定电平,也就是我们下面提到的MASK功能。
当MASK被使能之后,MASK_A/AN/B/BN有效期间,PWM输出被MASK到的值。MASK无效期间,PWM_A/AN/B/BN输出正常值。
此功能可以在PWM波形的任何位置挖坑,挖坑的方向可以是向上、也可以是向下,且A和AN的挖坑方向是可独立配置的。
MASK配置对所有的A/B/AN/BN路同时有效。
PWM输出可以配置为对MASK信号立即生效,还是在原始信号下一次翻转时生效。
可以在PWM_MASK_A/AN/B/BN有效期间,通过配置CMPTRGx寄存器中ATP位选择ADC_TRIG信号产生时机,可以在pwm_trig信号产生的同时,1/8,2/8······7/8等时间点生成一个系统时钟的adc_trig信号
在中心对齐模式下,通过配置CMPTRGx寄存器中DIR位,选择向上/向下计数过程中产生TRIG信号。
通过配置CMPTRGx寄存器中WIDTH位,设置 Trigger计数器产生的匹配信号输出宽度,范围为0-252个计数时钟长度
挖坑前波形如图 图 46 所示。挖坑后波形如图 图 47 所示,设置在 PWM0 计数器等于 1500 处在波形上挖两个电平为零的坑,并在坑的 3/8 宽度位置启动 ADC。
PWM_CmpTrigger(PWM0, 1500, PWM_DIR_UP, 50, PWM_TRG_1, 3),此语句为设置PWM0向上计数,计数值等于1500时发出一个触发信号,触发信号发送到 trigger1。
PWM_OutMask(PWM0, PWM_CH_A, PWM_EVT_1, 0, PWM_EVT_1, 0),词语为设置PWM0A和PWM0AN在event1为高时分别输出0和0。
图 46 挖坑前波形
图 47 挖坑后波形
11.4. 寄存器映射
名称 |
偏移 |
复位值 |
---|---|---|
PWM0 BASE:0x40046000 PWM1 BASE:0x40046080 |
||
CRx |
0x0 |
0x00000000 |
OCRx |
0x4 |
0x00000000 |
BRKCRx |
0x8 |
0x00000000 |
BRKINx |
0xC |
0x00000000 |
PERIODx |
0x20 |
0x00000000 |
CMPAx |
0x24 |
0x00000000 |
CMPBx |
0x28 |
0x00000000 |
DZAx |
0x2C |
0x00000000 |
DZBx |
0x30 |
0x00000000 |
CMPA2x |
0x34 |
0x00000000 |
CMPB2x |
0x38 |
0x00000000 |
OVFTRGx |
0x50 |
0x00000000 |
CMPTRGx |
0x54 |
0x00000000 |
CMPTRG2x |
0x58 |
0x00000000 |
EVMUXx |
0x60 |
0x00000000 |
EVMSKx |
0x64 |
0x00000000 |
IEx |
0x70 |
0x00000000 |
IFx |
0x74 |
0x00000000 |
VALUEx |
0x78 |
0x0000FFFF |
SRx |
0x7C |
0x00000000 |
START |
0x400 |
0x00000000 |
SWBRK |
0x404 |
0x00000000 |
RESET |
0x408 |
0x00000000 |
RELOADEN |
0x40C |
0x00000000 |
PULSE |
0x410 |
0x00000000 |
FILTER |
0x414 |
0x00000000 |
BRKPOL |
0x418 |
0x00000000 |
BRKIE |
0x41C |
0x00000000 |
BRKIF |
0x420 |
0x00000000 |
EVSR |
0x424 |
0x00000000 |
SWEV |
0x428 |
0x00000000 |
11.5. 寄存器描述
11.5.1. PWM的工作模式控制寄存器CRx (x=0,1)
偏移: 0x0 |
复位值: 0x00000000 |
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
RPTNUM |
|||||||
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
CLKDIV |
|||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
CLKDIV |
CLKSRC |
DIR |
MULT |
MODE |
位域 |
名称 |
类型 |
描述 |
---|---|---|---|
31:24 |
RO |
||
23:16 |
RPTNUM |
R/W |
重载配置寄存器 n:表示重复计数n+1次之后重载 注1:该重复计数器仅应用于重载动作,仅当重复计数值计到0且计数器溢出之后,才会完成重载动作 注2:计数器每向上或者向下计数一轮,重复计数器减1,即中心对齐模式下每计一个完整的周期,该重复计数器减2 |
15:6 |
CLKDIV |
R/W |
PWM工作时钟频率相对于系统时钟的分频比选择: 0:1分频; 1:2分频; 2:3分频; 以此类推 1023:1024分频 注:最多支持1024分频 |
5:4 |
CLKSRC |
R/W |
第x组PWM的计数时钟选择 00:使用PWM_DIV分频后的时钟计数 01:使用Pulse0作为PWM的计数时钟 10:使用Pulse1作为PWM的计数时钟 11:保留 |
3 |
DIR |
R/W |
初始计数方向配置寄存器 0:向上计数模式 1:向下计数模式 注1:当MODEx=2’b01和2’b10时,表示中心对齐模式下计数器在前半周期的计数方向 注2:向上计数是计数器启动之后初始值为低(begin_with_low)的模式,向下计数是计数器启动之后初始值为高(begin_with_high)的模式 |
2 |
MULT |
R/W |
第x组PWM的计数模式 0:单次计数模式 1:多次计数模式 注1:单次计数模式下,计数器完成一次计数后产生溢出状态 注2:多次计数模式下,计数器始终处在计数过程当中,且每轮计数完成都会产生溢出状态 |
1:0 |
MODE |
R/W |
第x组PWM的工作模式控制 00:边沿对齐模式 01:中心对齐模式,计数器双向计数 10:非对称中心对齐模式,计数器双向计数 11:保留 注1:边沿对齐模式和中心对齐模式下,不论计数器是向上计数还是向下计数,均以CMPA/CMPB为参考值,输出对应的高电平宽度 注2:非对称中心对齐模式下,向上计数过程中以CMPA/CMPB为参考值,向下计数过程中以CMPA2/CMPB2为参考值,输出对应的高电平宽度 |
11.5.2. PWM配置控制OCRx(x=0,1)
偏移: 0x4 |
复位值: 0x00000000 |
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
FORCEBN |
FORCEAN |
FORCEB |
FORCEA |
||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
INVBN |
INVAN |
INVB |
INVA |
IDLEBN |
IDLEAN |
IDLEB |
IDLEA |
位域 |
名称 |
类型 |
描述 |
---|---|---|---|
31:12 |
RO |
||
11 |
FORCEBN |
R/W |
1:工作时将BN路pwmobn强制输出,电平状态由IDLEBNx决定 0:工作时BN路pwmobn正常输出 |
10 |
FORCEAN |
R/W |
1:工作时将AN路pwmoan强制输出,电平状态由IDLEANx决定 0:工作时AN路pwmoan正常输出 |
9 |
FORCEB |
R/W |
1:工作时将B路pwmob强制输出,电平状态由IDLEBx决定 0:工作时B路pwmob正常输出 |
8 |
FORCEA |
R/W |
1:工作时将A路pwmoa强制输出,电平状态由IDLEAx决定 0:工作时A路pwmoa正常输出 |
7 |
INVBN |
R/W |
1:工作时将BN路pwmobn反向后输出 0:工作时将BN路pwmobn按原始值输出 注1:该位直接操作PWM的最终输出电平(死区计算、PWMMASK、BRK操作之后) |
6 |
INVAN |
R/W |
1:工作时将AN路pwmoan反向后输出 0:工作时将AN路pwmoan按原始值输出 注1:该位直接操作PWM的输出电平(死区计算、PWMMASK、BRK操作之后) |
5 |
INVB |
R/W |
1:工作时将B路pwmob反向后输出 0:工作时将B路pwmob按原始值输出 注1:该位直接操作PWM的输出电平(死区计算、PWMMASK、BRK操作之后) |
4 |
INVA |
R/W |
1:工作时将A路pwmoa反向后输出 0:工作时将A路pwmoa按原始值输出 注1:该位直接操作PWM的输出电平(死区计算、PWMMASK、BRK操作之后) |
3 |
IDLEBN |
R/W |
1:空闲时BN路pwmobn的原始输出为高 0:空闲时BN路pwmobn的原始输出为低 |
2 |
IDLEAN |
R/W |
1:空闲时AN路pwmoan的原始输出为高 0:空闲时AN路pwmoan的原始输出为低 |
1 |
IDLEB |
R/W |
1:空闲时B路pwmob的原始输出为高 0:空闲时B路pwmob的原始输出为低 |
0 |
IDLEA |
R/W |
1:空闲时A路pwmoa的原始输出为高 0:空闲时A路pwmoa的原始输出为低 |
11.5.3. BRK控制寄存器BRKCRx(x=0,1)
偏移: 0x8 |
复位值: 0x00000000 |
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
HWHALT |
SWHALT |
||||||
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
STPCNT |
OUTBN |
OUTAN |
|||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
OFFB |
OUTB |
OFFA |
OUTA |
位域 |
名称 |
类型 |
描述 |
---|---|---|---|
31:18 |
RO |
||
17 |
HWHALT |
RO |
当前外部激活的BRK状态 1:正在进行BRK 0:没有进行BRK |
16 |
SWHALT |
RO |
当前软件激活的BRK状态 1:正在进行BRK 0:没有进行BRK |
15:11 |
RO |
||
10 |
STPCNT |
R/W |
第x组计数器在BRK过程中的状态 0:计数器不受BRK信号影响 1:停止并清除计数值 |
9 |
OUTBN |
R/W |
第x组BN路在BRK过程中输出的电平值 1:刹车过程中输出高电平 0:刹车过程中输出低电平 |
8 |
OUTAN |
R/W |
第x组AN路在BRK过程中输出的电平值 1:刹车过程中输出高电平 0:刹车过程中输出低电平 |
7:6 |
|||
5 |
OFFB |
R/W |
B路信号在BRK信号撤消之后 0:PWM输出信号立即变回原始信号 1:保持BRK值直到当前计数周期溢出,PWM信号才会跟随原始信号进行翻转 注1:当该位被配置为1时,需要软件保证STPCNT为0(计数器能够正常计数),当STPCNT为1时,该位配置1无效果,按为0时的方式发生作用。 |
4 |
OUTB |
R/W |
第x组B路在BRK过程中输出的电平值 1:刹车过程中输出高电平 0:刹车过程中输出低电平 |
3:2 |
RO |
||
1 |
OFFA |
R/W |
A路信号在BRK信号撤消之后 0:PWM信号立即变回原始信号 1:保持BRK值直到当前计数周期溢出,PWM信号才会跟随原始信号进行翻转 注1:当该位被配置为1时,需要软件保证STPCNT为0(计数器能够正常计数),当STPCNT为1时,该位配置1无效果,按为0时的方式发生作用。 |
0 |
OUTA |
R/W |
第x组A路在BRK过程中输出的电平值 1:刹车过程中输出高电平 0:刹车过程中输出低电平 |
备注
注1:SWHALT和HWHALT都受BRKCTRL寄存器控制
注2:配置该BRKCRx寄存器之前,应先配置模块BRK功能的全局寄存器BRKPOL、BRKIE.
11.5.4. 外部BRK选择寄存器BRKINx(x=0,1)
偏移: 0xC |
复位值: 0x00000000 |
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
BRK2B |
BRK1B |
BRK0B |
BRK2A |
BRK1A |
BRK0A |
位域 |
名称 |
类型 |
描述 |
---|---|---|---|
31:7 |
RO |
||
6 |
BRK2B |
R/W |
第x组B路是否受外部硬件BRK2信号的影响 0:对应刹车信号失效 1:对应刹车信号有效 注1:B/BN路同时受BRK2B控制 |
5 |
BRK1B |
R/W |
第x组B路是否受外部硬件BRK1信号的影响 0:对应刹车信号失效 1:对应刹车信号有效 注1:B/BN路同时受BRK1B控制 |
4 |
BRK0B |
R/W |
第x组B路是否受外部硬件BRK0信号的影响 0:对应刹车信号失效 1:对应刹车信号有效 注1:B/BN路同时受BRK0B控制 |
3 |
RO |
||
2 |
BRK2A |
R/W |
第x组A路是否受外部硬件BRK2信号的影响 0:对应刹车信号失效 1:对应刹车信号有效 注1:A/AN路同时受BRK2A控制 |
1 |
BRK1A |
R/W |
第x组A路是否受外部硬件BRK1信号的影响 0:对应刹车信号失效 1:对应刹车信号有效 注1:A/AN路同时受BRK1A控制 |
0 |
BRK0A |
R/W |
第x组A路是否受外部硬件BRK0信号的影响 0:对应刹车信号失效 1:对应刹车信号有效 注1:A/AN路同时受BRK0A控制 |
11.5.5. PWM的周期数PERIODx(x=0,1)
偏移: 0x20 |
复位值: 0x00000000 |
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
PERIOD |
|||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
PERIOD |
位域 |
名称 |
类型 |
描述 |
---|---|---|---|
31:16 |
RO |
||
15:0 |
PERIOD |
R/W |
第x组PWM的周期数 注1:实际运行的周期数是该值加1 |
备注
注1:当周期数等于0时,原始输出保持空闲状态的值
注2:当高电平值CMPA/CMPB为0时,输出翻转不考虑死区值,A/B原始输出保持为0,AN/BN原始输出保持为1
注3:当高电平值CMPA/CMPB小于死区值,A/B原始输出保持为0。
注4:非对称中心对齐模式下,当翻转比较值1大于周期数时,比较值1配置无效,A/B原始输出在周期值向下翻转为1,AN/BN因为此时翻转比较值+死区值也一定大于周期数,因此AN/BN原始输出此时翻转为0。
11.5.6. A路PWM的高电平宽度CMPAx(x=0,1)
偏移: 0x24 |
复位值: 0x00000000 |
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
CMPA |
|||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
CMPA |
位域 |
名称 |
类型 |
描述 |
---|---|---|---|
31:16 |
RO |
||
15:0 |
CMPA |
R/W |
第x组A路PWM的高电平宽度 注1:边沿触发模式下,不论向上还是向下计数模式,均以此比较值作为高电平宽度。 注2:中心对齐模式和非对称中心对齐模式下,此比较值为向上计数过程中的高电平宽度值。 |
11.5.7. B路PWM的高电平宽度CMPBx(x=0,1)
偏移: 0x28 |
复位值: 0x00000000 |
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
CMPB |
|||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
CMPB |
位域 |
名称 |
类型 |
描述 |
---|---|---|---|
31:16 |
RO |
||
15:0 |
CMPB |
R/W |
第x组B路PWM的高电平宽度 |
11.5.8. A路死区长度控制DZAx(x=0,1)
偏移: 0x2C |
复位值: 0x00000000 |
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
DZA |
|||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
DZA |
位域 |
名称 |
类型 |
描述 |
---|---|---|---|
31:10 |
Reserve |
RO |
|
9:0 |
DZA |
R/W |
第x组A路死区长度控制。 注1:当占空比为0或100时死区失效 注2:只要出现波形上升沿都会计算死区值 例如:当idle值为0,向下计数,开始启动时也会计算死区值。 |
11.5.9. B路死区长度控制DZBx (x=0,1)
偏移: 0x30 |
复位值: 0x00000000 |
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
DZB |
|||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
DZB |
位域 |
名称 |
类型 |
描述 |
---|---|---|---|
31:10 |
RO |
||
9:0 |
DZB |
R/W |
第x组B路死区长度控制 |
11.5.10. A路PWM的高电平宽度2寄存器CMPA2x (x=0,1)
偏移: 0x34 |
复位值: 0x00000000 |
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
CMPA2 |
|||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
CMPA2 |
位域 |
名称 |
类型 |
描述 |
---|---|---|---|
31:16 |
RO |
||
15:0 |
CMPA2 |
R/W |
第x组A路PWM的高电平宽度2。 最小为0 注1:该寄存器仅非对称中心对齐模式下使用,在该模式下,计数器在向上计数过程中以CMPAx作为高电平宽度,向下计数过程中以CMPA2x作为高电平宽度 注2:CMPA2必须小于等于PERIODx,否则在向下计数过程中CMPA2按PERIODx计算,A原始输出始终保持1,AN原始输出始终保持0 |
11.5.11. B路PWM的高电平宽度2寄存器CMPB2x (x=0,1)
偏移: 0x38 |
复位值: 0x00000000 |
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
CMPB2 |
|||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
CMPB2 |
位域 |
名称 |
类型 |
描述 |
---|---|---|---|
31:16 |
RO |
||
15:0 |
CMPB2 |
R/W |
第x组B路PWM的高电平宽度2。 最小为0 注1:该寄存器仅非对称中心对齐模式下使用,在该模式下,计数器在向上计数过程中以CMPBx作为高电平宽度,向下计数过程中以CMPB2x作为高电平宽度 注2:CMPB2必须小于PERIODx,否则在向下计数过程中CMPB2按PERIODx计算,B原始输出始终保持1,BN原始输出始终保持0 |
11.5.12. 计数器溢出配置寄存器OVFTRGx(x=0,1)
偏移: 0x50 |
复位值: 0x00000000 |
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
MUX |
DNEN |
UPEN |
位域 |
名称 |
类型 |
描述 |
---|---|---|---|
31: 5 |
Reserve |
RO |
|
4:2 |
MUX |
R/W |
计数器溢出信号映射到哪一路trig输出 000:映射到trig[0] 001:映射到trig[1] 010:映射到trig[2] 011:映射到trig[3] 100:映射到trig[4] 101:映射到trig[5] 110:映射到trig[6] 111:映射到trig[7] |
1 |
DNEN |
R/W |
计数器向下溢出映射使能 1:向下溢出映射使能 0:向下溢出映射不使能 |
0 |
UPEN |
R/W |
计数器向上溢出映射使能 1:向上溢出映射使能 0:向上溢出映射不使能 |
11.5.13. 触发控制寄存器CMPTRGx (x=0,1)
偏移: 0x54 |
复位值: 0x00000000 |
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
ATP |
DIR |
WIDTH |
|||||
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
WIDTH |
MUX |
EN |
|||||
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
CMP |
|||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
CMP |
位域 |
名称 |
类型 |
描述 |
---|---|---|---|
31:29 |
ATP |
R/W |
ADC_TRIG信号产生时机选择位 000:表示当pwm_trig信号产生的同时,生成1个系统时钟的adc_trig信号 001:表示在pwm_trig信号持续时间的第1/8时间点处,生成1个系统时钟的adc_trig信号 010:表示在pwm_trig信号持续时间的第2/8时间点处,生成1个系统时钟的adc_trig信号 011:表示在pwm_trig信号持续时间的第3/8时间点处,生成1个系统时钟的adc_trig信号 100:表示在pwm_trig信号持续时间的第4/8时间点处,生成1个系统时钟的adc_trig信号 101:表示在pwm_trig信号持续时间的第5/8时间点处,生成1个系统时钟的adc_trig信号 110:表示在pwm_trig信号持续时间的第6/8时间点处,生成1个系统时钟的adc_trig信号 111:表示在pwm_trig信号持续时间的第7/8时间点处,生成1个系统时钟的adc_trig信号 注: 1:adc_trig相对于pwm_trig的偏移量为: 0+ ((bit[29] == 1) ? trig_cnt[15:3] : 0) +((bit[30] == 1 ) ? trig_cnt[15:2] : 0) +((bit[31] == 1 ) ? trig_cnt[15:1] : 0) 2:当pwm_trig宽度不能被8整除时,会按照如注1的情况进行近似计算。 |
28 |
DIR |
R/W |
中心对齐工作模式下,产生TRIG信号的时机 0:向上计数过程中产生TRIG信号 1:向下计数过程中产生TRIG信号 注1:仅在中心对齐模式和非对称中心对齐模式下有效 |
27:26 |
RO |
||
25:20 |
WIDTH |
R/W |
第x组Trigger计数器产生的匹配信号输出宽度 0:无输出 1:输出4个计数时钟长度 2:输出8个计数时钟长度 3:输出12个计数时钟长度 … 63:输出252个计数时钟长度 注1:每次计数时,会在计数中间产生一个pclk的trig_adc信号 注2:最多输出252个计数时钟宽度的PWM_TRIG(当系统时钟为125MHz,计数时钟与系统时钟一致的情况下,最多可以产生252*8ns =2.016 us的pwm_trig信号) 注3:当WIDTH配置为0时,不产生pwm_trig信号,只产生trig_adc信号 |
19:17 |
MUX |
R/W |
第x组Trigger计数器产生的匹配信号映射到哪一路trig输出 000:映射到trig[0] 001:映射到trig[1] 010:映射到trig[2] 011:映射到trig[3] 100:映射到trig[4] 101:映射到trig[5] 110:映射到trig[6] 111:映射到trig[7] |
16 |
EN |
R/W |
第x组Trigger计数器信号是否使能 1:使能 0:不使能 |
15:0 |
CMP |
R/W |
第x组计数器的值与此比较值相等时产生Trigger信号 注1:如果第x组计数器的值和此比较值的值相等,则trigger输出一个精度为4倍计数时钟的高脉冲,宽度可配置,且输出的pwm_trig能够跨计数器的周期。 |
11.5.14. 触发间隔周期配置寄存器2 CMPTRG2x (x=0,1)
偏移: 0x58 |
复位值: 0x00000000 |
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
INTV |
位域 |
名称 |
类型 |
描述 |
---|---|---|---|
31:3 |
RO |
||
2:0 |
INTV |
R/W |
触发间隔周期选择 000:每周期触发 001:间隔1周期触发一次 010:间隔2周期触发一次 011:间隔3周期触发一次 100:间隔4周期触发一次 101:间隔5周期触发一次 110:间隔6周期触发一次 111:间隔7周期触发一次 |
11.5.15. PWM外部信号选择寄存器EVMUXx(x=0,1)
偏移: 0x60 |
复位值: 0x00000000 |
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
MASKBN |
MASKAN |
||||||
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
MASKB |
MASKA |
||||||
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
RELOAD |
PAUSE |
||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
STOP |
START |
位域 |
名称 |
类型 |
描述 |
---|---|---|---|
31 |
RO |
||
30:28 |
MASKBN |
R/W |
BN路MASK功能选择寄存器 000:禁用外部信号控制BN路MASK 001:由ext_event[0]控制BN路MASK 010:由ext_event[1]控制BN路MASK 011:由ext_event[2]控制BN路MASK 100:由ext_event[3]控制BN路MASK 101:由ext_event[4]控制BN路MASK 110:由ext_event[5]控制BN路MASK 111:由ext_event[6]控制BN路MASK |
27 |
RO |
||
26:24 |
MASKAN |
R/W |
AN路MASK功能选择寄存器 000:禁用外部信号控制AN路MASK 001:由ext_event[0]控制AN路MASK 010:由ext_event[1]控制AN路MASK 011:由ext_event[2]控制AN路MASK 100:由ext_event[3]控制AN路MASK 101:由ext_event[4]控制AN路MASK 110:由ext_event[5]控制AN路MASK 111:由ext_event[6]控制AN路MASK |
23 |
RO |
||
22:20 |
MASKB |
R/W |
B路MASK功能选择寄存器 000:禁用外部信号控制B路MASK 001:由ext_event[0]控制B路MASK 010:由ext_event[1]控制B路MASK 011:由ext_event[2]控制B路MASK 100:由ext_event[3]控制B路MASK 101:由ext_event[4]控制B路MASK 110:由ext_event[5]控制B路MASK 111:由ext_event[6]控制B路MASK |
19 |
RO |
||
18:16 |
MASKA |
R/W |
A路MASK功能选择寄存器 000:禁用外部信号控制A路MASK 001:由ext_event[0]控制A路MASK 010:由ext_event[1]控制A路MASK 011:由ext_event[2]控制A路MASK 100:由ext_event[3]控制A路MASK 101:由ext_event[4]控制A路MASK 110:由ext_event[5]控制A路MASK 111:由ext_event[6]控制A路MASK |
15 |
RO |
||
14:12 |
RELOAD |
R/W |
计数器外部重启功能选择寄存器 000:禁用外部信号重启计数器 001:由ext_event[0]重启计数器 010:由ext_event[1]重启计数器 011:由ext_event[2]重启计数器 100:由ext_event[3]重启计数器 101:由ext_event[4]重启计数器 110:由ext_event[5]重启计数器 111:由ext_event[6]重启计数器 注1:外部发起的重启请求,当RELOAD_EN为1且发生上升沿时,会完成一次“清除+重载+启动”的功能,清除的内容为当前计数值、当前的分频值、当前重复计数值。然后重新启动一次全新的计数过程。 |
11 |
RO |
||
10:8 |
PAUSE |
R/W |
计数器外部暂停功能选择寄存器 000:禁用外部信号暂停计数器 001:由ext_event[0]暂停计数器 010:由ext_event[1]暂停计数器 011:由ext_event[2]暂停计数器 100:由ext_event[3]暂停计数器 101:由ext_event[4]暂停计数器 110:由ext_event[5]暂停计数器 111:由ext_event[6]暂停计数器 注1:高电平有效 注2:计数器被暂停之后,计数器暂停在当前计数值,当选中的ext_event变为低(不再暂停)之后,计数器马上继续计数 注3:当检测到外部暂停时,计数器最少保持一个计数时钟的暂停 |
7 |
RO |
||
6:4 |
STOP |
R/W |
计数器外部停止功能选择寄存器 000:禁用外部信号停止计数器 001:由ext_event[0]停止计数器 010:由ext_event[1]停止计数器 011:由ext_event[2]停止计数器 100:由ext_event[3]停止计数器 101:由ext_event[4]停止计数器 110:由ext_event[5]停止计数器 111:由ext_event[6]停止计数器 注1:高电平有效 注2:计数器被停止之后,需要等待选中的ext_event变为低(停止计数的功能失效),再经过CPU或者硬件启动,才会开始计数。 |
3 |
RO |
||
2:0 |
START |
R/W |
计数器外部启动功能选择寄存器 000:禁用外部信号启动计数器 001:由ext_event[0]启动计数器 010:由ext_event[1]启动计数器 011:由ext_event[2]启动计数器 100:由ext_event[3]启动计数器 101:由ext_event[4]启动计数器 110:由ext_event[5]启动计数器 111:由ext_event[6]启动计数器 |
备注
注1:ext_event[0~4]分别接PWM_EVT0~4,ext_event[5~6]分别接TIMER0~1
注:2:计数器启动为上升沿触发,立即生效
注3:计数器停止为高电平停止,低电平释放,立即生效(系统时钟域)
注4:计数器暂停为高电平暂停,低电平继续计数,输入信号会同步到计数周期上去,当外部信号的长度小于一个计数时钟时,计数器也会暂停一个计数时钟。
注5:寄存器重启为上升沿触发,当LOAD_EN为1时,立即生效
注6:MASK为高电平时输出设定值,低电平时输出正常值。A/AN/B/BN路输出MASK可以配置为立即生效,也可以配置为等到当前周期溢出之后才会MASK到设定值。当MASK信号撤消之后,也可以配置为立即生效,或者会继续保留MASK值直到当前周期溢出。
11.5.16. PWM外部信号配置寄存器EVMSKx (x=0,1)
偏移: 0x64 |
复位值: 0x00000000 |
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
STPCLR |
|||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
IMME |
OUTBN |
OUTAN |
OUTB |
OUTA |
位域 |
名称 |
类型 |
描述 |
---|---|---|---|
31:9 |
RO |
||
8 |
STPCLR |
R/W |
计数器外部停止期间计数器是否清除 1:清除 0:保持当前值,不清除 注1:仅在EV_STOP,即计数器外部停止功能下有效 注2:EV_STOP信号引起的计数器停止和清除动作均立即生效,精确到系统时钟域 |
7:5 |
RO |
||
4 |
IMME |
R/W |
MASK信号是否立即生效 1:立即生效 0:保持当前值,直到计数溢出之后才被MASK 注1:MASK信号撤消时,配置与此处一致 注2:立即生效会精确到系统时钟域; 注3:溢出之后被MASK时,PWM输出会同步到计数器溢出,使用系统时钟对外部输入的MASK触发信号进行采样,当采到MASK触发源为1时,PWM输出被MASK的时间最少持续一个计数溢出。当输入的有效MASK触发信号出现在跨计数器溢出点的情况时,PWM输出MASK值会持续两次计数溢出 |
3 |
OUTBN |
R/W |
输出信号PWMBN被MASK的目标电平值 0:表示MASK到0 1:表示MASK到1 |
2 |
OUTAN |
R/W |
输出信号PWMAN被MASK的目标电平值 0:表示MASK到0 1:表示MASK到1 |
1 |
OUTB |
R/W |
输出信号PWMB被MASK的目标电平值 0:表示MASK到0 1:表示MASK到1 |
0 |
OUTA |
R/W |
输出信号PWMA被MASK的目标电平值 0:表示MASK到0 1:表示MASK到1 |
11.5.17. 中断使能寄存器IEx (x=0,1)
偏移: 0x70 |
复位值: 0x00000000 |
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
RELOADEN |
DNCMPB |
DNCMPA |
UPCMPB |
UPCMPA |
DNOVF |
UPOVF |
位域 |
名称 |
类型 |
描述 |
---|---|---|---|
31: 7 |
RO |
||
6 |
RELOADEN |
R/W |
第x组PWM计数器重载中断使能 1:使能 0:不使能 |
5 |
DNCMPB |
R/W |
第x组PWM计数器向下计数过程中B路上升沿中断使能 1:使能 0:不使能 |
4 |
DNCMPA |
R/W |
第x组PWM计数器向下计数过程中A路上升沿中断使能 1:使能 0:不使能 |
3 |
UPCMPB |
R/W |
第x组PWM计数器向上计数过程中B路下降沿中断使能 1:使能 0:不使能 |
2 |
UPCMPA |
R/W |
第x组PWM计数器向上计数过程中A路下降沿中断使能 1:使能 0:不使能 |
1 |
DNOVF |
R/W |
第x组PWM计数器向下溢出中断使能 1:使能 0:不使能 |
0 |
UPOVF |
R/W |
第x组PWM计数器向上溢出中断使能 1:使能 0:不使能 |
11.5.18. PWM的中断状态寄存器IFx(x=0,1)
偏移: 0x74 |
复位值: 0x00000000 |
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
RELOADEN |
DNCMPB |
DNCMPA |
UPCMPB |
UPCMPA |
DNOVF |
UPOVF |
位域 |
名称 |
类型 |
描述 |
---|---|---|---|
31: 7 |
RO |
||
6 |
RELOADST |
R/W |
第x组PWM计数器重载状态,写1清除 1:已经发生 0:没有发生 注1:如下情况下会置位重载状态 1:当reload_en使能之后,每次计数器溢出(向下溢出或者向下溢出)时的自动reload 2:当reload_en使能之后,每个ev_recount发生时的reload 注2:当计数器在start(CPU引起或者ev_start)时,会有一个自动reload,该动作不会置位重载状态 注3:当CPU配置RESTART_PWMX寄存器时,同样也会有一个自动reload,该动作也不会置位重载状态 |
5 |
DNCMPB |
R/W |
第x组PWM计数器向下计数过程中B路上升沿发生状态,写1清除 1:已经发生 0:没有发生 |
4 |
DNCMPA |
R/W |
第x组PWM计数器向下计数过程中A路上升沿发生状态,写1清除 1:已经发生 0:没有发生 |
3 |
UPCMPB |
R/W |
第x组PWM计数器向上计数过程中B路下降沿发生状态,写1清除 1:已经发生 0:没有发生 |
2 |
UPCMPA |
R/W |
第x组PWM计数器向上计数过程中A路下降沿发生状态,写1清除 1:已经发生 0:没有发生 |
1 |
DNOVF |
R/W |
第x组PWM计数器向下溢出状态,写1清除 1:已经发生溢出 0:没有发生溢出 |
0 |
UPOVF |
R/W |
第x组PWM计数器向上溢出状态 1:已经发生溢出 0:没有发生溢出 注1:写1清除 |
11.5.19. 计数器的当前计数值VALUEx(x=0,1)
偏移: 0x78 |
复位值: 0x0000FFFF |
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
CNT |
|||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
CNT |
位域 |
名称 |
类型 |
描述 |
---|---|---|---|
31:16 |
RO |
||
15:0 |
CNT |
R/W |
第x组PWM的当前计数值。 |
11.5.20. 计数器的当前运行状态SRx(x=0,1)
偏移: 0x7C |
复位值: 0x00000000 |
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
OUTBN |
|||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
OUTAN |
OUTB |
OUTA |
DIR |
STAT |
位域 |
名称 |
类型 |
描述 |
---|---|---|---|
31:9 |
RO |
||
8 |
OUTBN |
RO |
第x组PWM计数器当前BN路输出 |
7 |
OUTAN |
RO |
第x组PWM计数器当前AN路输出 |
6 |
OUTB |
RO |
第x组PWM计数器当前B路输出 |
5 |
OUTA |
RO |
第x组PWM计数器当前A路输出 |
4 |
DIR |
RO |
第x组PWM计数器当前计数方向 0:向上计数过程当中 1:向下计数过程当中 |
3:2 |
RO |
||
1:0 |
STAT |
RO |
第x组PWM的计数器状态 00:IDLE状态,计数器不工作 01:ACTIVE状态,计数器正在计数过程中 10:PAUSE状态,计数器被暂停 |
11.5.21. PWM启动寄存器START
偏移: 0x400 |
复位值: 0x00000000 |
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
PWM1 |
PWM0 |
位域 |
名称 |
类型 |
描述 |
---|---|---|---|
31: 2 |
RO |
||
1 |
PWM1 |
R/W |
PWM1计数器启动位 1:启动 0:停止 注1:CPU写该寄存器时,写1表示启动计数器,写0表示停止计数器。 注2:CPU回读时,为1表示发生了CPU启动或者外部硬件启动,为0表示计数器未启动 注3:单次计数模式完成、BRK停止、外部硬件停止发生时,该位也会被置0 |
0 |
PWM0 |
R/W |
PWM0计数器启动位 1:启动 0:停止 注1:CPU写该寄存器时,写1表示启动计数器,写0表示停止计数器。 注2:CPU回读时,为1表示发生了CPU启动或者外部硬件启动,为0表示计数器未启动 注3:单次计数模式完成、BRK停止、外部硬件停止发生时,该位也会被置0 |
11.5.22. 软件BRK操作启动寄存器SWBRK
偏移: 0x404 |
复位值: 0x00000000 |
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
PWM1B |
PWM0B |
||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
PWM1A |
PWM0A |
位域 |
名称 |
类型 |
描述 |
---|---|---|---|
31:10 |
RO |
||
9 |
PWM1B |
R/W |
PWM1的B路软件BRK启动 0:不启动 1:启动 |
8 |
PWM0B |
R/W |
PWM0的B路软件BRK启动 0:不启动 1:启动 |
7:2 |
RO |
||
1 |
PWM1A |
R/W |
PWM1的A路软件BRK启动 0:不启动 1:启动 |
0 |
PWM0A |
R/W |
PWM0的A路软件BRK启动 0:不启动 1:启动 |
11.5.23. PWM复位寄存器RESET
偏移: 0x408 |
复位值: 0x00000000 |
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
PWM1 |
PWM0 |
位域 |
名称 |
类型 |
描述 |
---|---|---|---|
31:2 |
RO |
||
1 |
PWM1 |
R/W |
PWM1寄存器复位操作 1:复位 0:不复位 注1:软件置位,硬件自动清0 注2:复位范围为该组PWM的全部逻辑 |
0 |
PWM0 |
R/W |
PWM0寄存器复位操作 1:复位 0:不复位 注1:软件置位,硬件自动清0 注2:复位范围为该组PWM的全部逻辑 |
11.5.24. PWM重载请求寄存器RELOADEN
偏移: 0x40C |
复位值: 0x00000000 |
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
RESTART_PWM1 |
RESTART_PWM0 |
||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
RESTART_PWM1 |
RESTART_PWM0 |
位域 |
名称 |
类型 |
描述 |
---|---|---|---|
31:10 |
RO |
||
9 |
RESTART_PWM1 |
R/W |
PWM1重新启动 软件置位,硬件自动清除 注1:计数器正常计数过程中置位, PWM会先完成一次“清除+加载”动作,清除的内容为当前计数值、当前的分频值、当前重复计数值。然后重新启动一次全新的计数过程。 注2:当RESTART_PWMX发生之后,在“清除+加载”过程中,PWM输出会保持当前值(不会引入IDLE值),直到重新计数开始之后得到新的输出值。即RESTART_PWMX之后会输出新生成的、与前一次计数没有关系的、完整的PWM波形。 注3:在IDLE状态下置位,效果与START一致,会引起计数器开始计数(自动完成RELOAD)动作 |
8 |
RESTART_PWM0 |
R/W |
PWM0重新启动 软件置位,硬件自动清除 注1:计数器正常计数过程中置位, PWM会先完成一次“清除+加载”动作,清除的内容为当前计数值、当前的分频值、当前重复计数值。然后重新启动一次全新的计数过程。 注2:当RESTART_PWMX发生之后,在“清除+加载”过程中,PWM输出会保持当前值(不会引入IDLE值),直到重新计数开始之后得到新的输出值。即RESTART_PWMX之后会输出新生成的、与前一次计数没有关系的、完整的PWM波形。 注3:在IDLE状态下置位,效果与START一致,会引起计数器开始计数(自动完成RELOAD)动作 |
7:2 |
|||
1 |
RELOADEN_PWM1 |
R/W |
PWM1寄存器重载使能,软件置位,软件清除 1:使能 0:不使能 注1:重新加载(PERIOD,COMPA0、DZA、COMPA1、COMPB0、DZB、COMPB1、TRIG_CNT)的使能位, 使能有效时,每次当RPT_CNTER为0且周期溢出时,都会完成加载。 注2:RELOAD使能后,到实际的RELOAD动作(周期溢出时)发生之间,如果上述的寄存器又被赋予了新值,则以最后的值作为重载值。 |
0 |
RELOADEN_PWM0 |
R/W |
PWM0寄存器重载使能,软件置位,软件清除 1:使能 0:不使能 注1:重新加载(PERIOD,COMPA0、DZA、COMPA1、COMPB0、DZB、COMPB1、TRIG_CNT)的使能位, 使能有效时,每次当RPT_CNTER为0且周期溢出时,都会完成加载。 注2:RELOAD使能后,到实际的RELOAD动作(周期溢出时)发生之间,如果上述的寄存器又被赋予了新值,则以最后的值作为重载值。 |
11.5.25. PWM外部脉冲触发沿选择PULSE
偏移: 0x410 |
复位值: 0x00000000 |
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
EDGE1 |
EDGE0 |
位域 |
名称 |
类型 |
描述 |
---|---|---|---|
31:2 |
RO |
||
1 |
EDGE1 |
R/W |
外部计数时钟pulse1触发沿选择寄存器 1:上升沿 0:下降沿 注1:外部计数时钟触发计数器过程中,如果发生了RESTART_PWMX功能(外部或者软件),则RESTART_PWMX之后的新计数过程需要等到下一次pulse的触发沿时才会发生 |
0 |
EDGE0 |
R/W |
外部计数时钟pulse0触发沿选择寄存器 1:上升沿 0:下降沿 注1:外部计数时钟触发计数器过程中,如果发生了RESTART_PWMX功能(外部或者软件),则RESTART_PWMX之后的新计数过程需要等到下一次pulse的触发沿时才会发生 |
11.5.26. PWM外部信号滤波选择寄存器FILTER
偏移: 0x414 |
复位值: 0x00000000 |
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
FILTER |
位域 |
名称 |
类型 |
描述 |
---|---|---|---|
31:2 |
Reserve |
RO |
保留 |
1:0 |
FILTER |
R/W |
外部信号滤波配置 00:滤波被禁止 01:过滤4个pclk时钟周期 10:过滤8个pclk时钟周期 11:过滤16个pclk时钟周期 注1:ext_event[3:0]和外部BRK信号同时参与滤波,且配置一致 注2:ext_event[6:4]不参与滤波 |
11.5.27. 外部BRK控制寄存器BRKPOL
偏移: 0x418 |
复位值: 0x00000000 |
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
BRK2 |
BRK1 |
BRK0 |
位域 |
名称 |
类型 |
描述 |
---|---|---|---|
31:3 |
RO |
||
2 |
BRK2 |
R/W |
刹车信号2极性配置 1:硬件刹车输入高电平有效 0:硬件刹车输入低电平有效 |
1 |
BRK1 |
R/W |
刹车信号1极性配置 1:硬件刹车输入高电平有效 0:硬件刹车输入低电平有效 |
0 |
BRK0 |
R/W |
刹车信号0极性配置 1:硬件刹车输入高电平有效 0:硬件刹车输入低电平有效 |
11.5.28. 外部BRK中断使能寄存器BRKIE
偏移: 0x41C |
复位值: 0x00000000 |
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
BRK2 |
BRK1 |
BRK0 |
位域 |
名称 |
类型 |
描述 |
---|---|---|---|
31:3 |
RO |
||
2 |
BRK2 |
R/W |
硬件刹车2中断使能。 1:使能 0:不使能 |
1 |
BRK1 |
R/W |
硬件刹车1中断使能。 1:使能 0:不使能 |
0 |
BRK0 |
R/W |
硬件刹车0中断使能。 1:使能 0:不使能 |
11.5.29. 外部BRK中断状态寄存器BRKIF
偏移: 0x420 |
复位值: 0x00000000 |
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
BRK2_VAL |
BRK1_VAL |
BRK0_VAL |
BRK2 |
BRK1 |
BRK0 |
位域 |
名称 |
类型 |
描述 |
---|---|---|---|
31:7 |
RO |
||
6 |
BRK2_VAL |
RO |
硬件刹车2的当前电平值 注1:只单纯记录刹车PIN脚当前电平值,与刹车配置信息无关 |
5 |
BRK1_VAL |
RO |
硬件刹车1的当前电平值 注1:只单纯记录刹车PIN脚当前电平值,与刹车配置信息无关 |
4 |
BRK0_VAL |
RO |
硬件刹车0的当前电平值 注1:只单纯记录刹车PIN脚当前电平值,与刹车配置信息无关 |
3 |
RO |
||
2 |
BRK2 |
R,W1C |
硬件刹车2状态。 1:已经发生 0:没有发生 注1:写1清除 注2:只有在至少有一组PWM选择了某一个刹车时,该刹车对应的中断状态才能生效,否则会一直保持为0 |
1 |
BRK1 |
R,W1C |
硬件刹车1状态。 1:已经发生 0:没有发生 注1:写1清除 注2:只有在至少有一组PWM选择了某一个刹车时,该刹车对应的中断状态才能生效,否则会一直保持为0 |
0 |
BRK0 |
R,W1C |
硬件刹车0状态。 1:已经发生 0:没有发生 注1:写1清除 注2:只有在至少有一组PWM选择了某一个刹车时,该刹车对应的中断状态才能生效,否则会一直保持为0 |
11.5.30. 外部信号当前状态寄存器EVSR
偏移: 0x424 |
复位值: 0x00000000 |
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
EV6 |
EV5 |
EV4 |
EV3 |
EV2 |
EV1 |
EV0 |
位域 |
名称 |
类型 |
描述 |
---|---|---|---|
31:7 |
RO |
||
6 |
EV6 |
RO |
外部信号6的当前电平值 1:高电平 0:低电平 注1:只单纯记录ext_event的当前电平值,与配置信息无关 注2:当短时间内出现多次脉冲时,CPU不一定能够及时获得准确的当前电平值 |
5 |
EV5 |
RO |
外部信号5的当前电平值 1:高电平 0:低电平 注1:只单纯记录ext_event的当前电平值,与配置信息无关 注2:当短时间内出现多次脉冲时,CPU不一定能够及时获得准确的当前电平值 |
4 |
EV4 |
RO |
外部信号4的当前电平值 1:高电平 0:低电平 注1:只单纯记录ext_event的当前电平值,与配置信息无关 注2:当短时间内出现多次脉冲时,CPU不一定能够及时获得准确的当前电平值 |
3 |
EV3 |
RO |
外部信号3的当前电平值 1:高电平 0:低电平 注1:只单纯记录ext_event的当前电平值,与配置信息无关 注2:当短时间内出现多次脉冲时,CPU不一定能够及时获得准确的当前电平值 |
2 |
EV2 |
RO |
外部信号2的当前电平值 1:高电平 0:低电平 注1:只单纯记录ext_event的当前电平值,与配置信息无关 注2:当短时间内出现多次脉冲时,CPU不一定能够及时获得准确的当前电平值 |
1 |
EV1 |
RO |
外部信号1的当前电平值 1:高电平 0:低电平 注1:只单纯记录ext_event的当前电平值,与配置信息无关 注2:当短时间内出现多次脉冲时,CPU不一定能够及时获得准确的当前电平值 |
0 |
EV0 |
RO |
外部信号0的当前电平值 1:高电平 0:低电平 注1:只单纯记录ext_event的当前电平值,与配置信息无关 注2:当短时间内出现多次脉冲时,CPU不一定能够及时获得准确的当前电平值 |
11.5.31. 软件模拟外部触发源寄存器SWEV
偏移: 0x428 |
复位值: 0x00000000 |
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
SWEV2 |
SWEV1 |
SWEV0 |
位域 |
名称 |
类型 |
描述 |
---|---|---|---|
31:3 |
Reserve |
保留 |
|
2 |
SWEV2 |
R/W |
软件模拟外部触发信号源ex_trig4 |
1 |
SWEV1 |
R/W |
软件模拟外部触发信号源ex_trig3 |
0 |
SWEV0 |
R/W |
软件模拟外部触发信号源ex_trig2 |