11.1.4. 寄存器列表
Module Name |
Mapping Size |
Offset |
---|---|---|
QSPI |
1024 B |
0x000 |
Register Name |
Offset |
Description |
---|---|---|
SPI_VER |
0x000 |
SPI控制器版本(SPI Controller Version) |
SPI_CFG |
0x004 |
SPI配置(SPI Configuration) |
SPI_TCFG |
0x008 |
SPI传输配置(SPI Transfer Configuration) |
- |
0x00C |
- |
SPI_ICR |
0x010 |
SPI中断控制(SPI Interrupt Control) |
SPI_ISTS |
0x014 |
SPI中断状态(SPI Interrupt Status) |
SPI_FCTL |
0x018 |
SPI FIFO控制(SPI FIFO Control) |
SPI_FSTS |
0x01C |
SPI FIFO状态(SPI FIFO Status) |
- |
0x020 |
- |
SPI_CCFG |
0x024 |
SPI时钟配置(SPI Clock Configuration) |
- |
0x028~0x02C |
- |
SPI_TBC |
0x030 |
SPI总传输字节计数器(SPI Total Bytes Counter) |
SPI_TWC |
0x034 |
SPI写发送计数器(SPI Transmit Write Counter) |
SPI_TMC |
0x038 |
SPI传输控制(SPI Transmit Miscellaneous Control) |
- |
0x03C |
- |
SPI_BMTC |
0x040 |
SPI位模式传输配置(SPI Bit-Mode Transfer Configuration) |
SPI_BMCLK |
0x044 |
SPI位模式时钟配置(SPI Bit-Mode Clock Configuration) |
SPI_BMTXD |
0x048 |
SPI位模式发送数据值(SPI Bit-Mode TX Data) |
SPI_BMRXD |
0x04C |
SPI位模式接收数据值(SPI Bit-Mode RX Data) |
SPI_BTR |
0x050 |
SPI突发传输配置(SPI Burst Set) |
SPI_RCM |
0x054 |
SPI读命令模式(SPI Read Command Mode) |
- |
0x058~0x05C |
- |
SPI_WRAP_LEN |
0x060 |
SPI读命令模式(SPI Wrap Length Config) |
- |
0x064~0x088 |
- |
SPI_IDMA_TXLEN |
0x08C |
SPI IDMA写传输长度(SPI Inner DMA Write Transaction Length) |
SPI_IDMA_RXLEN |
0x090 |
SPI IDMA读传输长度(SPI Inner DMA Read Transaction Length) |
SPI_IDMA_TXADDR |
0x094 |
SPI IDMA发送源地址(SPI Inner DMA TX Source Address) |
SPI_IDMA_RXADDR |
0x098 |
SPI IDMA接收目的地址(SPI Inner DMA RX Destination Address) |
SPI_IDMA_BTCFG |
0x09C |
SPI IDMA突发传输配置(SPI Inner DMA Burst Config) |
- |
0x0A0~0x1FC |
- |
SPI_TXD |
0x200 |
SPI发送数据(SPI TX Data) |
- |
0x204~0x2FC |
- |
SPI_RXD |
0x300 |
SPI接收数据(SPI RX Data) |
11.1.5. 寄存器描述
11.1.5.1. 0x000 SPI_VER
默认值:0x00000300 |
SPI控制器版本(SPI Controller Version) |
||
---|---|---|---|
位域 |
类型 |
默认值 |
描述 |
31:16 |
- |
- |
-
|
15:8 |
R |
0x3 |
VER_H
控制器高位版本号
|
7:0 |
R |
0x0 |
VER_L
控制器低位版本号
|
11.1.5.2. 0x004 SPI_CFG
默认值:0x00000080 |
SPI配置(SPI Configuration) |
||
---|---|---|---|
位域 |
类型 |
默认值 |
描述 |
31 |
R/WAC |
0x0 |
CTRL_RST
控制器复位(Controller Reset)
置1,SPI控制器复位,完成后自动清0。
|
30:8 |
- |
- |
-
|
7 |
R/W |
0x1 |
RXFULL_STOP
传输停止使能(RX FIFO Full Transfer Stop Enable)
0:正常模式,忽略RXFIFO状态
1:当RXFIFO满时停止传输数据
|
6:5 |
- |
- |
-
|
4 |
R/W |
0x0 |
TXIDMA_EN
TX通道内部DMA使能(TX Inner DMA Enable)
|
3 |
R/W |
0x0 |
RXIDMA_EN
RX通道内部DMA使能(RX Inner DMA Enable)
|
2 |
R/W |
0x0 |
AMOD
访问模式选择(Access Mode)
0:AHB访问模式
1:AXI访问模式
注意:使能XIP功能,该位必须置1;退出XIP功能,该位必须清零。
|
1 |
R/W |
0x0 |
CTRL_MODE_SEL
工作模式选择(Controller Work Mode Select)
0:不支持
1:主机模式
注意:当START=1时,不能写入。
|
0 |
R/W |
0x0 |
CTRL_EN
控制器使能(Controller Enable)
0:禁用
1:使能
注意:当传输形式从bit_mode切换到byte_mode时,必须使能一次。
|
11.1.5.3. 0x008 SPI_TCFG
默认值:0x00000087 |
SPI传输配置(SPI Transfer Configuration) |
||
---|---|---|---|
位域 |
类型 |
默认值 |
描述 |
31 |
R/WAC |
0x0 |
START
启动数据传输(Start Data Transfer)
0:空闲状态
1:启动数据传输
置1,开始执行SPI数据传输,完成后自动清零。
注意:当START=1时不能写入。
|
30:26 |
- |
- |
-
|
25 |
R/W |
0x0 |
3WIRE_EN
三线byte模式传输使能(3-Wire Byte Mode Transfer Enable)
0:标准模式,MOSI与MISO引脚独立
1:使能三线byte模式传输,此时MOSI与MISO引脚复用
|
24:15 |
- |
- |
-
|
14 |
R/W |
0x0 |
TXDLY_EN
发送数据延时模式使能(TX Data Delay Mode Enable)
0:正常发送
1:使能延时发送
注意:在 Dual/Quad模式下,该位推荐置1,发送数据延时半个时钟周期。
|
13 |
R/W |
0x0 |
RXDLY_DIS
接收数据延时采样模式配置(RX Data Delay Sample Mode Disable)
0:延时采样模式
1:正常采样模式
在正常采样模式下,SPI在边沿采样数据;
在延时采样模式下,SPI延迟半个时钟后在下一个边沿采样。
|
12 |
R/W |
0x0 |
LSB_EN
最低有效位优先传输使能(Low Significant Bit Transmit Enable)
0:最高有效位先传输
1:最低有效位先传输
注意:当START=1时不能写入。
|
11 |
R/W |
0x0 |
RXINDLY_EN
接收数据内部采样点模式配置(RX Data Inner Sample Delay Mode Enable)
0:内部读数据采样点不用延迟
1:内部读数据的采样点延迟半个时钟周期
|
10 |
R/W |
0x0 |
HSWM
高速写模式配置(High Speed Write Mode Configuration)
0:正常写模式
1:高速写模式,提前半个时钟周期切换到下一个数据
注意:当START=1时不能写入。
|
9 |
R/W |
0x0 |
DMY_VAL
填充数据值配置(Dummy Byte Value Configuration)
0:填充数据的值为0x00
1:填充数据的值为0xFF
注意:当START=1时不能写入。
|
8 |
R/W |
0x0 |
DINVD
丢弃无效数据(Discard Invalid Data)
发送数据时,设备端会主动发无效数据回来,此时如果不能及时
读取FIFO的数据,该位需要使能,自动丢弃读到的无效数据。
0:接收所有的无效数据
1:丢弃所有的无效数据
注意:当START=1时不能写入。
|
7 |
R/W |
0x1 |
CS_LEVEL
片选信号电平配置(CS Level Configuration)
0:低电平
1:高电平
注意:当START=1时不能写入。
|
6 |
R/W |
0x0 |
CS_CTL_SEL
片选信号控制模式选择(CS Control Mode Select)
0:SPI控制器
1:软件控制
通常由控制器自动发送CS信号,当该位置1,必须手动配置CS_LEVEL
的电平状态。
注意:当START=1时不能写入。
|
5:4 |
R/W |
0x0 |
CS_NUM
选中外部SPI设备的CS引脚序号(CS Pin Number)
00:SPI_CS0有效
01-11:保留
注意:当START=1时不能写入。
|
3 |
R/W |
0x0 |
CS_VALID_CTL
片选信号有效控制(CS Valid Mode Control)
0:在SPI数据传输期间,片选信号一直有效
1:在SPI数据传输期间,传输暂停时片选信号无效
该位用于选择片选信号的输出波形形式。
注意:当START=1时不能写入,当CS_CTL_SEL=0时该位才有效。
|
2 |
R/W |
0x1 |
CS_POL
片选信号极性控制(CS Polarity Control)
0:高电平有效
1:低电平有效
注意:当START=1时不能写入。
|
1 |
R/W |
0x1 |
CPOL
时钟极性控制(Clock Polarity Control)
0:空闲时为低电平
1:空闲时为高电平
注意:当START=1时不能写入。
|
0 |
R/W |
0x1 |
CPHA
时钟/数据相位控制(Clock Phase Control)
0:时钟的第一个边沿采样数据
1:时钟的第二个边沿采样数据
注意:当START=1时不能写入。
|
11.1.5.4. 0x010 SPI_ICR
默认值:0x00000000 |
SPI中断控制(SPI Interrupt Control) |
||
---|---|---|---|
位域 |
类型 |
默认值 |
描述 |
31:24 |
- |
- |
-
|
23 |
R/W |
0x0 |
TXIDMA_DONE_INTE
内部DMA TX传输完成中断使能
|
22 |
R/W |
0x0 |
RXIDMA_DONE_INTE
内部DMA RX传输完成中断使能
|
21 |
R/W |
0x0 |
RXFIFO_UNALIGN_INTE
内部DMA模式下,RX FIFO数据非4byte对齐中断使能
|
20 |
R/W |
0x0 |
IDMA_ERROR_INTE
内部DMA总线错误中断使能
|
19 |
R/W |
0x0 |
AXI_TRAN_DONE_INTE
AXI传输完成中断使能
|
18 |
R/W |
0x0 |
AXI_CFG_ERROR_INTE
AXI配置错误中断使能
|
17 |
R/W |
0x0 |
AXI_TRAN_ERROR_INTE
AXI传输错误中断使能
|
16 |
R/W |
0x0 |
AHB_TRAN_ERROR_INTE
AHB传输错误中断使能
|
15:14 |
- |
- |
-
|
13 |
R/W |
0x0 |
CS_INTE
CS无效中断使能(CS Invalid Interrupt Enable)
片选信号从有效状态变到无效状态。
0:禁用
1:使能
|
12 |
R/W |
0x0 |
TD_INTE
传输完成中断使能(Transfer Done Interrupt Enable)
0:禁用
1:使能
|
11 |
R/W |
0x0 |
TF_UDR_INTE
TX FIFO下溢出中断使能(TX FIFO Underrun Interrupt Enable)
0:禁用
1:使能
当CPU/DMA读取空的TX FIFO会产生此中断。
|
10 |
R/W |
0x0 |
TF_OVF_INTE
TX FIFO上溢出中断使能(TX FIFO Overflow Interrupt Enable)
0:禁用
1:使能
当CPU/DMA写入满的TX FIFO会产生此中断。
|
9 |
R/W |
0x0 |
RF_UDR_INTE
RX FIFO下溢出中断使能(RX FIFO Underrun Interrupt Enable)
0:禁用
1:使能
当CPU/DMA读取空的RX FIFO会产生此中断。
|
8 |
R/W |
0x0 |
RF_OVF_INTE
RX FIFO上溢出中断使能(RX FIFO Overflow Interrupt Enable)
0:禁用
1:使能
当CPU/DMA写入满的RX FIFO会产生此中断。
|
7 |
- |
- |
-
|
6 |
R/W |
0x0 |
TF_FUL_INTE
TX FIFO满中断使能(TX FIFO Full Interrupt Enable)
0:禁用
1:使能
|
5 |
R/W |
0x0 |
TF_EMP_INTE
TX FIFO为空中断使能(TX FIFO Empty Interrupt Enable)
0:禁用
1:使能
|
4 |
R/W |
0x0 |
TF_RDY_INTE
TX FIFO准备好中断使能(TX FIFO Ready Interrupt Enable)
0:禁用
1:使能
|
3 |
- |
- |
-
|
2 |
R/W |
0x0 |
RF_FUL_INTE
RX FIFO满中断使能(RX FIFO Full Interrupt Enable)
0:禁用
1:使能
|
1 |
R/W |
0x0 |
RF_EMP_INTE
RX FIFO为空中断使能(RX FIFO Empty Interrupt Enable)
0:禁用
1:使能
|
0 |
R/W |
0x0 |
RF_RDY_INTE
RX FIFO准备好中断使能(RX FIFO Ready Interrupt Enable)
0:禁用
1:使能
|
注意:bit[23:16]QSPI0配置无效,QPI1配置有效
11.1.5.5. 0x014 SPI_ISTS
默认值:0x00000032 |
SPI中断状态(SPI Interrupt Status) |
||
---|---|---|---|
位域 |
类型 |
默认值 |
描述 |
31:24 |
- |
- |
-
|
23 |
R/W1C |
0x0 |
TXIDMA_DONE
内部DMA TX完成信号中断
置1,表示内部DMA发送数据传输完成。
|
22 |
R/W1C |
0x0 |
RXIDMA_DONE
内部DMA RX完成信号中断
置1,表示内部DMA接收数据传输完成。
|
21 |
R/W1C |
0x0 |
RXFIFO_UNALIGN
RX FIFO非对齐中断
内部DMA模式下,该位置1,表示RX FIFO数据非4byte对齐。
|
20 |
R/W1C |
0x0 |
IDMA_ERROR
IDMA错误中断
该位置1,表示内部DMA发生总线错误状态。
|
19 |
R/W1C |
0x0 |
AXI_TRAN_DONE
AXI传输完成中断
置1,表示AXI传输完成。
此时可结束AXI传输,开启AHB传输。
|
18 |
R/W1C |
0x0 |
AXI_CFG_ERROR
AXI配置错误中断
置1,表示AXI模式下寄存器配置错误。
此时需立刻结束AXI传输,重新配置寄存器。
|
17 |
R/W1C |
0x0 |
AXI_TRAN_ERROR
AXI传输错误中断
置1,表示AHB正在传输时,发起AXI传输请求。
此时需立刻结束AHB传输,启动AXI传输。
|
16 |
R/W1C |
0x0 |
AHB_TRAN_ERROR
AHB传输错误中断
置1,表示AXI正在传输时,发起AHB传输请求。
此时需立刻结束AXI传输,启动AHB传输。
|
15:14 |
- |
- |
-
|
13 |
R/W1C |
0x0 |
CS_INV
片选信号无效中断(CS Invalid Interrupt)
置1,表示片选状态从有效变为无效。
|
12 |
R/W1C |
0x0 |
TD
传输完成中断(Transfer Done Interrupt)
0:正在传输
1:传输完成
|
11 |
R/W1C |
0x0 |
TF_UDF
TX FIFO下溢出中断(TX FIFO Underrun Interrupt)
0:TXFIFO没有下溢出
1:TXFIFO下溢出
|
10 |
R/W1C |
0x0 |
TF_OVF
TX FIFO上溢出中断(TX FIFO Overflow Interrupt)
0:TXFIFO没有上溢出
1:TXFIFO上溢出
|
9 |
R/W1C |
0x0 |
RF_UDF
RX FIFO下溢出中断(RX FIFO Underrun Interrupt)
0:RXFIFO没有下溢出
1:RXFIFO下溢出
|
8 |
R/W1C |
0x0 |
RF_OVF
RX FIFO上溢出中断(RX FIFO Overflow Interrupt)
0:RXFIFO没有上溢出
1:RXFIFO上溢出
|
7 |
- |
- |
-
|
6 |
R/W1C |
0x0 |
TF_FULL
TX FIFO满中断(TX FIFO Full Interrupt)
0:TXFIFO未满
1:TXFIFO已满
|
5 |
R/W1C |
0x1 |
TF_EMP
TX FIFO为空中断(TX FIFO Empty Interrupt)
0:TXFIFO非空
1:TXFIFO为空
|
4 |
R/W1C |
0x1 |
TF_READY
TX FIFO准备好中断(TX FIFO Ready Interrupt)
0:TX_WL > TX_WATER_MARK
1:TX_WL <= TX_WATER_MARK
该位置1,CPU可以向TX FIFO写入数据。
|
3 |
- |
- |
-
|
2 |
R/W1C |
0x0 |
RF_FULL
RX FIFO满中断(RX FIFO Full Interrupt)
0:RXFIFO未满
1:RXFIFO已满
|
1 |
R/W1C |
0x1 |
RF_EMP
RX FIFO为空中断(RX FIFO Empty Interrupt)
0:RXFIFO非空
1:RXFIFO为空
|
0 |
R/W1C |
0x0 |
RF_READY
RX FIFO准备好中断(RX FIFO Ready Interrupt)
0:RX_WL < RX_WATER_MARK
1:RX_WL >= RX_WATER_MARK
该位置1,CPU可以从RX FIFO读出数据。
|
注意:bit[23:16]QSPI0配置无效,QPI1配置有效
11.1.5.6. 0x018 SPI_FCTL
默认值:0x00400001 |
SPI FIFO控制(SPI FIFO Control) |
||
---|---|---|---|
位域 |
类型 |
默认值 |
描述 |
31 |
R/WAC |
0x0 |
TF_RST
TX FIFO复位,完成后自动清零。
|
30:25 |
- |
- |
-
|
24 |
R/W |
0x0 |
TF_DREQ_EN
TX FIFO DMA请求使能
0:禁用
1:使能
|
23:16 |
R/W |
0x40 |
TF_WATER_MARK
TX FIFO发出写请求信号的FIFO水位值,当FIFO水位小于该值,
并且TF_DREQ_EN=1,向DMA发起写请求。
|
15 |
R/WAC |
0x0 |
RF_RST
RX FIFO复位,完成后自动清零。
|
14:9 |
- |
- |
-
|
8 |
R/W |
0x0 |
RF_DREQ_EN
RX FIFO DMA请求使能
0:禁用
1:使能
|
7:0 |
R/W |
0x1 |
RF_WATER_MARK
RX FIFO发出读请求信号的FIFO水位值,当FIFO水位大于该值,
并且RF_DREQ_EN=1,向DMA发起读请求。
|
11.1.5.7. 0x01C SPI_FSTS
默认值:0x00000000 |
SPI FIFO状态(SPI FIFO Status) |
||
---|---|---|---|
位域 |
类型 |
默认值 |
描述 |
31 |
R |
0x0 |
TF_WBUF_STS
TX FIFO写缓存状态(TX FIFO Write Buffer Status)
置1,表示写缓存正在执行写操作。
|
30:25 |
R |
0x0 |
TF_WBUF_CNT
写缓存计数器(TX FIFO Write Buffer Counter)
表示TX FIFO写缓存中字节的数量。
注意:QSPI0最大4个字节,QSPI1最大32个字节
|
24 |
- |
- |
-
|
23:16 |
R |
0x0 |
TF_CNT
TX FIFO计数器(TX FIFO Counter)
0:在TX FIFO中有0字节数据
1:在TX FIFO中有1字节数据
…
96:在TX FIFO中有96字节数据
注意:QSPI0最大68个字节,QSPI1最大96个字节
|
15 |
R |
0x0 |
RF_RBUF_STS
RX FIFO读缓存状态(RX FIFO Read Buffer Status)
置1,表示读缓存正在执行读操作。
|
14:8 |
R |
0x0 |
RF_RBUF_CNT
读缓存计数器(RX FIFO Read Buffer Counter)
表示RX FIFO 读缓存中字节的数量。
注意:QSPI0最大4个字节,QSPI1最大64个字节
|
7:0 |
R |
0x0 |
RF_CNT
RX FIFO计数器(RX FIFO Counter)
0:在RX FIFO中有0字节
1:在RX FIFO中有1字节
…
128:在RX FIFO中有128字节
注意:QSPI0最大68个字节,QSPI1最大128个字节
|
11.1.5.8. 0x024 SPI_CCFG
默认值:0x00000002 |
SPI时钟配置(SPI Clock Configuration) |
||
---|---|---|---|
位域 |
类型 |
默认值 |
描述 |
31:13 |
- |
- |
-
|
12 |
R/W |
0x0 |
CKDIV_SEL
时钟分频器选择(Clock Divider Select)
0:选择时钟分频器1
1:选择时钟分频器2
|
11:8 |
R |
0x0 |
CKDIV1
时钟分频器1(Clock Divider 1)
SPI接口时钟频率根据如下公式计算:
SPI_CLK = 源时钟频率/(2^CKDIV1)
|
7:0 |
R/W |
0x2 |
CKDIV2
时钟分频器2(Clock Divider 2)
SPI接口时钟频率根据如下公式计算:
SPI_CLK = 源时钟频率/(2*(CKDIV2 + 1))
|
11.1.5.9. 0x030 SPI_TBC
默认值:0x00000000 |
SPI总传输字节计数器(SPI Total Bytes Counter) |
||
---|---|---|---|
位域 |
类型 |
默认值 |
描述 |
31:24 |
- |
- |
-
|
23:0 |
R/W |
0x0 |
TB_CNT
总传输字节计数器(Total Bytes Counter)
该值定义了传输的字节总数,包括发送,接收和填充数据。
0:共传输0个字节
1:共传输1个字节
…
N:共传输N个字节
注意:传输数据总数=发送数据+接收数据+填充数据
|
11.1.5.10. 0x034 SPI_TWC
默认值:0x00000000 |
SPI写发送计数器(SPI Transmit Write Counter) |
||
---|---|---|---|
位域 |
类型 |
默认值 |
描述 |
31:24 |
- |
- |
-
|
23:0 |
R/W |
0x0 |
TXD_CNT
写数据计数器(TX Data Counter)
该值定义了在填充数据之前发送到TXFIFO的写数据字节
总数,为了节约带宽,填充数据由控制器自动发送。
0:共发送0个字节
1:共发送1个字节
…
N:共发送N个字节
|
11.1.5.11. 0x038 SPI_TMC
默认值:0x00000000 |
SPI传输控制(SPI Transmit Miscellaneous Control) |
||
---|---|---|---|
位域 |
类型 |
默认值 |
描述 |
31 |
R/W |
0x0 |
QPI_EN
QPI模式使能(QPI Transfer mode Enable)
0:命令使用1线模式传输
1:命令使用4线模式传输
QPI模式下,命令/地址/数据都使用4线模式传输。
注意:仅当QUAD_EN=1时有效。
|
30 |
R/W |
0x0 |
QADDR_EN
QIO模式使能(QIO Transfer mode Enable)
0:地址使用1线模式传输
1:地址使用4线模式传输
QIO模式下,该位置1,命令使用1线传输,地址/数据使用4线传输。
注意:仅当QUAD_EN=1时有效。
|
29 |
R/W |
0x0 |
QUAD_EN
四线数据传输模式使能(Quad Transfer Mode Enable)
0:4线数据模式禁用
1:4线数据模式使能
注意:4线数据模式包括4线输入和4线输出。
|
28 |
R/W |
0x0 |
DUAL_EN
双线数据传输模式使能(Dual Transfer Mode Enable)
0:发送或接收数据使用单线数据传输模式
1:发送或接收数据使用双线数据传输模式
注意:当START=1时不能写入,仅当QUAD_EN=0时有效。
|
27:24 |
R/W |
0x0 |
DMY_CNT
填充数据计数器(Dummy Bytes Counter)
定义了待发送的填充数据的字节数,用于双路模式和四路模式。
0:共发送0个字节填充数据
1:共发送1个字节填充数据
…
N:共发送N个字节填充数据
注意:当START=1时不能写入。
|
23:0 |
R/W |
0x0 |
STXD_CNT
单线发送数据计数器(Single TX Data Counter)
该值定义了需要使用单线模式发送的数据长度。
对于单线模式:包括命令、地址、数据;
对于双线和四线模式:仅包括命令、地址;
对于双线IO模式:仅包括命令。
0:单线共发送0个字节
1:单线共发送1个字节
…
N:单线共发送N个字节
注意:当START=1时不能写入。
|
11.1.5.12. 0x040 SPI_BMTC
默认值:0x000000A0 |
SPI位模式传输配置(SPI Bit-Mode Transfer Configuration) |
||
---|---|---|---|
位域 |
类型 |
默认值 |
描述 |
31 |
R/WAC |
0x0 |
BM_START
启动传输数据(Bit-Mode Start Data Transfer)
0:空闲状态
1:启动传输数据
该字段置1,启动发送串行数据流,数据存放在(SPI_BMTXD和SPI_BMRXD
寄存器),传输完成后自动清零。
|
30 |
R/W |
0x0 |
BM_SMP_SEL
采样模式选择(Bit-Mode Sample Mode Select)
1:标准采样模式
0:延时采样模式
在标准采样模式下,SPI主机在SCLK的上升边沿采样数据;
在延时采样模式下,SPI主机延时半个时钟周期,在SCLK的上升边沿采样
数据。
|
29:26 |
- |
- |
-
|
25 |
R/W1C |
0x0 |
BM_TD
传输完成(Bit-Mode Transfer Done)
0:忙等待
1:传输完成
置1,表示最后一位数据传输完成,该字段写1清零。
|
24 |
R/W |
0x0 |
BM_TD_INTE
传输完成中断使能(Bit-Mode Transfer Done Interrupt Enable)
0:禁用
1:使能
注意:当总线模式选择10b/11b时有效。
|
23:22 |
- |
- |
-
|
21:16 |
R/W |
0x00 |
BM_RXCNT
接收串行数据长度(Bit-Mode RX Data Length)
000000b:接收0比特
000001b:接收1比特
…
100000b:接收32比特
注意:当总线模式选择10b/11b时有效,当BM_START=1时不能写入。
|
15:14 |
- |
- |
-
|
13:8 |
R/W |
0x00 |
BM_TXCNT
发送串行数据长度(Bit-Mode TX Data Length)
000000b:发送0比特
000001b:发送1比特
…
100000b:发送32比特
注意:当总线模式选择10b/11b时有效,当BM_START=1时不能写入。
|
7 |
R/W |
0x1 |
BMCS_LEVEL
片选信号电平配置
0:配置片选信号为低电平
1:配置片选信号为高电平
注意:当总线模式选择10b/11b时有效,当BM_START=1时不能写入。
|
6 |
R/W |
0x0 |
BMCS_CTRL_SEL
片选信号输出控制方式选择
0:SPI控制器
1:软件控制
通常控制器会自动控制片选信号高低电平。当该位置1,则需要通过软件
编程写入SPI_TCFG.CS_LEVEL的值,来控制片选信号。
注意:当总线模式选择10b/11b时有效,当BM_START=1时不能写入。
|
5 |
R/W |
0x1 |
BMCS_POL
片选信号极性控制
0:高电平有效
1:低电平有效
注意:当总线模式选择10b/11b时有效,当BM_START=1时不能写入。
|
4 |
- |
- |
-
|
3:2 |
R/W |
0x0 |
BMCS_NUM
片选信号引脚序号选择
00b:SPI_CS0选中
01b-11b:保留
注意:当总线模式选择10/11b时有效,当BM_START=1时不能写入。
|
1:0 |
R/W |
0x0 |
BMOD_SEL
总线模式选择(Bus Mode Select)
00b:数据流按字节对齐,工作在标准SPI,双路输入/双路输出SPI,
双路IO SPI,或四路输入/四路输出SPI
01b:预留
10b:数据流按位对齐,工作在3线模式下
11b:数据流按位对齐,工作在标准SPI模式下
|
11.1.5.13. 0x044 SPI_BMCLK
默认值:0x00000000 |
SPI位模式时钟配置(SPI Bit-Mode Clock Configuration) |
||
---|---|---|---|
位域 |
类型 |
默认值 |
描述 |
31:8 |
- |
- |
-
|
7:0 |
R/W |
0x0 |
BM_CKDIV
位模式时钟分频比例(Bit-Mode Clock Divide)
接口时钟频率计算公式如下:
SPI_CLK = 源时钟/(2*(BM_CKDIV + 1))
|
11.1.5.14. 0x048 SPI_BMTXD
默认值:0x00000000 |
SPI位模式发送数据值(SPI Bit-Mode TX Data) |
||
---|---|---|---|
位域 |
类型 |
默认值 |
描述 |
31:0 |
R/W |
0x0 |
BMTXD
位模式发送数据值
该寄存器用来存储发送的数据
注意:在传输过程中,最高有效位先发送。
|
11.1.5.15. 0x04C SPI_BMRXD
默认值:0x00000000 |
SPI位模式接收数据值(SPI Bit-Mode RX Data) |
||
---|---|---|---|
位域 |
类型 |
默认值 |
描述 |
31:0 |
R/W |
0x0 |
BMRXD
位模式接收数据值
该寄存器用来存储接收的数据
注意:在传输过程中,最高有效位先接收。
|
11.1.5.16. 0x050 SPI_BTR
默认值:0x77304010 |
SPI突发传输配置(SPI Burst Set) |
||
---|---|---|---|
位域 |
类型 |
默认值 |
描述 |
31:24 |
R/W |
0x77 |
CMD_INDEX
SPI命令指令值
SPI在XIP模式下,发送的Wrap Burst命令,支持0x77和0xC0两种典型值。
当QPI_EN=1,CMD使用4线传输;否则,CMD使用1线传输。
注意:0x77命令仅支持QIO模式;0xC0命令支持标准单线模式或QPI模式。
|
23:20 |
R/W |
0x3 |
DUMMY_BYTE
传输配置填充数据字节数
定义dummy的字节数,为固定值或取决于工作时钟频率,可根据WRAP的值配置。
|
19 |
R/W |
0x0 |
WIDTH
填充数据和有效数据位宽
Dummy和数据位宽配置寄存器,在QPI模式下无效。该位为0,默认为4bit位宽;
该位为1,配置为1bit位宽。
注意: 当burst命令为0xC0,工作在QIO模式下,该位必须配置为1;
工作在QPI模式下,该位不用配置。
|
18 |
R/W |
0x0 |
AUTO_WRAP_LEN
自动Wrap长度配置使能
该位为1,硬件根据SPI_WLEN寄存器获取设定值,
自动配置wrap长度;该位为0,wrap长度为固定值,通过SPI_BURST_WRAPPED
位域获取设定值。
|
17 |
- |
- |
-
|
16 |
R/W |
0x0 |
WRAP_EN
Wrap模式使能
当系统开启Cache功能,该位必须使能。
|
15:8 |
R/W |
0x40 |
SPI_BURST_WRAPPED
回环模式指令值
SPI模式XIP使能时,若AXI burst type是linear切换wrapped,触发此命令发送。
Wrap的值可以确定突发传输的长度和dummy的字节数,根据厂家的规格书进行设置。
|
7:0 |
R/W |
0x10 |
SPI_BURST_LINEAR
线性模式指令值
SPI模式XIP使能时,若AXI burst type是wrapped切换linear,触发此命令发送
|
注意:该寄存器仅在XIP模式下配置有效。
11.1.5.17. 0x054 SPI_RCM
默认值:0xEB20A000 |
SPI读命令模式(SPI Read Command Mode) |
||
---|---|---|---|
位域 |
类型 |
默认值 |
描述 |
31:24 |
R/W |
0xEB |
CMD_INDEX
读命令指令值
SPI在XIP模式下,定义读命令序号。
|
23:20 |
R/W |
0x2 |
DUMMY_BYTE
读操作填充数据字节数
SPI在XIP模式下,定义dummy时钟周期的个数。对于不同颗粒该值可能为
固定值,或根据工作频率进行选择。
|
19 |
- |
- |
-
|
18 |
R/W |
0x0 |
ADDR_4BYTE_EN
4字节地址模式使能
SPI在XIP模式下,使能地址位采用4byte模式传输
|
17 |
R/W |
0x0 |
READ_MODE_BYTE_EN
SPI读命令模式位使能
该位置1,地址后面增加1 byte模式位,模式位的线宽与地址位一致,
模式位的设定值由RDCMD_BYPASS_EN决定。
注意:SPI工作在Dual I/O,Quad I/O,QPI模式下时,用户可以配置该位使能,
否则当作dummy处理。
|
16 |
R/W |
0x0 |
RDCMD_BYPASS_EN
SPI读命令bypass模式使能
该位置1,模式位的设定值为RDCMD_BYPPASS_CODE;
否则,模式位的设定值为RDCMD_NORMAL_CODE。
|
15:8 |
R/W |
0xA0 |
RDCMD_BYPASS_CODE
读命令bypass模式指令值
在bypass模式下,第一次需要发送读命令,之后的连续读操作不需要再次发送读命令。
|
7:0 |
R/W |
0x00 |
RDCMD_NORMAL_CODE
读命令正常模式指令值
在正常模式下,每次读操作都需要发送读命令。
|
注意:该寄存器仅在XIP模式下配置有效。
11.1.5.18. 0x060 SPI_WRAP_LEN
默认值:0x03020100 |
SPI读命令模式(SPI Wrap Length Config) |
||
---|---|---|---|
位域 |
类型 |
默认值 |
描述 |
31:24 |
R/W |
0x03 |
WRAP64
Wrap长度为64byte对应的命令参数
|
23:16 |
R/W |
0x02 |
WRAP32
Wrap长度为32byte对应的命令参数
|
15:8 |
R/W |
0x01 |
WRAP16
Wrap长度为16byte对应的命令参数
|
7:0 |
R/W |
0x00 |
WRAP08
Wrap长度为8byte对应的命令参数
|
注意:该寄存器仅在XIP模式下配置有效。该寄存器的值与Wrap命令的值有关,0x77和0xC0命令对应的值不同, 有些器件还包含dummy长度的配置信息,该寄存器需要在XIP传输之前配置好。
11.1.5.19. 0x08C SPI_IDMA_TXLEN
默认值:0x00000000 |
SPI IDMA写传输长度(SPI Inner DMA Write Transaction Length) |
||
---|---|---|---|
位域 |
类型 |
默认值 |
描述 |
31:24 |
- |
- |
-
|
23:0 |
R/W |
0x00 |
IDMA_TXLEN
内部DMA发送的数据长度
内部DMA通过AHB总线发送数据到SPI控制器的写缓存。
|
注意:该寄存器仅在IDMA模式下配置有效。
11.1.5.20. 0x090 SPI_IDMA_RXLEN
默认值:0x00000000 |
SPI IDMA读传输长度(SPI Inner DMA Read Transaction Length) |
||
---|---|---|---|
位域 |
类型 |
默认值 |
描述 |
31:24 |
- |
- |
-
|
23:0 |
R/W |
0x00 |
IDMA_RXLEN
内部DMA接收的数据长度
内部DMA通过AHB总线从SPI控制器的读缓存接收数据。
|
注意:该寄存器仅在IDMA模式下配置有效。
11.1.5.21. 0x094 SPI_IDMA_TXADDR
默认值:0x00000000 |
SPI IDMA发送源地址(SPI Inner DMA TX Source Address) |
||
---|---|---|---|
位域 |
类型 |
默认值 |
描述 |
31:0 |
R/W |
0x0 |
IDMA_TXADDR
内部DMA发送数据的源地址
|
注意:该寄存器仅在IDMA模式下配置有效。
11.1.5.22. 0x098 SPI_IDMA_RXADDR
默认值:0x00000000 |
SPI IDMA接收目的地址(SPI Inner DMA RX Destination Address) |
||
---|---|---|---|
位域 |
类型 |
默认值 |
描述 |
31:0 |
R/W |
0x0 |
IDMA_RXADDR
内部DMA接收数据的目标地址
|
注意:该寄存器仅在IDMA模式下配置有效。
11.1.5.23. 0x09C SPI_IDMA_BTCFG
默认值:0x00000A04 |
SPI IDMA突发传输配置(SPI Inner DMA Burst Config) |
||
---|---|---|---|
位域 |
类型 |
默认值 |
描述 |
31:14 |
- |
- |
-
|
13 |
R/W |
0x0 |
RX_PRI_EN
RX优先传输使能
|
12 |
R/W |
0x0 |
AUTO_LEN
自动突发传输长度配置使能
开启后控制器会根据Buffer空满状态自动调整burst传输长度。
|
11:10 |
R/W |
0x2 |
RX_BURST_LEN
RX突发传输长度配置
0: 突发传输1字节
1: 突发传输4字节
2: 突发传输8字节
3: 突发传输16字节
|
9:8 |
R/W |
0x2 |
TX_BURST_LEN
TX突发传输长度配置
0: 突发传输1字节
1: 突发传输4字节
2: 突发传输8字节
3: 预留
|
7:3 |
- |
- |
-
|
2:0 |
R/W |
0x4 |
IDMA_BUS_WIDTH
内部DMA总线位宽
以字节为单位,固定为4字节,即32bit传输。
对于非4字节对齐的传输,控制器会内部补齐,但不传输多余的数据到FIFO。
|
注意:该寄存器仅在IDMA模式下配置有效。
11.1.5.24. 0x200 SPI_TXD
默认值:0x00000000 |
SPI发送数据(SPI TX Data) |
||
---|---|---|---|
位域 |
类型 |
默认值 |
描述 |
31:0 |
WO |
0x0 |
TXD
发送数据值
该寄存器可以通过AHB总线以字节,半字或字为单位进行访问。
以字节访问时,每次写一笔数据到TX FIFO,FIFO深度加1;
以半字访问时,每次写两笔数据到TX FIFO,FIFO深度加2;
以字为单位访问时,每次写四笔数据到TX FIFO,FIFO深度加4。
注意:该寄存器为只写。
|
11.1.5.25. 0x300 SPI_RXD
默认值:0x00000000 |
SPI接收数据(SPI RX Data) |
||
---|---|---|---|
位域 |
类型 |
默认值 |
描述 |
31:0 |
RO |
0x0 |
RXD
接收数据值
该寄存器可以通过AHB总线以字节,半字或字为单位进行访问。
以字节访问时,每次从RX FIFO读一笔数据到寄存器,FIFO深度减1;
以半字访问时,每次从RX FIFO读两笔数据,FIFO深度减2;
以字为单位访问时,每次从RX FIFO读四笔数据,FIFO深度减4。
注意:该寄存器为只读。
|