Edit online

寄存器描述

0x000 SPI_VER

默认值:0x00090001 SPI 控制器版本 (SPI Controller Version)
位域 类型 默认值 描述
31:16 R 0×9 VER_H

控制器高位版本号

15:0 R 0×1 VER_L

控制器低位版本号

0x004 SPI_CFG

默认值:0x00000080 SPI 配置 (SPI Configuration)
位域 类型 默认值 描述
31 R/WAC 0×0 CTRL_RST

控制器复位(Controller Reset)

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

30:8 - - -
7 R/W 0×1 RXFULL_STOP
传输停止使能(RX FIFO Full Transfer Stop Enable)
  • 0:正常模式,忽略 RXFIFO状态
  • 1:当 RXFIFO 满时停止传输数据
6:2 - - -
1 R/W 0×0 CTRL_MODE_SEL
工作模式选择(Controller Work Mode Select)
  • 0:保留
  • 1:主机模式
注: 当 START = 1时,不能写入。
0 R/W 0×0 CTRL_EN
控制器使能(Controller Enable)
  • 0:禁用

  • 1:使能

注: 当传输形式从 bit_mode 切换到 byte_mode 时,必须使能一次。

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

0x010 SPI_ICR

默认值:0x00000000 SPI 中断控制 (SPI Interrupt Control)
位域 类型 默认值 描述
31:16 - - -
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:16 - - -
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_UDFTX 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复位,完成后自动清零。

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

0x01C SPI_FSTS

默认值:0x00000000 SPI FIFO 状态 (SPI FIFO Status)
位域 类型 默认值 描述
31 R 0x0 TF_WBUF_STS

TX FIFO Write Buffer Status,TX FIFO 写缓存状态

置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 Read Buffer Status,RX FIFO 读缓存状态

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

14:12 R 0x0 RF_RBUF_CNT

RX FIFO Read Buffer Counter,读缓存计数器

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

注: QSPI0 最大 4byte 数据,QSPI1 最大 64byte 数据
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 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))

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)

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

  • 1:共发送1个字节

  • N:共发送N个字节

0x038 SPI_TMC

默认值:0x00000000 SPI 传输控制 (SPI Transmit Miscellaneous Control)
位域 类型 默认值 描述
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)
  • 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模式下

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

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

位模式接收数据值

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

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

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。