Edit online

寄存器描述

3 Mar 2025
Read time: 22 minute(s)

0x000 SPI_VER

默认值:0x00000200

SPI 控制器版本 (SPI Controller Version)

位域

类型

默认值

描述

31:16

-

-

-

15:0

R

0x200

VER

版本号

注: 不同控制器的版本号可能不同。

0x004 SPI_CFG

默认值:0x00000080

SPI 配置 (SPI Configuration)

位域

类型

默认值

描述

31

R/WAC

0x0

CTRL_RST

控制器复位(Controller Reset)

置 1,SPI 控制器复位,完成后自动清零。

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:使能

注: 当传输形式从位模式切换到字节模式时,必须使能一次。

0x008 SPI_TCFG

默认值:0x00000087

SPI 传输配置 (SPI Transfer Configuration)

位域

类型

默认值

描述

31

R/WAC

0x0

START
启动数据传输(Start Data Transfer)
  • 0:空闲状态

  • 1:启动数据传输

    置 1,开始执行 SPI 数据传输,完成后自动清零。

注: 当 START=1 时不能写入。

28:27

-

-

-

26

R/W

0x0

SLV_OEN

从机模式输出使能(Slave Output Enable)

从机模式下,Dual /Quad I/O 模式输出使能,单线模式不需要配置

  • 0:不使能输出,默认为输入
  • 1:输出使能

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,必须手动配置 LEVEL 的电平状态。

注: 当 START=1 时不能写入。

5:4

R/W

0x0

CS_NUM
选中外部 SPI 设备的 CS 引脚序号(CS Pin Number)
  • 0:SPI_CS0 有效

  • 1:SPI_CS1 有效

  • 2-3:保留

注: 当 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 时不能写入。

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:使能

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 读出数据。

0x018 SPI_FCTL

默认值:0x00400001

SPI FIFO 控制 (SPI FIFO Control)

位域

类型

默认值

描述

31

R/WAC

0x0

TF_RST

TX FIFO 复位,完成后自动清零。

-

-

-

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 发起读请求。

0x01C SPI_FSTS

默认值:0x00000000

SPI FIFO 状态 (SPI FIFO Status)

位域

类型

默认值

描述

31

R

0x0

TF_WBUF_STS

TX FIFO 写缓存状态(TX FIFO Write Buffer Status)

置 1,表示写缓存正在执行写操作。

30:28

R

0x0

TF_WBUF_CNT

写缓存计数器(TX FIFO Write Buffer Counter)

表示 TX FIFO 写缓存中字节的数量。

27:24

-

-

-

23:16

R

0x0

TF_CNT
TX FIFO 计数器(TX FIFO Counter)
  • 0:在 TX FIFO 中有 0 字节数据

  • 1:在 TX FIFO 中有 1 字节数据

  • 64:在 TX FIFO 中有 64 字节数据

15

R

0x0

RF_RBUF_STS

RX FIFO 读缓存状态(RX FIFO Read Buffer Status)

置 1,表示读缓存正在执行读操作。

14:12

R

0x0

RF_RBUF_CNT

读缓存计数器(RX FIFO Read Buffer Counter)

表示 RX FIFO 读缓存中字节的数量。

11:8

-

-

-

7:0

R

0x0

RF_CNT
RX FIFO 计数器(RX FIFO Counter)
  • 0:在 RX FIFO 中有 0 字节

  • 1:在 RX FIFO 中有 1 字节

  • 64:在 RX FIFO 中有 64 字节

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/W

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))

0x028 SPI_MISC

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 个字节

注: 传输数据总数=发送数据+接收数据+填充数据

0x034 SPI_TWC

默认值:0x00000000

SPI 写发送计数器 (SPI Transmit Write Counter)

位域

类型

默认值

描述

31:24

-

-

-

23:0

R/W

0x0

TXD_CNT

写数据计数器(TX Data Counter)

该值定义了在填充数据之前发送到 TX FIFO 的写数据字节总数,为了节约带宽,填充数据由控制器自动发送。
  • 0:共发送 0 个字节

  • 1:共发送 1 个字节

  • N:共发送 N 个字节

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 时不能写入。

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)
  • 0:延时采样模式

  • 1:标准采样模式

在标准采样模式下,SPI 主机在 SCLK 的上升边沿采样数据。

在延时采样模式下,SPI 主机延时半个时钟周期,在 SCLK 的上升边沿采样数据。

29:26

-

-

-

25

R/W1C

0x0

BM_TD
传输完成(Bit-Mode Transfer Done)
  • 0:忙等待

  • 1:传输完成

    置 1,表示最后一位数据传输完成,该字段写 1 清零。

注: 传输完成后,该位需要重复写 1 清零,检查该位是否为 0,直到清零后再启动下一笔传输。

24

R/W

0x0

BM_TD_INTE
传输完成中断使能(Bit-Mode Transfer Done Interrupt Enable)。
  • 0:禁用

  • 1:使能

    注: 当总线模式选择 2 /3 时有效。

23:22

-

-

-

21:16

R/W

0x0

BM_RXCNT
接收串行数据长度(Bit-Mode RX Data Length)
  • 000000b:接收 0 比特

  • 000001b:接收 1 比特

  • 100000b:接收 32 比特

注: 当总线模式选择 2 /3 时有效,当 BM_START=1 时不能写入。

15:14

-

-

-

13:8

R/W

0x00

BM_TXCNT
发送串行数据长度(Bit-Mode TX Data Length)
  • 000000b:发送 0 比特

  • 000001b:发送 1 比特

  • 100000b:发送 32 比特

注: 当总线模式选择 2 /3 时有效,当 BM_START=1 时不能写入。

7

R/W

0x1

BMCS_LEVEL

片选信号电平配置

  • 0:配置片选信号为低电平
  • 1:配置片选信号为高电平
注: 当总线模式选择 2 /3 时有效,当 BM_START=1 时不能写入。

6

R/W

0x0

BMCS_CTRL_SEL
片选信号输出控制方式选择
  • 0:SPI 控制器

  • 1:软件控制

通常控制器会自动控制片选信号高低电平。当该位置 1,则需要通过软件编程写入 SPI_TCFG.CS_LEVEL 的值,来控制片选信号。

注: 当总线模式选择 2 /3 时有效,当 BM_START=1 时不能写入。

5

R/W

0x1

BMCS_POL
片选信号极性控制
  • 0:高电平有效

  • 1:低电平有效

注: 当总线模式选择 2 /3 时有效,当 BM_START=1 时不能写入。

4

-

-

-

3:2

R/W

0x0

BMCS_NUM
片选信号引脚序号选择
  • 0:SPI_CS0 选中

  • 1-3:保留

注: 当总线模式选择 2 /3 时有效,当 BM_START=1 时不能写入。

1:0

R/W

0x0

BMOD_SEL

总线模式选择(Bus Mode Select)

  • 0:数据流按字节对齐,工作在标准 SPI,双路输入 /双路输出 SPI,双路 IO SPI,或四路输入/四路输出 SPI

  • 1:预留

  • 2:数据流按位对齐,工作在三线模式下

  • 3:数据流按位对齐,工作在标准 SPI 模式下

0x044 SPI_BMCLK

默认值:0x02000000

SPI 位模式时钟配置 (SPI Bit-Mode Clock Configuration)

位域

类型

默认值

描述

31:8

-

-

-

7:0

R/W

0x0

BM_CKDIV

位模式时钟分频比例(Bit-Mode Clock Divide)

接口时钟频率计算公式如下:

SPI_CLK = 源时钟/(2*BM_CKDIV )

注: 当 BM_CKDIV 为 0,SPI_CLK = 源时钟/2

0x048 SPI_BMTXD

默认值:0x00000000

SPI 位模式发送数据值 (SPI Bit-Mode TX Data)

位域

类型

默认值

描述

31:0

R/W

0x0

BMTXD

位模式发送数据值

该寄存器用来存储发送的数据

注: 在传输过程中,最高有效位先发送。

0x04C SPI_BMRXD

默认值:0x00000000

SPI 位模式接收数据值 (SPI Bit-Mode RX Data)

位域

类型

默认值

描述

31:0

R/W

0x0

BMRXD

位模式接收数据值

该寄存器用来存储接收的数据

注: 在传输过程中,最高有效位先接收。

0x050 SPI_BTR

注: 该寄存器仅在 XIP 模式下配置有效。

默认值: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,默认为 4-bit 位宽。

  • 该位为 1,配置为 1-bit 位宽。

注: 当 burst 命令为 0xC0,工作在 QIO 模式下,该位必须配置为 1。

工作在 QPI 模式下,该位不用配置。

18

R/W

0x0

AUTO_WRAP_LEN

自动 Wrap 长度

  • 0:wrap 长度为固定值,通过 WRAPPED 位域获取设定值。
  • 1:wrap 长度可变,由硬件根据 SPI_WLEN 寄存器获取设定值,自动配置 wrap 长度。

17

-

-

-

16

R/W

0x0

WRAP_EN

Wrap 模式使能

当系统开启 Cache 功能,该位必须使能。

15:8

R/W

0x40

SPI_BURST_WRAPPED

Wrap 模式指令值

SPI 模式 XIP 使能时,若 AXI burst type 是 linear 切换 wrapped,触发此命令发送。Wrap 的值可以确定突发传输的长度和 dummy 的字节数,根据厂家的规格书进行设置。

7:0

R/W

0x10

SPI_BURST_LINEAR

线性模式指令值

SPI 模式 XIP 使能时,若 AXI burst type 是 wrapped 切换 linear,触发此命令发送

0x054 SPI_RCM

注: 该寄存器仅在 XIP 模式下配置有效。

默认值: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_EN4

字节地址模式使能

SPI 在 XIP 模式下,使能地址位采用 4 bytes 模式传输

17

R/W

0x0

READ_MODE_BYTE_ENSPI

读命令模式位使能

该位置 1,地址后面增加 1 byte 模式位,模式位的线宽与地址位一致,模式位的设定值由 RDCMD_BYPASS_EN 决定。

注: SPI 工作在 Dual I/O,Quad I/O,QPI 模式下时,用户可以配置该位使能,否则当作 dummy 处理。

16

R/W

0x0

RDCMD_BYPASS_ENSPI

读命令 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

读命令正常模式指令值

在正常模式下,每次读操作都需要发送读命令。

0x060 SPI_WRAP_LEN

注: 该寄存器仅在 XIP 模式下配置有效。该寄存器的值与 Wrap 命令的值有关,0x77 和 0xC0 命令对应的值不同,有些器件还包含 dummy 长度的配置信息,该寄存器需要在 XIP 传输之前配置好。

默认值:0x03020100

SPI 读命令模式 (SPI Wrap Length Config)

位域

类型

默认值

描述

31:24

R/W

0x03

WRAP64

Wrap 长度为 64 字节对应的命令参数

23:16

R/W

0x02

WRAP32

Wrap 长度为 32 字节对应的命令参数

15:8

R/W

0x01

WRAP16

Wrap 长度为 16 字节对应的命令参数

7:0

R/W

0x00

WRAP08

Wrap 长度为 8 字节对应的命令参数

0x08C SPI_IDMA_TXLEN

注: 该寄存器仅在 IDMA 模式下配置有效。

默认值:0x00000000

SPI IDMA 写传输长度 (SPI Inner DMA Write Transaction Length)

位域

类型

默认值

描述

31:24

-

-

-

23:0

R/W

0x00

IDMA_TXLEN

内部 DMA 发送的数据长度

内部 DMA 通过 AHB 总线发送数据到 SPI 控制器的写缓存。

0x090 SPI_IDMA_RXLEN

注: 该寄存器仅在 IDMA 模式下配置有效。

默认值:0x00000000

SPI IDMA 读传输长度 (SPI Inner DMA Read Transaction Length)

位域

类型

默认值

描述

31:24

-

-

-

23:0

R/W

0x00

IDMA_RXLEN

内部 DMA 接收的数据长度

内部 DMA 通过 AHB 总线从 SPI 控制器的读缓存接收数据。

0x094 SPI_IDMA_TXADDR

注: 该寄存器仅在 IDMA 模式下配置有效。

默认值:0x00000000

SPI IDMA 发送源地址 (SPI Inner DMA TX Source Address)

位域

类型

默认值

描述

31:0

R/W

0x0

IDMA_TXADDR

内部 DMA 发送数据的源地址

0x098 SPI_IDMA_RXADDR

注: 该寄存器仅在 IDMA 模式下配置有效。

默认值:0x00000000

SPI IDMA 接收目的地址 (SPI Inner DMA RX Destination Address)

位域

类型

默认值

描述

31:0

R/W

0x0

IDMA_RXADDR

内部 DMA 接收数据的目标地址

0x09C SPI_IDMA_BTCFG

注: 该寄存器仅在 IDMA 模式下配置有效。

默认值:0x00004A04

SPI IDMA 突发传输配置 (SPI Inner DMA Burst Config)

位域

类型

默认值

描述

31:14

-

-

-

13

R/W

0x0

RX_PRI_EN

RX 优先传输使能

12

R/W

0x0

AUTO_LEN

自动突发传输长度配置使能

开启后控制器会根据 Buffer 空满状态自动调整突发传输长度。

11:10

R/W

0x2

RX_BURST_LEN
RX 突发传输长度配置
  • 0: 突发传输 4 字节

  • 1: 突发传输 16 字节

  • 2:突发传输 32 字节

  • 3:突发传输 64 字节

9:8

R/W

0x2

TX_BURST_LEN
TX 突发传输长度配置
  • 0: 突发传输 4 字节

  • 1: 突发传输 16 字节

  • 2:突发传输 32 字节

  • 3:预留

7:0

-

-

-

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。

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。