USER GUIDE / MEMORY / SPI FLASH / REGISTER DESCRIPTION
寄存器描述
SFC 全局配置寄存器0
SFC_GLB0BASE + 0x00
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:16 | POLL_TIME | 两次轮询操作之间的间隔时间计数器。 | RW |
| 15 | DES_EN | 启用DMA描述符。 1:DMA将使用内存描述符,不再使用SFC_MEM_ADDR 0:禁用 | RW |
| 14 | CDT_EN | 使用CDT。 0:禁用(默认) 1:启用 | RW |
| 13 | TRAN_DIR | 传输方向。 0:从SPI闪存中读取数据 1:向SPI闪存中写入数据 | RW |
| 12:7 | THRESHOLD | FIFO阈值(单位:字) 自然数:1-63(默认是1) 注意:不能是0 | RW |
| 6 | OP_MODE | 0:CPU 模式(默认) 1:DMA模式 | RW |
| 5:3 | PHASE_NUM | 在一个流程中阶段的数量。 001:1个阶段(默认) 010:2个阶段 011:3个阶段 100:4个阶段 101:5个阶段 110:6个阶段 注意:不能是0 | RW |
| 2 | WP_EN | 允许硬件写保护。 0:禁用WP 1:启用WP(默认) | RW |
| 1:0 | BURST_MD | 突发的最大节拍 00:保留 01:8拍增量突发 10:16拍增量突发 11:32拍增量突发(默认) | RW |
SFC 全局配置寄存器1
SFC_GLB1BASE + 0x94
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:21 | Reserved | 写入无影响,读取为零。 | R |
| 20:15 | reset | 软复位,复位时间是reset(value) *hclk周期,为0时硬件自动释放; | |
| 14:13 | tran_dir_sel | 默认为2’b00,保持默认值 | RW |
| 12:5 | MODE_BIT | XIP模式中Flash连续读模式的modebit | RW |
| 4 | XIP_EN | XIP模式使能 | RW |
| 3 | Reserved | 写入无影响,读取为零。 | RW |
| 2 | DQS_EN | 保持默认值 | RW |
| 1:0 | CHIP_SEL | 片选 00:默认 01:保留 10:保留 11:保留 注意:保持默认 | RW |
SFC 器件配置寄存器
SFC_DEV_CONFBASE + 0x04
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31 | STA_ENDIAN | 0: LSB(默认) 1: MSB | RW |
| 30:21 | Reserved | 写入无影响,读取为零。 | R |
| 20:16 | SMP_DELAY | 采样延迟,取决于设备输出延迟、PCB板延迟和IO端口延迟等。 00000:无延迟(默认) 00001:45 00010:90 00011:135 00100:180 00101:225 00110:270 00111:315 01000:1个SFC_CLK周期 01001:1个SFC_CLK周期 +45 01010:1个SFC_CLK周期 +90 ...... 01111:1个SFC_CLK周期 + 315 10000:2个SFC_CLK周期 ...... 11111:3个SFC_CLK周期 +315 注意:注意SFC0CDR (SFC1CDR)的配置,当 SFC0CDR_SFC_ORI_SEL(SFC1CDR_SFC_ORI_SEL)配置为2时, sfc.clk有四分频现象,采样延迟为smp_delay*45,如上述所示; SFC0CDR_SFC_ORI_SEL(SFC1CDR_SFC_ORI_SEL)配置为1时, sfc.clk有二分频现象,采样延迟参考下表; smp_delay 采样延迟 00000 0 | RW |
| 15 | CMD_TYPE | 0:1字节(默认) 1:2字节 | RW |
| 14:13 | STA_TYPE | 用于轮询。 00:1字节状态(默认) 01:2字节状态 10:3字节状态 11:4字节状态 | RW |
| 12:11 | THOLD | 在SFC_CLK 最后一个边沿与撤销SFC_CE 断言之间SFC_CE 的保 持时间。 00:0.5个 SFC_CLK周期(默认) 01:1个SFC_CLK周期 10:1.5个SFC_CLK周期 11:2个SFC_CLK周期 | RW |
| 10:9 | TSETUP | 在SFC_CE断言与SFC_CLK第一个边沿之间SFC_CE的建立时间。 00:0.5个 SFC_CLK周期(默认) 01:1个SFC_CLK周期 10:1.5个SFC_CLK周期 11:2个SFC_CLK周期 | RW |
| 8:5 | TSH | 两次SFC_CE断言之间的最小时间间隔。 0000:0.5个SFC_CLK周期 0001:1个SFC_CLK周期(默认) 0010:1.5个SFC_CLK周期 0011:2个SFC_CLK周期 0100:2.5个 SFC_CLK周期 0101:3个SFC_CLK周期 0110:3.5个SFC_CLK周期 0111:4个SFC_CLK周期 1000:4.5个SFC_CLK周期 1001:5个SFC_CLK周期 | RW |
| 4 | CPHA | 该位用来选择SPI时钟格式。 0:在SFC_CLK时钟的奇数沿采样数据(默认) 1:在SFC_CLK时钟的偶数沿采样数据 | RW |
| 3 | CPOL | 该位用来选择SFC_CLK的有效电平。 0:激活状态下SFC_CLK为高电平,空闲状态下SFC_CLK为低电平 (默认) 1:激活状态下SFC_CLK为低电平,空闲状态下SFC_CLK为高电平 | RW |
| 2 | CE_DL | SFC_CE的默认无效电平管脚。 0:低电平 1:高电平(默认) | RW |
| 1 | HOLD_DL | SFC_HOLD管脚默认无效电平。 0:低电平 1:高电平(默认) | RW |
| 0 | WP_DL | SFC_WP管脚默认无效电平。 0:低电平 1:高电平(默认) | RW |
SFC 器件状态预期寄存器
SFC_DEV_STA_EXPBASE + 0x08
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:0 | DEV_STA_EXP | 用于比较闪存状态的预期值。 | RW |
SFC 器件0 实时状态寄存器
SFC_DEV0_STA_RTBASE + 0x0C
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:0 | DEV0_STA_RT | SPI闪存器件0的实时状态。 | R |
SFC 器件1 实时状态寄存器
SFC_DEV1_STA_RTBASE + 0x98
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:0 | DEV1_STA_RT | SPI闪存器件1的实时状态。 | R |
SFC 器件状态屏蔽寄存器
SFC_DEV_STA_MSKBASE + 0x10
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:0 | DEV_STA_MSK | 用于比较的闪存状态掩码。 1:该位会被检查 0:该位不会被检查 | RW |
| 31:29 | CLK_MODE | SDR 000: SDR(默认) 注意:保持默认值 | RW |
| 28:26 | ADDR_WIDTH | 每个阶段中使用的地址宽度 000:没有传输地址(默认) 001:1字节 010:2字节 011:3字节 100:4字节 101:5字节 > =110:6字节 | RW |
| 25 | POLL_EN | 轮询功能意味着SFC检查闪存器件的状态 0:无轮询传输(默认) 1:有轮询传输 注意:其优先级高于 tran_dir 和 data_en | RW |
| 24 | CMD_EN | 0:无命令传输(默认) | RW |
| 23 | PHASE_FORM AT | 每个阶段格式如下1.8.3阶段描述 0:格式0(默认) 1:格式1 | RW |
| 22:17 | DMY_BITS | 所需要的dummy周期数(单位:SFC_CLK周期数) 000000:无dummy传输(默认) 000001:1个dummy周期 000010:2个dummy周期 000011:3个dummy周期 …… 100000:32个dummy周期 | RW |
| 16 | DATA_EN | 0:没有数据传输(默认) 1:有数据传输 | RW |
| 15:0 | CMD | 传输命令 | RW |
SFC 传输配置寄存器0 (阶段0-阶段5)
SFC_TRAN_CCFG0(0-5)BASE + 0x14~0x28
| Bit | 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 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 字段 | CLK_MODE | ADDR_WIDTH | POLL_EN | CMD_EN | PHASE_FORMAT | DMY_BITS | DATA_EN | CMD | ||||||||||||||||||||||||
| RST | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:29 | CLK_MODE | SDR;000=SDR(默认),保持默认值。 | RW |
| 28:26 | ADDR_WIDTH | 每个阶段使用的地址宽度:000=无地址,001=1 字节,010=2 字节,011=3 字节,100=4 字节,101=5 字节,>=110=6 字节。 | RW |
| 25 | POLL_EN | 0=无轮询传输,1=有轮询传输。 | RW |
| 24 | CMD_EN | 0=无命令传输,1=有命令传输。 | RW |
| 23 | PHASE_FORMAT | 阶段格式:0=格式0(默认),1=格式1。 | RW |
| 22:17 | DMY_BITS | 所需 dummy 周期数;000000=无 dummy,最高支持 100000=32 个周期。 | RW |
| 16 | DATA_EN | 0=无数据传输,1=有数据传输。 | RW |
| 15:0 | CMD | 传输命令。 | RW |
SFC 传输配置寄存器1 (阶段0-阶段5)
SFC_TRAN_CFG1BASE + 0x9C
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:19 | Reserved | 写入无影响,读取为零。 | R |
| 18 | DATA_ENDIAN | 0: LSB优先 1: MSB优先 | RW |
| 17:16 | WORD_UNIT | 00: 1字节 01: 2字节 10: 4字节 | RW |
| 15:8 | Reserved | 写入无影响,读取为零。 | R |
| 7:4 | TRAN_MD | 传输模式: | RW |
| 3:0 | Reserved | 写入无影响,读取为零。 | R |
SFC 器件地址寄存器 (阶段0-阶段5)
SFC_DEV_ADDR0-5BASE + 0x30~0x44
| Bit | 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 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 字段 | DEV_ADDR | |||||||||||||||||||||||||||||||
| RST | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:0 | DEV_ADDR | 不使用 CDT 时,用于传输的低字节闪存地址。 | RW |
SFC 器件扩展地址寄存器 (阶段0-阶段5)
SFC_DEV_ADDR_PLUS0-5BASE + 0x48~0x5c
| Bit | 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 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 字段 | Reserved | DEV_ADDR_PLUS | ||||||||||||||||||||||||||||||
| RST | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:16 | Reserved | 写入无影响,读取为零。 | R |
| 15:0 | DEV_ADDR_PLUS | 不使用 CDT 时,用于传输的高字节闪存地址。 | RW |
SFC 传输长度寄存器
SFC_TRAN_LENBASE + 0x2C
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:0 | TRAN_LEN | 传输的字节数 32' h0:没有数据传输 注意: 1. 当流程中没有数据阶段时,该寄存器应为0,否则DMA或者RMC 将 在不使用DMA描述符时启动 2. 当CHIP_SEL==2时,TRAN_LEN必须是偶数. | RW |
| 31:0 | DEV_ADDR | 不使用CDT时,用于传输的低字节闪存地址。 | RW |
| 31:16 | Reserved | 写入无影响,读取为零。 | R |
| 15:0 | DEV_ADDR_PLUS | 不使用CDT时,用于传输的高字节闪存地址。 | RW |
SFC 存储器地址寄存器
SFC_MEM_ADDRBASE + 0x60
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:0 | MEM_ADDR | 不使用DMA描述符时DMA模式内存地址。 | RW |
SFC 开关寄存器
SFC_TRIGBASE + 0x64
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:3 | Reserved | 写入无影响,读取为零。 | R |
| 2 | FLUSH | 1:复位FIFO 0:无效 | W |
| 1 | STOP | 1:停止所有传输 0:无效 | W |
| 0 | START | 1:开始传输 0:无效 | W |
SFC 状态寄存器
SFC_SRBASE + 0x68
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:23 | Reserved | 写入无影响,读取为零。 | R |
| 22:16 | FIFO_NUM | FIFO中的数据量(单位:字) | R |
| 15:8 | Reserved | 写入无影响,读取为零。 | R |
| 7 | WORKING | 0:SFC空闲 1:SFC工作中 | R |
| 6:5 | BUSY | 00:SPI空闲 | R |
| 4 | END | 指示传输是否结束 0:传输没有结束或者SFC在空闲状态 1:传输结束 该位将会产生INT_END中断 | R |
| 3 | TRAN_REQ | 0:没有请求 1:FIFO中的空缺数大于或等于阈值 该位将会产生INT_TREQ中断 | R |
| 2 | RECE_REQ | 0:没有请求 1:FIFO中的数据大于或等于阈值 该位将会产生INT_RREQ中断 | R |
| 1 | OVER | 0:FIFO没有过载 1:FIFO过载 该位将会产生INT_OVER中断 | R |
| 0 | UNDER | 0:FIFO没有欠载 1:FIFO欠载 该位将会产生INT_UNDR中断 | R |
SFC 状态清除寄存器
SFC_SCRBASE + 0x6C
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:5 | Reserved | 写入无影响,读取为零。 | R |
| 4 | CLR_END | 0:无效 1:清除SFC_SR.END标志信号和INT_END | W |
SFC 中断控制寄存器
SFC_INTCBASE + 0x70
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:5 | Reserved | 写入无影响,读取为零。 | R |
| 4 | MASK_END | 0:不屏蔽INT_END,将会触发中断 1:屏蔽INT_END中断(默认) | RW |
| 3 | MASK_TREQ | 0:不屏蔽INT_TREQ,将会触发中断 1:屏蔽INT_TREQ中断(默认) | RW |
| 2 | MASK_RREQ | 0:不屏蔽INT_RREQ,将会触发中断 1:屏蔽INT_RREQ中断(默认) | RW |
| 1 | MASK_OVER | 0:不屏蔽INT_OVER,将会触发中断 1:屏蔽INT_OVER中断(默认) | RW |
| 0 | MASK_UNDR | 0:不屏蔽INT_UNDR,将会触发中断 1:屏蔽INT_UNDR中断(默认) | RW |
SFC 状态机寄存器
SFC_FSMBASE + 0x74
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:20 | Reserved | 写入无影响,读取为零。 | R |
| 19:16 | FSM_AHB | AHB主机模块的状态机状态 | R |
| 15:8 | FSM_SPI | SPI控制模块的状态机状态 | R |
| 7:4 | FSM_DMAC | DMAC模块的状态机状态 | R |
| 3 | Reserved | 写入无影响,读取为零。 | R |
| 2:0 | FSM_RMC | RMC模块的状态机状态 | R |
SFC 时钟开关使能寄存器
SFC_CGEBASE + 0x78
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:6 | Reserved | 写入无影响,读取为零。 | R |
| 5 | CGE_FLOW_EN | 0:不使能flow_ctrl模块的时钟开关功能 1:使能flow_ctrl模块的时钟开关功能(默认) | RW |
| 4 | Reserved | 写入无影响,读取为零。 | R |
| 3 | CGE_DMA_EN | 0:不使能DMAC和AHB_MST模块的时钟开关功能 1:使能DMAC和AHB_MST模块的时钟开关功能(默认) | RW |
| 2 | CGE_RMC_EN | 0:不使能RMC模块的时钟开关功能 1:使能RMC模块的时钟开关功能(默认) | RW |
| 1 | CGE_SPI_EN | 0:不使能SPI控制模块和clk_gen 模块的时钟开关功能 1:使能SPI控制模块和clk_gen模块的时钟开关功能(默认) | RW |
| 0 | CGE_REG_EN | 0:不使能REG模块的时钟开关功能 1:使能REG模块的时钟开关功能(默认) | RW |
SFC CMD 索引寄存器
SFC_CMD_IDXBASE + 0x7C
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31 | CDT_DATA_EN | 该命令链需要传输数据 | RW |
| 30 | CDT_DIR | 数据传输方向 0:从SPI闪存读取数据 1:向SPI闪存写入数据 | RW |
| 29:6 | Reserved | 写入无影响,读取为零。 | R |
| 5:0 | CMD_IDX | CDT的命令索引 | RW |
SFC 列地址寄存器
SFC_COL_ADDRBASE + 0x80
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:0 | COL_ADDR | 列地址,缓存地址,仅CDT模式。 | RW |
SFC 行地址寄存器
SFC_ROW_ADDRBASE + 0x84
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:0 | ROW_ADDR | 行地址,页地址,仅CDT模式。 | RW |
SFC 状态地址0 寄存器
SFC_STA_ADDR0BASE + 0x88
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:0 | STA_ADDR0 | 状态地址0,仅CDT模式。 | RW |
SFC 状态地址1 寄存器
SFC_STA_ADDR1BASE + 0x8C
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:0 | STA_ADDR1 | 状态地址1,仅CDT模式。 | RW |
SFC DMA 描述符地址寄存器
SFC_DES_ADDRBASE + 0x90
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:0 | DES_ADDR | DMA的描述符地址。 | RW |
SFC CDT 寄存器
SFC_CDTBASE + 0x800
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:0 | CDT | CDT的寄存器接口。 | RW |
SFC 数据寄存器
SFC_DRBASE + 0x1000
| 位 | 名称 | 说明 | RW |
|---|---|---|---|
| 31:0 | DR | 数据缓存的数据寄存器接口。 | RW |