USER GUIDE / MEMORY / SPI FLASH / REGISTER DESCRIPTION

寄存器描述

SFC 全局配置寄存器0

SFC_GLB0BASE + 0x00
Bit313029282726252423222120191817161514131211109876543210
字段POLL_TIMEDES_ENCDT_ENTRAN_DIRTHRESHOLDOP_MODEPHASE_NUMWP_ENBURST_MD
RST00000000000000000000000010001111
位名称说明RW
31:16POLL_TIME两次轮询操作之间的间隔时间计数器。
RW
15DES_EN启用DMA描述符。
1:DMA将使用内存描述符,不再使用SFC_MEM_ADDR 0:禁用
RW
14CDT_EN使用CDT。
0:禁用(默认) 1:启用
RW
13TRAN_DIR传输方向。
0:从SPI闪存中读取数据 1:向SPI闪存中写入数据
RW
12:7THRESHOLDFIFO阈值(单位:字) 自然数:1-63(默认是1) 注意:不能是0RW
6OP_MODE0:CPU 模式(默认) 1:DMA模式RW
5:3PHASE_NUM在一个流程中阶段的数量。
001:1个阶段(默认) 010:2个阶段 011:3个阶段 100:4个阶段 101:5个阶段 110:6个阶段 注意:不能是0
RW
2WP_EN允许硬件写保护。
0:禁用WP 1:启用WP(默认)
RW
1:0BURST_MD突发的最大节拍 00:保留 01:8拍增量突发 10:16拍增量突发 11:32拍增量突发(默认)RW

SFC 全局配置寄存器1

SFC_GLB1BASE + 0x94
Bit313029282726252423222120191817161514131211109876543210
字段Reservedresettran_dir_selMODE_BITXIP_ENSFC_MODE2DQS_ENCHIP_SEL
RST00000000000000000000000000000000
位名称说明RW
31:21Reserved写入无影响,读取为零。
R
20:15reset软复位,复位时间是reset(value) *hclk周期,为0时硬件自动释放;
14:13tran_dir_sel默认为2’b00,保持默认值RW
12:5MODE_BITXIP模式中Flash连续读模式的modebitRW
4XIP_ENXIP模式使能RW
3Reserved写入无影响,读取为零。
RW
2DQS_EN保持默认值RW
1:0CHIP_SEL片选 00:默认 01:保留 10:保留 11:保留 注意:保持默认RW

SFC 器件配置寄存器

SFC_DEV_CONFBASE + 0x04
Bit313029282726252423222120191817161514131211109876543210
字段STA_ENDIANReservedSMP_DELAYCMD_TYPESTA_TYPETHOLDTSETUPTSHCPHACPOLCE_DLHOLD_DLWP_DL
RST00000000000000000000000000100111
位名称说明RW
31STA_ENDIAN0: LSB(默认) 1: MSBRW
30:21Reserved写入无影响,读取为零。
R
20:16SMP_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
15CMD_TYPE0:1字节(默认) 1:2字节RW
14:13STA_TYPE用于轮询。
00:1字节状态(默认) 01:2字节状态 10:3字节状态 11:4字节状态
RW
12:11THOLD在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:9TSETUP在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:5TSH两次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
4CPHA该位用来选择SPI时钟格式。
0:在SFC_CLK时钟的奇数沿采样数据(默认) 1:在SFC_CLK时钟的偶数沿采样数据
RW
3CPOL该位用来选择SFC_CLK的有效电平。
0:激活状态下SFC_CLK为高电平,空闲状态下SFC_CLK为低电平 (默认) 1:激活状态下SFC_CLK为低电平,空闲状态下SFC_CLK为高电平
RW
2CE_DLSFC_CE的默认无效电平管脚。
0:低电平 1:高电平(默认)
RW
1HOLD_DLSFC_HOLD管脚默认无效电平。
0:低电平 1:高电平(默认)
RW
0WP_DLSFC_WP管脚默认无效电平。
0:低电平 1:高电平(默认)
RW

SFC 器件状态预期寄存器

SFC_DEV_STA_EXPBASE + 0x08
Bit313029282726252423222120191817161514131211109876543210
字段DEV_STA_EXP
RST00000000000000000000000000000000
位名称说明RW
31:0DEV_STA_EXP用于比较闪存状态的预期值。
RW

SFC 器件0 实时状态寄存器

SFC_DEV0_STA_RTBASE + 0x0C
Bit313029282726252423222120191817161514131211109876543210
字段DEV0_STA_RT
RST00000000000000000000000000000000
位名称说明RW
31:0DEV0_STA_RTSPI闪存器件0的实时状态。
R

SFC 器件1 实时状态寄存器

SFC_DEV1_STA_RTBASE + 0x98
Bit313029282726252423222120191817161514131211109876543210
字段DEV1_STA_RT
RST00000000000000000000000000000000
位名称说明RW
31:0DEV1_STA_RTSPI闪存器件1的实时状态。
R

SFC 器件状态屏蔽寄存器

SFC_DEV_STA_MSKBASE + 0x10
Bit313029282726252423222120191817161514131211109876543210
字段CLK_MODEADDR_WIDTHPOLL_ENCMD_ENPHASE_FORM ATDMY_BITSDATA_ENCMD
RST00000000000000000000000000000000
位名称说明RW
31:0DEV_STA_MSK用于比较的闪存状态掩码。
1:该位会被检查 0:该位不会被检查
RW
31:29CLK_MODESDR 000: SDR(默认) 注意:保持默认值RW
28:26ADDR_WIDTH每个阶段中使用的地址宽度 000:没有传输地址(默认) 001:1字节 010:2字节 011:3字节 100:4字节 101:5字节 >
=110:6字节
RW
25POLL_EN轮询功能意味着SFC检查闪存器件的状态 0:无轮询传输(默认) 1:有轮询传输 注意:其优先级高于 tran_dir 和 data_enRW
24CMD_EN0:无命令传输(默认)RW
23PHASE_FORM AT每个阶段格式如下1.8.3阶段描述 0:格式0(默认) 1:格式1RW
22:17DMY_BITS所需要的dummy周期数(单位:SFC_CLK周期数) 000000:无dummy传输(默认) 000001:1个dummy周期 000010:2个dummy周期 000011:3个dummy周期 …… 100000:32个dummy周期RW
16DATA_EN0:没有数据传输(默认) 1:有数据传输RW
15:0CMD传输命令RW

SFC 传输配置寄存器0 (阶段0-阶段5)

SFC_TRAN_CCFG0(0-5)BASE + 0x14~0x28
Bit313029282726252423222120191817161514131211109876543210
字段CLK_MODEADDR_WIDTHPOLL_ENCMD_ENPHASE_FORMATDMY_BITSDATA_ENCMD
RST00000000000000000000000000000000
位名称说明RW
31:29CLK_MODESDR;000=SDR(默认),保持默认值。RW
28:26ADDR_WIDTH每个阶段使用的地址宽度:000=无地址,001=1 字节,010=2 字节,011=3 字节,100=4 字节,101=5 字节,>=110=6 字节。RW
25POLL_EN0=无轮询传输,1=有轮询传输。RW
24CMD_EN0=无命令传输,1=有命令传输。RW
23PHASE_FORMAT阶段格式:0=格式0(默认),1=格式1。RW
22:17DMY_BITS所需 dummy 周期数;000000=无 dummy,最高支持 100000=32 个周期。RW
16DATA_EN0=无数据传输,1=有数据传输。RW
15:0CMD传输命令。RW

SFC 传输配置寄存器1 (阶段0-阶段5)

SFC_TRAN_CFG1BASE + 0x9C
Bit313029282726252423222120191817161514131211109876543210
字段ReservedDATA_ENDIANWORD_UNITReservedTRAN_MDReserved
RST00000000000000000000000000000000
位名称说明RW
31:19Reserved写入无影响,读取为零。
R
18DATA_ENDIAN0: LSB优先 1: MSB优先RW
17:16WORD_UNIT00: 1字节 01: 2字节 10: 4字节RW
15:8Reserved写入无影响,读取为零。
R
7:4TRAN_MD传输模式:RW
3:0Reserved写入无影响,读取为零。
R

SFC 器件地址寄存器 (阶段0-阶段5)

SFC_DEV_ADDR0-5BASE + 0x30~0x44
Bit313029282726252423222120191817161514131211109876543210
字段DEV_ADDR
RST00000000000000000000000000000000
位名称说明RW
31:0DEV_ADDR不使用 CDT 时,用于传输的低字节闪存地址。RW

SFC 器件扩展地址寄存器 (阶段0-阶段5)

SFC_DEV_ADDR_PLUS0-5BASE + 0x48~0x5c
Bit313029282726252423222120191817161514131211109876543210
字段ReservedDEV_ADDR_PLUS
RST00000000000000000000000000000000
位名称说明RW
31:16Reserved写入无影响,读取为零。R
15:0DEV_ADDR_PLUS不使用 CDT 时,用于传输的高字节闪存地址。RW

SFC 传输长度寄存器

SFC_TRAN_LENBASE + 0x2C
Bit313029282726252423222120191817161514131211109876543210
字段ReservedDEV_ADDR_PLUS
RST00000000000000000000000000000000
位名称说明RW
31:0TRAN_LEN传输的字节数 32'
h0:没有数据传输 注意: 1. 当流程中没有数据阶段时,该寄存器应为0,否则DMA或者RMC 将 在不使用DMA描述符时启动 2. 当CHIP_SEL==2时,TRAN_LEN必须是偶数.
RW
31:0DEV_ADDR不使用CDT时,用于传输的低字节闪存地址。
RW
31:16Reserved写入无影响,读取为零。
R
15:0DEV_ADDR_PLUS不使用CDT时,用于传输的高字节闪存地址。
RW

SFC 存储器地址寄存器

SFC_MEM_ADDRBASE + 0x60
Bit313029282726252423222120191817161514131211109876543210
字段MEM_ADDR
RST00000000000000000000000000000000
位名称说明RW
31:0MEM_ADDR不使用DMA描述符时DMA模式内存地址。
RW

SFC 开关寄存器

SFC_TRIGBASE + 0x64
Bit313029282726252423222120191817161514131211109876543210
字段ReservedFLUSHSTOPSTART
RST00000000000000000000000000000000
位名称说明RW
31:3Reserved写入无影响,读取为零。
R
2FLUSH1:复位FIFO 0:无效W
1STOP1:停止所有传输 0:无效W
0START1:开始传输 0:无效W

SFC 状态寄存器

SFC_SRBASE + 0x68
Bit313029282726252423222120191817161514131211109876543210
字段ReservedFIFO_NUMReservedWORKINGBUSYENDTRAN_REQRECE_REQOVERUNDER
RST00000000000000000000000000000000
位名称说明RW
31:23Reserved写入无影响,读取为零。
R
22:16FIFO_NUMFIFO中的数据量(单位:字)R
15:8Reserved写入无影响,读取为零。
R
7WORKING0:SFC空闲 1:SFC工作中R
6:5BUSY00:SPI空闲R
4END指示传输是否结束 0:传输没有结束或者SFC在空闲状态 1:传输结束 该位将会产生INT_END中断R
3TRAN_REQ0:没有请求 1:FIFO中的空缺数大于或等于阈值 该位将会产生INT_TREQ中断R
2RECE_REQ0:没有请求 1:FIFO中的数据大于或等于阈值 该位将会产生INT_RREQ中断R
1OVER0:FIFO没有过载 1:FIFO过载 该位将会产生INT_OVER中断R
0UNDER0:FIFO没有欠载 1:FIFO欠载 该位将会产生INT_UNDR中断R

SFC 状态清除寄存器

SFC_SCRBASE + 0x6C
Bit313029282726252423222120191817161514131211109876543210
字段ReservedCLR_ENDReserved
RST00000000000000000000000000000000
位名称说明RW
31:5Reserved写入无影响,读取为零。
R
4CLR_END0:无效 1:清除SFC_SR.END标志信号和INT_ENDW

SFC 中断控制寄存器

SFC_INTCBASE + 0x70
Bit313029282726252423222120191817161514131211109876543210
字段ReservedMASK_ENDMASK_TREQMASK_RREQMASK_OVERMASK_UNDR
RST00000000000000000000000000011111
位名称说明RW
31:5Reserved写入无影响,读取为零。
R
4MASK_END0:不屏蔽INT_END,将会触发中断 1:屏蔽INT_END中断(默认)RW
3MASK_TREQ0:不屏蔽INT_TREQ,将会触发中断 1:屏蔽INT_TREQ中断(默认)RW
2MASK_RREQ0:不屏蔽INT_RREQ,将会触发中断 1:屏蔽INT_RREQ中断(默认)RW
1MASK_OVER0:不屏蔽INT_OVER,将会触发中断 1:屏蔽INT_OVER中断(默认)RW
0MASK_UNDR0:不屏蔽INT_UNDR,将会触发中断 1:屏蔽INT_UNDR中断(默认)RW

SFC 状态机寄存器

SFC_FSMBASE + 0x74
Bit313029282726252423222120191817161514131211109876543210
字段ReservedFSM_AHBFSM_SPIFSM_DMACReservedFSM_RMC
RST00000000000000010000000100010001
位名称说明RW
31:20Reserved写入无影响,读取为零。
R
19:16FSM_AHBAHB主机模块的状态机状态R
15:8FSM_SPISPI控制模块的状态机状态R
7:4FSM_DMACDMAC模块的状态机状态R
3Reserved写入无影响,读取为零。
R
2:0FSM_RMCRMC模块的状态机状态R

SFC 时钟开关使能寄存器

SFC_CGEBASE + 0x78
Bit313029282726252423222120191817161514131211109876543210
字段ReservedCGE_FLOW_ENReservedCGE_DMA_ENCGE_RMC_ENCGE_SPI_ENCGE_REG_EN
RST00000000000000000000000000101111
位名称说明RW
31:6Reserved写入无影响,读取为零。
R
5CGE_FLOW_EN0:不使能flow_ctrl模块的时钟开关功能 1:使能flow_ctrl模块的时钟开关功能(默认)RW
4Reserved写入无影响,读取为零。
R
3CGE_DMA_EN0:不使能DMAC和AHB_MST模块的时钟开关功能 1:使能DMAC和AHB_MST模块的时钟开关功能(默认)RW
2CGE_RMC_EN0:不使能RMC模块的时钟开关功能 1:使能RMC模块的时钟开关功能(默认)RW
1CGE_SPI_EN0:不使能SPI控制模块和clk_gen 模块的时钟开关功能 1:使能SPI控制模块和clk_gen模块的时钟开关功能(默认)RW
0CGE_REG_EN0:不使能REG模块的时钟开关功能 1:使能REG模块的时钟开关功能(默认)RW

SFC CMD 索引寄存器

SFC_CMD_IDXBASE + 0x7C
Bit313029282726252423222120191817161514131211109876543210
字段CDT_DATA_ENCDT_DIRReservedCMD_IDX
RST00000000000000000000000000000000
位名称说明RW
31CDT_DATA_EN该命令链需要传输数据RW
30CDT_DIR数据传输方向 0:从SPI闪存读取数据 1:向SPI闪存写入数据RW
29:6Reserved写入无影响,读取为零。
R
5:0CMD_IDXCDT的命令索引RW

SFC 列地址寄存器

SFC_COL_ADDRBASE + 0x80
Bit313029282726252423222120191817161514131211109876543210
字段COL_ADDR
RST00000000000000000000000000000000
位名称说明RW
31:0COL_ADDR列地址,缓存地址,仅CDT模式。
RW

SFC 行地址寄存器

SFC_ROW_ADDRBASE + 0x84
Bit313029282726252423222120191817161514131211109876543210
字段ROW_ADDR
RST00000000000000000000000000000000
位名称说明RW
31:0ROW_ADDR行地址,页地址,仅CDT模式。
RW

SFC 状态地址0 寄存器

SFC_STA_ADDR0BASE + 0x88
Bit313029282726252423222120191817161514131211109876543210
字段STA_ADDR0
RST00000000000000000000000000000000
位名称说明RW
31:0STA_ADDR0状态地址0,仅CDT模式。
RW

SFC 状态地址1 寄存器

SFC_STA_ADDR1BASE + 0x8C
Bit313029282726252423222120191817161514131211109876543210
字段STA_ADDR1
RST00000000000000000000000000000000
位名称说明RW
31:0STA_ADDR1状态地址1,仅CDT模式。
RW

SFC DMA 描述符地址寄存器

SFC_DES_ADDRBASE + 0x90
Bit313029282726252423222120191817161514131211109876543210
字段DES_ADDR
RST00000000000000000000000000000000
位名称说明RW
31:0DES_ADDRDMA的描述符地址。
RW

SFC CDT 寄存器

SFC_CDTBASE + 0x800
Bit313029282726252423222120191817161514131211109876543210
字段CDT
RST00000000000000000000000000000000
位名称说明RW
31:0CDTCDT的寄存器接口。
RW

SFC 数据寄存器

SFC_DRBASE + 0x1000
Bit313029282726252423222120191817161514131211109876543210
字段DR
RST00000000000000000000000000000000
位名称说明RW
31:0DR数据缓存的数据寄存器接口。
RW