5.2.4. 寄存器描述
5.2.4.1. 0x000 SPIE_CTL
默认值:0x00000000 |
控制寄存器(Control Register) |
||
---|---|---|---|
位域 |
类型 |
默认值 |
描述 |
31:14 |
- |
- |
- |
13:12 |
R/W |
0x0 |
SPI_SEL SPI 控制器选择。选择连接的总线,加密器对所选总线上的数据进 行加解密。 0x0:BY PASS,不连接任何总线
0x1:连接 SPI0
0x2:连接 SPI1
|
11:1 |
- |
- |
- |
0 |
R/W |
0x0 |
KEY_START 开始计算分组密钥。 数据加解密开始之前(或者同时),必须先计
算分组密钥,否则加解密单元会一直等待密钥生成,导致传输失败。
传输完成,需要清零以停止密钥计算。
0:停止计算分组密钥
1:开始计算分组密钥
|
5.2.4.2. 0x004 SPIE_ICR
默认值:0x00000000 |
中断控制寄存器(Interrupt Control Register) |
||
---|---|---|---|
位域 |
类型 |
默认值 |
描述 |
31:6 |
- |
- |
- |
5 |
R/W |
0x0 |
KEY_OVF 分组密钥 FIFO 上溢中断使能 |
4 |
R/W |
0x0 |
KEY_UDF 分组密钥 FIFO 下溢中断使能 |
3 |
R/W |
0x0 |
READ_HALF_EMPTY 读过半空数据中断使能 |
2 |
R/W |
0x0 |
READ_EMPTY_DATA 读空数据中断使能 |
1 |
R/W |
0x0 |
ENC_DEC_FINISHED 加解密完成中断使能 |
0 |
R/W |
0x0 |
KEY_GEN 第一组分组密钥生成中断使能 |
5.2.4.3. 0x008 SPIE_ISR
默认值:0x00000000 |
中断状态寄存器(Interrupt Status Register) |
||
---|---|---|---|
位域 |
类型 |
默认值 |
描述 |
31:6 |
- |
- |
- |
5 |
W1C |
0x0 |
KEY_OVF 分组密钥 FIFO Overflow 中断状态。 0:分组密钥 FIFO 未发生上溢
1:分组密钥 FIFO 发生上溢
|
4 |
W1C |
0x0 |
KEY_UDF 分组密钥 FIFO Underflow 中断状态。 0:分组密钥 FIFO 未发生下溢
1:分组密钥 FIFO 发生下溢
|
3 |
W1C |
0x0 |
READ_HALF_EMPTY 读过半空数据中断,即读取的密文位置的数据,过半都是 0xFF。 0:中断未发生
1:表示当前读取的密文数据,超过一半都是 0xFF
|
2 |
W1C |
0x0 |
READ_EMPTY_DATA 读空数据中断,即读取的密文位置的数据全部为 0xFF,即Flash 擦除后的状态。 0:中断未发生
1:表示当前读取的密文数据,全部为 0xFF
软件可以根据该中断判断当前读取的 Page,是否为擦除后的数据。
|
1 |
W1C |
0x0 |
ENC_DEC_FINISHED 加解密完成中断。 0:中断未发生
1:对密文位置的数据加密或者解密完成
若当前传输的密文长度为0时,该中断不会产生。
|
0 |
W1C |
0x0 |
KEY_GEN 表示第一组分组密钥生成的中断状态。 0:中断未发生
1:第一组分组密钥已经产生 SPI 控制器可以开始传输数据。
在数据传输前,应确保该中断状态位为1。
由于SPI ENC 模块产生密钥的速度比 SPI 数据传输的速度快,因此
可以保证传输过程中,密钥总是能跟上数据传输的速度。
|
5.2.4.4. 0x00C SPIE_KCNT
默认值:0x00000000 |
密钥计数寄存器(Key Counter Register) |
||
---|---|---|---|
位域 |
类型 |
默认值 |
描述 |
31:0 |
RO |
0x0 |
KEY_CNT SPI ENC 输出对应密文区域的分组密钥个数,单位为字节。 |
5.2.4.5. 0x010 SPIE_OCNT
默认值:0x00000000 |
输出计数寄存器(Output Counter Register) |
||
---|---|---|---|
位域 |
类型 |
默认值 |
描述 |
31:0 |
RO |
0x0 |
OUTPUT_CNT SPI ENC 输出的分组密钥个数,以字节为单位计数。 SPI ENC 为每一个传输的 SPI 数据输出分组密钥,但是如果对应输
出的位置是明文,SPI ENC 输出的分组密钥为0。所以这里的计数是
输出的0的个数和密文对应的分组密钥个数之和。
|
5.2.4.6. 0x014 SPIE_ADDR
默认值:0x00000000 |
数据地址寄存器(Data Address Register) |
||
---|---|---|---|
位域 |
类型 |
默认值 |
描述 |
31:0 |
R/W |
0x0 |
DATA_ADDR
本次访问的 Flash 数据地址。从0开始,是相对 Flash 开始位置
的访问偏移值,单位为字节。该地址信息有两个用途:
1.计算数据分组对应的 Counter 值
2.输出分组密钥数据
|
5.2.4.7. 0x018 SPIE_TWEAK
默认值:0x00000000 |
计数调整寄存器(Tweak Register) |
||
---|---|---|---|
位域 |
类型 |
默认值 |
描述 |
31:0 |
R/W |
0x0 |
CTR_TWEAK 用于产生数据分组的 Counter 值。数据分组的 Counter 值由 eFuse
中的 SPI_ENC_NONCE、SPIE_ADDR 以及TWEAK 值共同产生,其中
SPI_ENC_NONCE 与数据的分组地址是固定的,TWEAK 值软件可调。
通过配置 TWEAK 值,软件可以根据实际情况调整 Counter 值,以
免每次产生的分组密钥相同。
|
5.2.4.8. 0x01C SPIE_CPOS
默认值:0x00000000 |
密文位置寄存器(Ciphertext Position Register) |
||
---|---|---|---|
位域 |
类型 |
默认值 |
描述 |
31:0 |
R/W |
0x0 |
CIPHERTEXT_POS 本次传输的密文数据开始位置。
用于指示本次传输的数据中密文数据所在的偏移位置。如果当前传
输包含了发送和接收,则位置总是从发送开始计算。
值 M:表示本次传输的数据,从第 M 个字节开始是密文
|
5.2.4.9. 0x020 SPIE_CLEN
默认值:0x00000000 |
密文长度寄存器(Ciphertext Length Register) |
||
---|---|---|---|
位域 |
类型 |
默认值 |
描述 |
31:0 |
R/W |
0x0 |
CIPHERTEXT _LEN 本次传输的密文数据长度。 值 N:表示本次传输的密文数据为 N 字节 |
5.2.4.10. 0x03C SPIE_DBGR
默认值:0x00000000 |
调试使能寄存器(Debug Enable Register) |
||
---|---|---|---|
位域 |
类型 |
默认值 |
描述 |
31:1 |
- |
- |
- |
0 |
R/W |
0x0 |
DBG_MAGIC
内部调试寄存器。
内部调试功能。当往 [31:0] 写入 0x1602DEB1 时,进入调试模式,
SPI ENC 模块从调试寄存器读取密钥数据,不再从 eFuse 读取密钥。
此时 Bit0 被置1。当写入寄存器的值不是 0x1602DEB1 时,SPI ENC
模块从 eFuse 读取密钥数据。此时 Bit0 被清零。
|
5.2.4.11. 0x040 SPIE_KDBG0
默认值:0x00000000 |
调试密钥寄存器0(Debug Key Register) |
||
---|---|---|---|
位域 |
类型 |
默认值 |
描述 |
31:0 |
R/W |
0x0 |
DBG_KEY0 内部调试寄存器。 4个寄存器的值组成 128bit AES 密钥,比特位分布如下:
DBG_KEYn << (n * 32)。
|
5.2.4.12. 0x044 SPIE_KDBG1
默认值:0x00000000 |
调试密钥寄存器1(Debug Key Register) |
||
---|---|---|---|
位域 |
类型 |
默认值 |
描述 |
31:0 |
R/W |
0x0 |
DBG_KEY1 内部调试寄存器。 4个寄存器的值组成 128bit AES 密钥,比特位分布如下:
DBG_KEYn << (n * 32)。
|
5.2.4.13. 0x048 SPIE_KDBG2
默认值:0x00000000 |
调试密钥寄存器2(Debug Key Register) |
||
---|---|---|---|
位域 |
类型 |
默认值 |
描述 |
31:0 |
R/W |
0x0 |
DBG_KEY2 内部调试寄存器。 4个寄存器的值组成 128bit AES 密钥,比特位分布如下:
DBG_KEYn << (n * 32)。
|
5.2.4.14. 0x04C SPIE_KDBG3
默认值:0x00000000 |
调试密钥寄存器3(Debug Key Register) |
||
---|---|---|---|
位域 |
类型 |
默认值 |
描述 |
31:0 |
R/W |
0x0 |
DBG_KEY3
内部调试寄存器。
4个寄存器的值组成 128bit AES 密钥,比特位分布如下:
DBG_KEYn << (n * 32)。
|
5.2.4.15. 0x050 SPIE_NDBG0
默认值:0x00000000 |
调试随机数寄存器0(Debug Nonce Register) |
||
---|---|---|---|
位域 |
类型 |
默认值 |
描述 |
31:0 |
R/W |
0x0 |
DBG_NONCE0 内部调试寄存器。 2个寄存器的值组成64 bit Nonce,比特位分布如下:
DBG_NONCEn << (n * 32)。
|
5.2.4.16. 0x054 SPIE_NDBG1
默认值:0x00000000 |
调试随机数寄存器1(Debug Nonce Register) |
||
---|---|---|---|
位域 |
类型 |
默认值 |
描述 |
31:0 |
R/W |
0x0 |
DBG_NONCE1
内部调试寄存器。
2个寄存器的值组成64 bit Nonce,比特位分布如下:
DBG_NONCEn << (n * 32)。
|
5.2.4.17. 0xFFC SPIE_VER
默认值:0x00000100 |
版本寄存器(Version Register) |
||
---|---|---|---|
位域 |
类型 |
默认值 |
描述 |
31:0 |
RO |
0x100 |
Version(模块版本号) 采用BCD码显示,V1.00 |