USER GUIDE / DATA MOVEMENT & TIMERS / PWM / 寄存器描述

寄存器描述

PWM Clock Configure Register (PWM_CCFG0)

PWM_CCFG0BASE+0x0000
Bit313029282726252423222120191817161514131211109876543210
字段PRESCALEn (n=0~715)
RST00000000000000000000000000000000
位名称说明RW
31:0PRESCALEn

(n=0~715)
用于配置各个通道的分频时钟系数,在输出波形时请勿改变值:

当PRESCALEn
<8:Freq=输入时钟频率/(2^PRESCALEn)

当PRESCALEn
>=8:保留,配置大于等于8的值不生效
RW

PWM Clock Enable Register (PWM_CLKEN)

PWM_CLKEN第0-7bit表示每个通道的分频时钟产生状态,不同的通道可以同时输出。

PWM_CLKENBASE+0x0008
Bit313029282726252423222120191817161514131211109876543210
字段ReservedPWMnCLKEN
RST00000000000000000000000000000000
位名称说明RW
31:8Reserved保留,写入无效,读取为0。R
7:0PWMnCLKEN使能各个通道分频时钟:

0:关闭无影响

1:使能
RW

PWM Update CLK Register (PWM_UPDATE_CLK)

PWM_UPDATE_CLK表示将每个通道的clk_en更新,写入之后clk_en将生效

PWM_UPDATE_CLKBASE+0x000C
Bit313029282726252423222120191817161514131211109876543210
字段ReservedUPDATE_CLKn
RST00000000000000000000000000000000
位名称说明RW
31:1Reserved保留,写入无效。寄存器只可写,读取为32’hdeaddead-
0UPDATE_CLKn更新每个通道的clk_en

0:关闭无影响

1:更新
W

PWM Update BUSY CLK Register (PWM_BUSY_CLK)

在配置通道更新后,对应的PWM_BUSY_CLK会被置1,直到更新生效变回0,如果在BUSY_CLK寄存器对应位为1时更新,则更新不生效。

PWM_BUSY_CLKBASE+0x0010
Bit313029282726252423222120191817161514131211109876543210
字段ReservedBUSY_CLKn
RST00000000000000000000000000000000
位名称说明RW
31:8Reserved保留,写入无效。读取为0R
7:0BUSY_CLKn更新每个通道clk_en的状态

0:可更新

1:忙碌,不可更新
R

PWM Counter Enable Register (PWM_CNTEN)

PWM_CNTEN第0-7bit表示每个通道的PWM计数使能,不同的通道可以同时输出。配置PWMEN_UPDATE_CLK后自动更新,按照分频时钟周期开始计数。

PWM_CNTENBASE+0x0014
Bit313029282726252423222120191817161514131211109876543210
字段ReservedPWMnBCEN
RST00000000000000000000000000000000
位名称说明RW
31:8Reserved保留,写入无效,读取为0。R
7:0PWMnBCEN使能每个通道的PWM计数使能

0:关闭无影响

1:使能
RW

PWM EVT Enable Register (PWM_EVTEN)

第0-7bit表示每个通道的EVT触发事件计数使能,不同的通道可以同时输出。配置使能后,按照分频时钟周期开始计数。

PWM_EVTENBASE+0x0018
Bit313029282726252423222120191817161514131211109876543210
字段ReservedPWMnECEN
RST00000000000000000000000000000000
位名称说明RW
31:8Reserved保留,写入无效,读取为0。R
7:0PWMnECEN使能每个通道的EVT计数使能

0:关闭无影响

1:使能
RW

PWM Update Param Register (PWM_UPDATE_PARAM)

PWM_UPDATE_PARAMBASE+0x001C
Bit313029282726252423222120191817161514131211109876543210
字段ReservedEVTnUPReservedPWMnUP
RST00000000000000000000000000000000
位名称说明RW
31:24Reserved保留,写入无效。寄存器只可写,读取为32’hdeaddead。-
23:16EVTnUP更新每个通道的ADC采样参数:

0:无影响

1:更新
W
15:8Reserved保留,写入无效。寄存器只可写,读取为32’hdeaddead。-
7:0PWMnUP更新每个通道的波形参数:

0:无影响

1:更新
W

PWM Update Process Busy Param Status Register (PWM_BUSY_PARAM)

在配置通道更新后,对应的PWMnBUSY会被置1直到更新波形生效,在每一次更新前都需要读PWM_BUSY寄存器对应位为0。

PWM_BUSY_PARAMBASE+0x0020
Bit313029282726252423222120191817161514131211109876543210
字段ReservedEVTnBUSYReservedPWMnBUSY
RST00000000000000000000000000000000
位名称说明RW
31:24Reserved保留,写入无效,读取为0。R
23:16EVTnBUSY0:可进行更新

1:忙碌,不可更新
R
15:8Reserved保留,写入无效,读取为0。R
7:0PWMnBUSY0:可进行更新

1:忙碌,不可更新
R

PWM Wave mode Register (PWM_WMODE)

PWM波形计数方式寄存器,不支持动态更新,在工作过程中请勿更改此寄存器。

PWM_WMODEBASE+0x0024
Bit313029282726252423222120191817161514131211109876543210
字段ReservedPWMnWMODE
RST00000000000000000000000000000000
位名称说明RW
31:16Reserved保留,写入无效,读取为0。R
15:0PWMnWMODE00:边沿模式

01:中心对齐模式(互补模式)

10:边沿推挽模式

11:中心对齐推挽模式
RW

PWM Initial level Register (INIT_LEVEL)

PWM各个通道波形初始值。

INIT_LEVELBASE+0x0028
Bit313029282726252423222120191817161514131211109876543210
字段ReservedINIT_LEVELn
RST00000000000000000000000000000000
位名称说明RW
31:16Reserved保留,写入无效,读取为0。R
15:0INIT_LEVELn每个通道P和N波形初始值:

低位[0]:0 -> wave P初始0, 1 -> wave P初始1

高位[1]:0 -> wave N初始0, 1 -> wave N初始1
RW

PWM Idle level Register (IDLE_LEVEL)

PWM每个通道空闲状态。请勿在中心对齐模式下同时配置为高,否则开始输出波形前将同时输出高电平。

IDLE_LEVELBASE+0x002C
Bit313029282726252423222120191817161514131211109876543210
字段ReservedIDLE_LEVELn
RST00000000000000000000000000000000
位名称说明RW
31:16Reserved保留,写入无效,读取为0。R
15:0IDLE_LEVELn每个通道P和N波形空闲值:

低位[0]:0 -> wave P输出0, 1 -> wave P输出1

高位[1]:0 -> wave N输出0, 1 -> wave N输出1
RW

PWM Out Status Control Register (PWM_OSCR)

配置该寄存器后,需要配置PWM_UPDATE_PARAM寄存器,等待当前波形输出完成后生效。生效后evt计数将继续进行,pwm计数清零,在恢复默认值之后pwm计数从头开始进行,evt和pwm计数恢复同步。当PWM_OSCR不为默认值时,输出为纯高纯低电平,此时更新PWM_UPDATE_PARAM将即刻生效。在中心对齐模式下,不要将输出同时配置为高。

PWM_OSCRBASE+0x0030
Bit313029282726252423222120191817161514131211109876543210
字段PWMnP/N_OSCR
RST00000000000000000000000000000000
位名称说明RW
31:0PWMnP/N_OSCR00    根据配置的门限值输出

01     PWM强制输出纯低电平

11 10  PWM强制输出纯高电平
RW

PWM Wave threshold register(PWM_WTHn)

PWM_nWTHBASE+0x0040+n*4
Bit313029282726252423222120191817161514131211109876543210
字段ReservedPWM_WTH
RST00000000000000000000000000000000
位名称说明RW
31:16Reserved保留,写入无效,读取为0。R
15:0PWM_WTHPWM波形计数阈值,波形计数技术周期 = 2*PWM_WTH。RW

PWM Wave P/N threshold register(PWM_WPNTHn)

PWM_nWPNTHBASE+0x0080+n*4
Bit313029282726252423222120191817161514131211109876543210
字段PWM_NTHPWM_PTH
RST00000000000000000000000000000000
位名称说明RW
31:16PWM_NTH波形计数阈值N,决定波形翻转RW
15:0PWM_PTH波形计数阈值P,决定波形翻转RW

PWM Wave P/N dead threshold register(PWM_WPNDTHn)

仅在PWM_WMODE配置为01即中心对齐模式下使用,会在输出过程中插入死区。

PWM_nWPNDTHBASE+0x00C0+n*4
Bit313029282726252423222120191817161514131211109876543210
字段PWM_NDTHPWM_PDTH
RST00000000000000000000000000000000
位名称说明RW
31:16PWM_NDTHN波死区阈值,N波延迟死区后翻转RW
15:0PWM_PDTHP波死区阈值,P波延迟死区后翻转RW

PWM Event threshold register(PWM_TTHn)

当PWM波形产生过程中,计数器达到PWM_TTH0或PWM_TTH1时都会触发ADC采样。在一次完整波形输出过程中,若只想触发一次ADC采样,可将PWM_TTH0或PWM_TTH1其中之一设为0xffff。如需要触发两次ADC采样,需保证两个阈值之间的时间间隔大于ADC_SEL_CH.ADCn_OUT_CNT的debug信号保持时间。

PWM_TTHBASE+0x0100+n*4
Bit313029282726252423222120191817161514131211109876543210
字段PWM_TTH10PWM_TTH0
RST11111111111111111111111111111111
位名称说明RW
31:16PWM_TTH10EVT计数周期阈值1RW
15:0PWM_TTH0EVT计数周期阈值0RW

ADC Select channel Register (ADC_SEL_CH)

该寄存器[7:0]用于选择分别哪四个PWM通道触发ADC0的两个和ADC1的两个采样,共计四个信号。

例如选择PWM ch0和ch2触发ADC0采样,则需要将ADC0_SEL0_CH和ADC0_SEL1_CH配置为4’h0和4’h2,对应的此寄存器可配置为0x20(即ch2触发ADC0_SEL1_CH,ch0触发ADC0_SEL0_CH)或者0x02(ADC0的两个位置相反)。

ADC_SEL_CHBASE+0x0140
Bit313029282726252423222120191817161514131211109876543210
字段ReservedADC1_SELn_CHADC0_SELn_CH
RST00000000000000000000000000000000
位名称说明RW
31:16Reserved保留,写入无效,读取为0。R
15:8ADC1_SELn_CH选择两个通道触发ADC1采样RW
7:0ADC0_SELn_CH选择两个通道触发ADC0采样RW

ADC Debug Register (ADC_D)

该寄存器[7:0]用于选ADCn通道输出的debug信号到哪一个IO端口。总共有4个IO端口

该寄存器[31:16]用于选ADCn通道输出的debug信号可持续的周期数,计数周期非时钟分频周期。

ADC_DEBUGBASE+0x0144
Bit313029282726252423222120191817161514131211109876543210
字段ADCn_OUT_CNTReservedADCn_OUT_SEL_CH
RST00000000000000000000000000000000
位名称说明RW
31:16ADCn_OUT_CNT输出的ADC debug信号可持续周期数RW
15:8Reserved保留,写入无效,读取为0R
7:0ADCn_OUT_SEL_CH选择输出ADCn的debug信号RW

Work Status Register (WORK_ST)

WORK_STBASE+0x00148
Bit313029282726252423222120191817161514131211109876543210
字段ReservedPWM_nWORK
RST00000000000000000000000000000000
位名称说明RW
31:8Reserved保留,写入无效,读取为0。R
7:0PWM_nWORK0:PWM计数空闲

1:PWM计数工作中
R

ADC Trigger Status Register (ADC_TRIG_ST)

ADC_TRIG_STBASE+0x0014C
Bit313029282726252423222120191817161514131211109876543210
字段ReservedADC_TRIGn
RST00000000000000000000000000000000
位名称说明RW
31:8Reserved保留,写入无效,读取为0。R
7:0ADC_TRIGn0:ADC采样不触发

1:ADC采样触发
RWC

ADC Status Mask Register (ADCST_MASK)

ADCST_MASKBASE+0x00150
Bit313029282726252423222120191817161514131211109876543210
字段ReservedADC_MASKn
RST00000000000000000000000011111111
位名称说明RW
31:8Reserved保留,写入无效,读取为0。R
7:0ADC_MASKn触发波形中断屏蔽:

0:不屏蔽

1:屏蔽
RW

PWM Global Control Register (PWM_GLOBAL)

内部计数将暂停,配置PWM_UPDATE_CLK寄存器和PWM_UPDATE_BUSY_CLK寄存器不生效。但是Fail正常触发。恢复正常运行后,内部计数不清零,从原处继续进行

PWM_GLOBALBASE+0x0154
Bit313029282726252423222120191817161514131211109876543210
字段ReservedPWM_GLOBALn
RST00000000000000000000000000000000
位名称说明RW
31:8Reserved保留,写入无效,读取为0。R
7:0PWM_GLOBALn是否将全局状态关闭:

0:不暂停,正常运行

1:暂停内部计数
RW

PWM Global INT Register (GLOBAL_INT)

GLOBAL_INTBASE+0x0158
Bit313029282726252423222120191817161514131211109876543210
字段ReservedGLOBAL_INTn
RST00000000000000000000000000000000
位名称说明RW
31:8Reserved保留,写入无效,读取为0。R
7:0GLOBAL_INTn全局状态中断:

0:空闲

1:发出中断
RWC

PWM Global INT Mask Register (GLOBAL_MASK)

GLOBAL_MASKBASE+0x015C
Bit313029282726252423222120191817161514131211109876543210
字段ReservedGLOBAL_MASKn
RST00000000000000000000000011111111
位名称说明RW
31:8Reserved保留,写入无效,读取为0。R
7:0GLOBAL_MASKn全局状态中断屏蔽:

0:不屏蔽

1:屏蔽
RW

PWM Fail Enable Register (PWM_FEN)

Fail信号使能寄存器,开启该功能。

PWM_FENBASE+0x0200
Bit313029282726252423222120191817161514131211109876543210
字段ReservedPWMnFEN
RST00000000000000000000000000000000
位名称说明RW
31:16Reserved保留,写入无效,读取为0。R
15:0PWMnFEN使能每个通道Fail信号功能,对IO fail信号将同时启用滤波功能

00:关闭

01:使能IO Fail信号

10:使能ADC Fail信号

11:同时使能
RW

PWM Fail Select Register (PWM_FSEL)

该寄存器决定Fail信号来源。

PWM_FSELBASE+0x0204
Bit313029282726252423222120191817161514131211109876543210
字段ReservedPWMnFSEL
RST00000000000000000000000000000000
位名称说明RW
31:16Reserved保留,写入无效,读取为0。R
15:0PWMnFSEL00:Fail来自于IO[0]和ADC[0]

01:Fail来自于IO[1]和ADC[0]

10:Fail来自于IO[0]和ADC[1]

11:Fail来自于IO[1]和ADC[1]
RW

PWM Fail Valid Register (PWM_FVAL)

该寄存器决定Fail信号有效电平。

PWM_FVALBASE+0x0208
Bit313029282726252423222120191817161514131211109876543210
字段ReservedPWMnFVALSEL
RST00000000000000000000000000000000
位名称说明RW
31:8Reserved保留,写入无效,读取为0。R
7:0PWMnFVALSEL每个PWM通道的IO信号有效电平:

0:来自IO的fail低电平有效

1:来自IO的fail高电平有效
RW

PWM Fail Default Register (PWM_FDEFAULT)

如果Fail信号有效,PWM会输出PWM_FDEFAULT电平。在中心对齐模式下,禁止将输出同时配置为高。

PWM_FDEFAULTBASE+0x020C
Bit313029282726252423222120191817161514131211109876543210
字段ReservedFDEFAULT_n
RST00000000000000000000000000000000
位名称说明RW
31:16Reserved保留,写入无效,读取为0。R
15:0FDEFAULT_n00:P波输出0,N波输出0

01:P波输出1,N波输出0

10:P波输出0,N波输出1

11:P波输出1,N波输出1
RW

PWM Fail Clock divide Register (PWM_FCDIV)

Fail滤波分频时钟,当来自IO的Fail信号经过16个滤波周期依旧保持有效,可认为是有效信号并强制关断PWM输出。注意对来自ADC的Fail信号不生效

PWM_nFCDIVnBASE+0x0240+n*4
Bit313029282726252423222120191817161514131211109876543210
字段ReservedPWM_FCDIV_IO
RST00000000000000000000000000000000
位名称说明RW
31:16Reserved保留,写入无效,读取为0。R
7:0PWM_FCDIV_IOfail来自于IO的分频系数RW

PWM Fail Status Register (PWM_FST)

PWM_FSTBASE+0x02A0
Bit313029282726252423222120191817161514131211109876543210
字段ReservedFAILn
RST00000000000000000000000000000000
位名称说明RW
31:16Reserved保留,写入无效,读取为0。R
15:0FAILn00:无IO fail,无ADC fail

01:IO fail有效,无ADC fail

10:无IO fail,ADC fail有效

11:IO fail有效,ADC fail有效
RWC

PWM Fail Status Mask Register (PWM_FST_MASK)

PWM_FST_MASKBASE+0x02A4
Bit313029282726252423222120191817161514131211109876543210
字段ReservedFST_MASKn
RST00000000000000001111111111111111
位名称说明RW
31:16Reserved保留,写入无效,读取为0。R
15:0FST_MASKnFail中断屏蔽:

0:不屏蔽

1:屏蔽
RW

PWM CNTn register(PWM_CNTn)

PWM_CNTnBASE+0x0300+n*4
Bit313029282726252423222120191817161514131211109876543210
字段ReservedPWM_CNTn
RST00000000000000000000000000000000
位名称说明RW
31:17Reserved保留,写入无效,读取为0。R
16:0PWM_CNTnPWM计数R

PWM Update INT Register (UPDATE_INT)

UPDATE_INTBASE+0x0340
Bit313029282726252423222120191817161514131211109876543210
字段ReservedUPDATE_INTn
RST00000000000000000000000000000000
位名称说明RW
31:8Reserved保留,写入无效,读取为0。R
7:0UPDATE_INTnPWM波形每完成若干个周期触发一次

0:UPDATE中断不触发

1:UPDATE中断触发
RWC

PWM Update Status MASK Register (UPDATE_MASK)

UPDATE_MASKBASE+0x0344
Bit313029282726252423222120191817161514131211109876543210
字段ReservedUPDATE_MASKn
RST00000000000000000000000011111111
位名称说明RW
31:8Reserved保留,写入无效,读取为0。R
7:0UPDATE_MASKn触发UPDATE更新中断屏蔽:

0:不屏蔽

1:屏蔽
RW

PWM IRQ_CNT egister (PWM_IRQ_CNTn)

在从机模块新增IRQ_CNT计数寄存器,用于指定触发UPDATE中断的波形周期数指定周期触发

IRQ_CNTnBASE+0x0350+n*4
Bit313029282726252423222120191817161514131211109876543210
字段ReservedIRQ_CNTn
RST00000000000000000000000000000000
位名称说明RW
31:17Reserved保留,写入无效,读取为0。R
17:0IRQ_CNTn触发UPDATEupdate更新中断的计数,IRQ_CNT+1次计数完成触发一次RW

Soft Reset Register (SOFT_RESET)

软件复位寄存器,实现软件复位。。读取该寄存器为2’b11时方可写入该寄存器。写入SOFT_RESET位为0触发复位,寄存器会更新为2’b00。当读取到2’b01时,表明复位已经生效。当读取到2’b11时,表明复位将已经完成自动清除,可以开始启动模块,配置复位后,读取SOFT_RESET为1表明复位已经成功清除。。

SOFT_RESETBASE+0x0400
Bit313029282726252423222120191817161514131211109876543210
字段ReservedSOFT_RESET
RST000000000000000000000000000000011
位名称说明RW
31:12Reserved保留,写入无效,读取为0R
0SOFT_RESET软件复位,低电平有效。写0触发复位,复位可自动清除。RW

Soft Reset Status Register (SOFT_RESET_STATUS)

软件复位状态寄存器

SOFT_RESET_STATUSBASE+0x0404
Bit313029282726252423222120191817161514131211109876543210
字段ReservedSOFT_RESET_STATUAS
RST00000000000000000000000000000001
位名称说明RW
31:1Reserved保留,写入无效,读取为0R
0SOFT_RESET_STATUAS软件复位状态。读为0表明进行了软件复位,可写1清除RWC