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