CONFIG | UNIFY:0 | 0:16位计时器,1:32位计时器 | 0 |
| CLKMODE:2:1 | 0:系统时钟,1:预分频系统时钟 2:SCT输入,3:预分频SCT输入 | 00 |
| CKSEL:6:3 | 0:输入0的上升沿,1:输入0的下降沿 2:输入1的上升沿,3:输入1的下降沿 ...... E: 7 F: 7 | 0000 |
| NORELAOD_L:7 | 写入 1 当match发生时禁止从reload寄存器 reload,软件可随时读写,16位和32位计时器都有效 | 0 |
| NORELOAD_H:8 | 同上,仅在16位时有效 | 0 |
| INSYNC:16:9 | 产生event之前首先与SCT时钟同步(bit 9 = input 0, bit 10 = input 1,..., bit 16 = input 7,CLKMODE为2,3时无效) | 1 |
| AUTOLIMIT_L :17 | 写入1时,在match0寄存器上的匹配事件自动成为一个LIMIT条件,而无需明确定义一个event。软件可随时读写。 | 0 |
| AUTOLIMIT_H :18 | 同上,16位时无效。 | 0 |
CTRL CONFIG:UNIFY=1时,只有_L的那些位有效 STOP或HALT状态下可写入所有位,运行时只有STOP或HALT位可写 注:CONFIG:CLKMODE=3时,连续写H或L或两次连续的写之间至少等待12个系统时钟 | DOWN_L :0 | 写入1向下计数。计数limit达到并且BIDIR=1时硬件设置该位为1。计数到0或者向下计数时limit条件满足时硬件设置该位为0。 | 0 |
| STOP_L:1 | HALT=0时,设置写入1,计数器停止工作但可响应IO。如果Start寄存器中的事件匹配,该位被清除,计数器恢复工作。 | 0 |
| HALT_L :2 | 写入1计数器停止响应。当HALT=1时,STOP被清除。若要清除HALT但保持计数器响应,则在一条写入指令中设置HALT和STOP。 一旦HALT被设置,只能通过软件清除。 | 1 |
| CLRCTR_L :3 | 写入1清0当前计数器。总是读为0。 | 0 |
| BIDIR_L :4 | 0:计数器向上计数到limit然后清0, 1:计数器向上计数到limit然后向下计数到0或limit条件发生 | 0 |
| PRE_L:12:5 | SCT时钟预分频因子。计数时钟=SCTClock/(PRE+1)。一旦改变PRE预分频因子,需CLRCTR清0计数器。 | 0 |
| DOWN_H:16 STOP_H:17 HALT_H:18 CLRCTR_H :19 BIDIR_H:20 PRE_H :28:21 |
|
|
LIMIT | LIMMSK_L:15:0 LIMMSK_H:31:16 | 事件n用作计数limit事件。计数到limit时,计数器清0(单向计数模式)或者改变计数方向(双向计数模式)。如果计数器达到最大值(0xffff/0xffffffff),即便没有在LIMIT寄存器中设置limit条件,也会在下一个时钟沿上清0计数器或者改变计数方向 L:event 0 = bit 0, event 1 = bit 1, event 15 = bit 15 H:event 0 = bit 16, event 1 = bit 17, event 15 = bit 31 | 0 |
HALT | HALTMSK_L:15:0
HALTMSK_H :31:16 | bit n 写1,事件n发生时设置 CTRL:HALT 对应的位 L:event 0 = bit 0, event 1 = bit 1, event 15 = bit 15 H:event 0 = bit 16, event 1 = bit 17, event 15 = bit 31 | 0 |
STOP | STOPMSK_L:15:0 STOPMSK_H:31:16 | bit n 写1,事件n发生时设置 CTRL:STOP 对应的位 L:event 0 = bit 0, event 1 = bit 1, event 15 = bit 15 H:event 0 = bit 16, event 1 = bit 17, event 15 = bit 31 | 0 |
START | STARTMSK_L:15:0 STARTMSK_H:31:16 | bit n 写1,事件n发生时清除 CTRL:STOP 对应的位。(HALT=1时不能产生事件,所以清除HALT位的事情只能由软件写) L:event 0 = bit 0, event 1 = bit 1, event 15 = bit 15 H:event 0 = bit 16, event 1 = bit 17, event 15 = bit 31
| 0 |
DITHER |
|
|
|
COUNT | CTR_L:15:0 CTR_H:31:16 | 软件可随时读,但只能在HALT=1时写。 |
|
STATE | STATE_L:4:0 STATE_H:20:16 | 软件可随时读,但只能在HALT=1时写。事件可配置为在某些状态发生。事件完成以下任务: • 设置或者清除输出信号 • 设置计数器 limit, stop, 和 start • 引发中断和DMA请求 • 修改state变量 state值完全由应用控制。如果应用不需要state,这个值就是缺省值0 state变量可对多个周期的计数器以任何需要的操作顺序进行跟踪和控制。state变量逻辑上与SCT配置出的状态机关联。关于state和event的关系参考15.6.26和15.6.27节。 所有EVENT控制寄存器(n个)中的 STATELD/STADEV域为state变量设置所有可能值。state变量在计数周期中的变化反映出状态机的状态变迁。
| 0 |
INPUT | AIN0-7;SIN0-7 | 读取输入状态 AIN: SCT 时钟采样 SIN: INSYNC 选择后的SCT时钟采样 | - |
REGMODE | REGMOD_L:15:0 REGMOD_H:31:16 | 有16对Match/Capture寄存器 作为match功能时有辅助寄存器来重新装载reload计数值,作为capture功能时也有辅助寄存器来最捕获进行控制。 0/1: match/capture L:register 0 = bit 0, register 1 = bit 1,..., register 15 = bit 15 H:register 0 = bit 16, register 1 = bit 17,..., register 15 = bit 31 | 0 |
OUTPUT | OUT:9:0 | 支持10个输出。当HALT=1时写该寄存器可以对输出进行直接控制。任何时刻可以读。 0/1:LOW/HIGH output 0 = bit 0, output 1 = bit 1,..., output 9 = bit 9 | 0 |
OUTPUTDIRCTRL | SETCLR0:1:0 …… SETCLR9:19:18 | 在输出n(0-9)上置位或清除。 0x0:任何计数器不发生置位和清除 0x1:当L计数器或unified计数器开始向下计数时 反转置位和清除 状态。 0x2:当H计数器开始向下计数时 反转置位和清除状态。UNIFY=1时不要使用。 | 0 |
RES | O0RES:1:0 …… O9RES :19:18 | OUTn_SET 和 OUTn_CLR 可同时控制输出状态,即使在同一个state中也可以同时发生。本寄存器用来处理这种矛盾状态。某个状态时需要反转输出,可以将OnRES设置为0x3,同时在Set和Clear寄存器中设置event标志位。 0x0 输出不发生改变 0x1 输出置位(或根据SETCLR域的设置进行清除). 0x2 清除输出(或根据SETCLR域的设置进行设置). 0x3 输出反转
| 0 |
DMAREQ0 DMAREQ1 | DEV_0:15:0 DRL0:30 DRQ0:31 |
|
|
EVEN | IEN:15:0 | 在事件n时使能中断。和EVFLAG配合使用。 | 0 |
EVFLAG | FLAG:15:0 | 记录发生的事件。写 1 清除对应的标志位,如果所有使能中断的标志位都被清0,则消除SCT中断请求。 | 0 |
CONEN | NCEN:9:0 | 矛盾情况发生时(RES)产生中断 output 0 = bit 0, output 1 = bit1,..., output 9 = bit 9 | 0 |
CONFLAG | NCFLAG:9:0 BUSERRL:30 BUSERRH:32 |
| 0 |
MATCH[0:15] | MATCHn_L:15:0 MATCHn_H:31:16 | 匹配寄存器与计数器比较来产生事件。只能在HALT=1时写,任何时可读。计数到match值时清0或向下计数。
|
|
FRACMAT[0:5] |
|
|
|
CAP[0:15] | CAPn_L:15:0 CAPn_H:31:16 | 事件发生时,用于读取捕获的计数值 |
|
MATCHREL[0:15] | RELOADn_L :15:0 RELOADn_H :31:16 | BIDIR=0时,limit 条件发生之后从这里装载MATCH[0:15]寄存器值 BIDIR=1时,则在计数器返回到0时装载。 |
|
FRACMATREL[0:5] |
|
|
|
CAPCTRL[0:15] | CAPCONn_L CAPCONn_H | 设置哪些事件用来捕获计数器值存入CAPn_LH寄存器 |
|
EV[0:15]_STATE | STATEMSKn :15:0 | 设置事件在哪些状态下发生,状态在EVn_CTRL中设置。事件n对应的EVn_STATE 中的掩码都为0的话,这个事件就被禁止了。在不需要state但需要event的应用中,这个寄存器写入0x01,state保持缺省0设置。 state位m置位,事件event n(0-15)就在这个状态引发。 (m = state number; state 0 = bit 0, state 1= bit 1,..., state 15 = bit 15) | 0 |
EV[0:15]_CTRL | MATCHSEL:3:0 | 选择哪一个Match寄存器的匹配引发该事件。(只有 HEVENT 设置的计数器才会发生match)。 | 0 |
和 state 掩码一起设置事件 n 发生的条件。 | HEVENT:4 | 选择L/H计数器。 UNIFY=1时不要设置这个位。 0:MATCHSEL 选择的 L 状态和 L match寄存器 1:H | 0 |
事件由匹配事件引发,也可由选择的输入输入信号引发(沿或电平)。BIDR=1时也可在计数换向时引发。 | OUTSEL :5 | 选择 Input/output 0:选择由IOSEL配置的 input 1:选择由IOSEL配置的 output | 0 |
每个事件都可以修改STATE值(状态迁移)。 | IOSEL:9:6 | 配置引发该事件的输入或输出信号。如果CKMODE=1x的时候不要选择为input。 | 0 |
如果计数条件满足时配置有多个事件发生,这时状态值的改变只对highest-numbered的那个事件发生作用,而每个事件配置的动作则会全部发生。 | IOCOND:11:10 | 配置引发事件n的IO条件。 0x0 LOW 低电平 0x1 Rise 上升沿 0x2 Fall 下降沿 0x3 HIGH 高电平 | 0 |
| COMBMODE:13:12 | 配置match和IO条件的使用和组合方式 0x0 OR. match或io条件满足时,事件发生。 0x1 MATCH. 仅当match条件满足。 0x2 IO. 仅当IO条件满足。 0x3 AND. match和IO条件同时满足。 | 0 |
| STATELD:14 | 配置STATEV修改HEVENT设置的state状态的方式(在该事件是 highest-numbered 事件时发生状态修改)。 0 STATEV 的值被加(add)到STATE里面去。(进位被丢弃) 1 STATEV 的值直接被装进STATE里面去。 | 0 |
| STATEV:19:15 | 状态值或状态增量,由STATELD确定。如果STATELD和STATEV都是0,STATE值不发生变化。 | 0 |
| MATCHMEM:20 | 如果该位置1,COMBMODE设置有match条件参与的话,向上计数时只要大于等于match设置的计数条件都引发该事件,向下计数则为小于等于。 如果该位置0,match事件只有在等于match值的那个时钟周期里发生。 | - |
| DIRECTION:22:21 | 事件的发生与计数方向的关系。仅在BIDIR=1模式有效。 0x0 计数方向无关。这个事件的发生无关计数方向。 0x1 向上计数。只当向上计数时发生该事件。 0x2 向下计数。只当向下计数时发生该事件。 | - |
OUT[0:9]_SET | SET:15:0 | n位置1,则事件n设置输出n,或者根据 SETCLRn =0x1或0x2的配置进行清除。 event 0 = bit 0, event 1 = bit 1,..., event 15 = bit 15 |
|
OUT[0:9]_CLR | CLR:15:0 | n位置1,则事件n清除输出n,或者根据 SETCLRn =0x1或0x2的配置进行设置。 event 0 = bit 0, event 1 = bit 1,..., event 15 = bit 15 |
|