17. QSPI总线控制器 (QSPI)
17.1. 概述
QSPI 专用于和外部存储器通信的接口,支持单线,双线,四线模式。
17.2. 特性
AHB Slave接口:CPU Master/DMA通过AHB访问QSPI接口模块
QSPI Master接口:可访问外置SPI Flash
三种功能模式:间接模式、状态轮询模式、内存映射模式
集成 FIFO,用于发送和接收
允许 8、16 和 32 位数据访问
在达到 FIFO 阈值、超时、操作完成以及发生访问错误时产生中断
17.3. 功能描述
17.3.1. QSPI 常规命令模式
常规命令模式下,每个命令最多有五个阶段:指令、地址、交替字节、空指令和数据,任一阶段均可跳过,但至少要包含指令、地址、交替字节或数据阶段的其中一个阶段。
图 79 四线模式下的读命令示例
指令阶段
这一阶段,将在 QSPI_CCR [7:0] 寄存器的CODE字段中配置的一条8位指令发送到外部SPI设备,指定待执行操作的类型。
可通过QSPI_CCR[9:8]寄存器中的 IMODE[1:0]字段进行配置一次1位、2位(在双线 SPI 模式中通过 IO0/IO1)、4位(在四线 SPI 模式中通过IO0/IO1/IO2/IO3)的方式接收指令。
地址阶段
在地址阶段,待发送的地址字节数在 QSPI_CCR[13:12] 寄存器的 ADSIZE[1:0] 字段中进行配置。
在间接模式和自动轮询模式下,待发送的地址字节在 QSPI_ ADDR寄存器的ADDRESS[31:0] 中指定。在间接模式下,此寄存器需要在配置命令寄存器之后进行配置(不能之前),且每次传输过程都需要配置。
可通过QSPI_CCR[11:10]寄存器中的ADMODE[1:0]字段进行配置一次发送1位(在单线 SPI 模式中通过 SO)、2位(在双线SPI模式中通过IO0/IO1)或4位(在四线SPI模式中通过 IO0/IO1/IO2/IO3)。
交替字节阶
在交替字节阶段,一般用于控制操作模式。待发送的交替字节数在QSPI_CCR[17:16]寄存器的ABSIZE[1:0]字段中进行配置。待发送的字节在 QSPI_ABR 寄存器中指定。
可通过QSPI_CCR[15:14]寄存器中的ABMODE[1:0]字段进行配置一次发送1位(在单线 SPI 模式中通过SO)、2 位(在双线SPI模式中通过IO0/IO1)或4位(在四线SPI模式中通过IO0/IO1/IO2/IO3)。
空指令周期阶段
在空指令周期阶段,给定的 0-31 个周期内不发送或接收任何数据,这期间与外部设备没有数据交互,为了等待外部设备准备数据。
这一阶段中给定的周期数在 QSPI_CCR[22:18] 寄存器的DUMMY [4:0]字段中指定。在SDR模式下,持续时间被指定为一定个数的全时钟周期。
当工作在2线、4线模式下从外部存储器中接收数据时,至少设置一个空指令周期。
数据阶段
在数据阶段,可从外部设备接收或向其发送任意数量的字节。
在间接模式和自动轮询模式下,待发送/接收的字节数在 QSPI_SIZE寄存器中指定。 在间接写入模式下,发送的数据必须写入 QSPI_DATA 寄存器。在间接读取模式下,通过读取 QSPI_DATA寄存器获得接收的数据;在自动轮询模式下,包含从设备读取到的最后一个数据。
数据阶段可通过QSPI_CCR[15:14] 寄存器中的ABMODE[1:0]字段进行配置一次发送/接收1位(在单线SPI模式中通过 SO)、2位(在双线SPI模式中通过 IO0/IO1)或4位(在四线SPI模式中通过IO0/IO1/IO2/IO3)。
nCS和SCK的行为
默认情况下,nCS 为高电平,取消选择外部设备。nCS 在操作开始前下降,在操作完成 时立即上升。
当CKMODE = 0(“模式 0”,在未进行任何操作时 CLK 保持低电平)时,nCS在操作首次升高 CLK 边沿时的一个CLK周期前降至低电平,在操作最后一次升高CLK 边沿时的一个CLK 周期后升至高电平,如图所示。
图 80 nCS和SCLK时序关系图1
当CKMODE = 1(“模式3”,在未进行任何操作时CLK升至高电平,nCS仍在操作首次升高 CLK边沿时的一个CLK周期前降至低电平,在操作最后一次升高CLK边沿时的一个CLK周期后升至高电平,如图所示
图 81 nCS和SCLK时序关系图2
当读操作时FIFO处于满状态,或写操作时FIFO处于空状态时,该操作将停止,CLK保持在低电平,如果在操作停止时发生中止,则nCS在请求中止后立即上升,SCLK信号会在一半的SCLK周期之后拉高,如图所示。
图 82 nCS和SCLK时序关系图3
17.3.2. QSPI 信号接口协议模式
单线SPI模式
在单线模式下,数据通过SO信号(其I/O与IO0共享)发送。收到的数据通过SI(其I/O与IO1 共享)送达。
通过将QSPI_CCR中的IMODE/ADMODE/ABSIZE/DMODE 字段设置为01,可对不同的命令阶段分别进行配置,以使用此单个位模式。
双线SPI模式
在双线模式下,通过IO0/IO1信号同时发送/接收两位。
通过将QSPI_CCR寄存器的IMODE/ADMODE/ABSIZE/DMODE字段设置为10,可对不同的命令阶段分别进行配置,以使用双线SPI模式。
四线SPI模式
在四线模式下,通过 IO0/IO1/IO2/IO3信号同时发送/接收四位。
通过将QSPI_CCR寄存器的IMODE/ADMODE/ ABSIZE /DMODE字段设置为11,可对不同的命令阶段分别进行配置,以使用四线SPI模式。
SDR模式
默认情况下,QSPI在单倍数据速率(SDR)模式下工作。
17.3.3. QSPI操作模式
间接模式
通过配置QSPI_CCR[27:26] MODE = 00,则处于间接写入模式,字节在数据阶段中发送到 。通过写入数据寄存器 (QSPI_DATA) 的方式提供数据。若FMODE = 01,则 QSPI处于间接读取模式,在数据阶段中接收字节。通过读取数据寄存器 (QSPI_DATA)来获取数据。 读取/ 写入的字节数在数据长度寄存器 (QSPI_SIZ E)中指定。如果 QSPI_SIZE =0xFFFF_FFFF(全为“1”),则数据长度视为未定义,QSPI将继续传输数据,直到到达(由QSPI_DCR[20:16]FSIZE 定义的)FLASH的结尾。
如果不传输任何字节,DMODE (QSPI_CCR[25:24]) 应设置为 00。
常规模式下触发命令序列
命令序列在根据通信需求配置好最后信息之后立即开始。
当没有地址并且没有数据时,在访问QSPI_CODE寄存器之后立即开始命令序列。
当存在地址但没有数据时,在访问QSPI_ADDR寄存器之后立即开始命令序列。
当在间接模式写操作时需要地址并且有数据,在访问QSPI_DATA寄存器之后立即开始命令序列。
如果命令启动,BUSY位置1。
FIFO和标志控制
在间接模式中,数据将通过QSPI内部的一个16字节FIFO。FLEVEL (QSPI_SR[12:8]) 指示 FIFO目前保存了多少字节。
在间接写入模式下 (MODE = 00),写入QSPI_DATA时,将在FIFO中加入数据。字写入将在FIFO中增加4个字节,半字写入增加2个字节,而字节写入仅增加1个字节。如果固件在 FIFO中加入的数据过多(超过 SIZE[31:0] 指示的值),将在写入操作结束(TCF置1)时从FIFO中清除超出的字节。
状态轮询模式
在自动轮询模式下,QSPI 周期性启动命令以读取一定数量的状态字节,每个帧读取的最大数据量是4 字节。自动轮询间隔周期(按照SCLK周期计数)在QSPI_PIR寄存器中设定。
在自动轮询模式下,MASK[31:0] (QSPI_PSMKR) 的内容用于屏蔽数据。如果 MASK[n] = 0,则屏蔽结果的位n,从而不考虑该位。如果MASK[n] = 1 并且位[n]的内容与 MATCH[n] (QSPI_PSMAR) 相同,说明存在位n匹配。
内存映射模式
在配置为内存映射模式时,外部SPI器件被视为是内部存储器。
即使 FLASH 容量更大,寻址空间也无法超过128MB。 如果访问的地址超出FSIZE定义的范围但仍在128MB 范围内,则根据FLASH特性处理,一般为回卷读取。内存映射模式下每一个AHB读请求,都会完整执行一次符合QSPI接口协议读请求命令。
17.3.4. QSPI延迟数据采样
默认情况下,QSPI在FLASH驱动信号后过半个CLK周期才对FLASH驱动的数据采样。在外部信号延迟时,有利于推迟数据采样。 使用SSHIFT位(QSPI_CR[4] ),可将数据采样移位半个QSPI CLK周期;使用CYCLE位(QSPI_SSHIFT [0:3]),配置的是系统时钟CLK下延迟采样的周期数,延时采样开关开启时(SSHIFT=1),在这之后再延时采样半SCLK周期。即实际的延迟采样时间是QSPI_SSHIFT[CYCLE]与QSPI_CR[SSHIFT]设定延时的累加。
17.4. 寄存器映射
名称 |
偏移 |
复位值 |
---|---|---|
QSPI BASE: 0x40001800 |
||
CR |
0x00 |
0x00000000 |
DCR |
0x04 |
0x00000000 |
SR |
0x08 |
0x00000000 |
FCR |
0x0C |
0x00000000 |
DLR |
0x10 |
0x00000000 |
CCR |
0x14 |
0x00000000 |
AR |
0x18 |
0x00000000 |
ABR |
0x1C |
0x00000000 |
DATA |
0x20 |
0x00000000 |
PSMSK |
0x24 |
0x00000000 |
PSMAT |
0x28 |
0x00000000 |
PSITV |
0x2C |
0x00000000 |
SSHIFT |
0x40 |
0x00000000 |
17.5. 寄存器描述
17.5.1. 控制寄存器CR
偏移: 0x00 |
复位值: 0x00000000 |
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
CLKDIV |
|||||||
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
PSMATMOD |
PSSTPMOD |
PSMATIE |
FFTHRIE |
DONEIE |
ERRIE |
||
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
FFTHR |
|||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
BIDI |
SSHIFT |
DMAEN |
ABORT |
EN |
位域 |
名称 |
类型 |
描述 |
---|---|---|---|
31:24 |
CLKDIV |
R/W |
时钟分频器 分频系数(值 + 1),最大256分频 奇分频不为50%,低电平比高电平时间长 最小配置为1,即2分频 注:仅在BUSY = 0时,可修改 |
23 |
PSMATMOD |
R/W |
轮询匹配模式(BUSY = 0时,可修改) 0:AND匹配模式,全匹配则拉高SMF 1:OR匹配模式,只要有一位匹配则拉高SMF |
22 |
PSSTPMOD |
R/W |
自动轮询匹配模式停止位 0:自动轮询模式仅通过中止或禁用QUADSPI停止 1:一旦匹配,自动轮询模式停止 注:仅在BUSY = 0时,可修改 |
20:21 |
RO |
||
19 |
PSMATIE |
R/W |
状态匹配中断使能位 0:关闭 1:使能 |
18 |
FFTHRIE |
R/W |
FIFO阈值中断使能位 0:关闭 1:使能 |
17 |
DONEIE |
R/W |
传输完成中断使能位 0:关闭 1:使能 |
16 |
ERRIE |
R/W |
传输错误中断使能位 0:关闭 1:使能 |
15:12 |
RO |
||
11:8 |
FFTHR |
R/W |
FIFO阈值等级 间接模式下,定义拉高FTF的 FIFO阈值字节数。 写模式(FMODE=00) 0-15:FIFO中有1-16或更多空闲字节可写入时,拉高FTF 读模式(FMODE=01) 0-15:FIFO中有1-16或更多有效字节可读取时,拉高FTF 当DMA(或CPU)读写数据寄存器时: 字节传输时,此位取值0~C; 半字传输时,此位取值0~D; 字传输时,此位取值4~F; |
7: 6 |
RO |
||
5 |
BIDI |
R/W |
IO0模式选择 0:关闭(IO0输出,IO1输入) 1:使能(IO0负责输入输出) 注:仅适用于间接读模式单SPI模式 |
4 |
SSHIFT |
R/W |
延迟采样开关 0:不延迟QSPI Clock半周期 1:半个QSPI Clock周期延迟 |
3 |
RO |
||
2 |
DMAEN |
R/W |
DMA访问使能 间接模式下通过DMA访问DR寄存器 0:关闭 1:使能 |
1 |
ABORT |
R/W |
中止请求 0:未请求中止 1:请求中止 |
0 |
EN |
R/W |
QUADSPI使能位 0:关闭 1:使能 |
17.5.2. 设备配置寄存器DCR
偏移: 0x04 |
复位值: 0x00000000 |
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
FSIZE |
|||||||
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
CSHIGH |
|||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
CLKMOD |
位域 |
名称 |
类型 |
描述 |
---|---|---|---|
31:21 |
RO |
||
20:16 |
FLSIZE |
R/W |
FLASH大小设置 外部FLASH字节数=2[FSIZE+1];[FSIZE+1]为寻址FLASH所需的地址位数。 间接模式32位寻址,最高可达4GB。 注:仅在BUSY = 0时,可修改 |
15:11 |
RO |
||
10:8 |
CSHIGH |
R/W |
片选高电平时间 CSHT+1为片选nCS在向FLASH发命令前必须保持高电平的最小周期数。 最大为8个周期 注:仅在BUSY = 0时,可修改 |
7:1 |
RO |
||
0 |
CLKMOD |
R/W |
选择模式0或模式3 该位指示SCLK在命令之间采取的级别(当nCS=1时)。 0:nCS为高时,CLK必须保持低。这被称为模式0。 1:nCS为高时,CLK必须保持高。这被称为模式3。 |
17.5.3. 状态寄存器SR
偏移: 0x08 |
复位值: 0x00000000 |
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
FFLVL |
|||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
BUSY |
TO |
PSMAT |
FFTHR |
DONE |
ERR |
位域 |
名称 |
类型 |
描述 |
---|---|---|---|
31:13 |
RO |
||
12:8 |
FFLVL |
RO |
FIFO等级 字段给出FIFO中保存的有效字节数 当FIFO为空时,FLEVEL=0 当FIFO为满时,FLLEVEL=16 在内存映射模式和自动状态轮询模式下,FLEVEL为零。 |
7:6 |
RO |
||
5 |
BUSY |
RO |
忙线 操作进行时置1 操作结束或者FIFO为0时自动清零 |
4 |
TO |
RO |
超时标志 超时出现时置1 写1到CTOF后清0 |
3 |
PSMAT |
RO |
状态匹配标志位 自动轮询模式下,当未屏蔽的接收数据与匹配寄存器(QUADSPI_PSMAR)中的相应位匹配时,该位置1 写1给CSMF后清零。 |
2 |
FFTHR |
RO |
FIFO阈值标志位 间接模式下FIFO阈值达到,或是读操作后还有数据时,该位置1 |
1 |
DONE |
RO |
传输完成标志位 在间接模式下,当传输的数据数量达到编程设定值,或其余模式传输中止,该位置1 写1给CTCF后进行清零 |
0 |
ERR |
RO |
传输错误标志位 在间接方式访问无效地址时,该位置1 写1给CTEF之后进行清零 |
17.5.4. 标志清零寄存器FCR
偏移: 0x0C |
复位值: 0x00000000 |
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 |
PSMAT |
DONE |
ERR |
位域 |
名称 |
类型 |
描述 |
---|---|---|---|
31:4 |
RO |
||
3 |
PSMAT |
R/W |
清零状态匹配标志 写1时,清零QUADSPI_SR中SMF标志位,完成自动归零 |
2 |
RO |
||
1 |
DONE |
R/W |
清零传输完成标志 写1时,清零QUADSPI_SR中TCF标志位,完成自动归零 |
0 |
ERR |
R/W |
清零传输错误标志 写1时,清零QUADSPI_SR中TEF标志位,完成自动归零 |
17.5.5. 数据长度寄存器DLR
偏移: 0x10 |
复位值: 0x00000000 |
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
DL |
|||||||
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
DL |
|||||||
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
DL |
|||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
DL |
位域 |
名称 |
类型 |
描述 |
---|---|---|---|
31:0 |
DL |
R/W |
数据长度 在间接和状态轮询模式中要检索的数据数(值+1) 在状态轮询应不使用大于3的值(表示4字节) 0x0000_0000: 1个字节 0x0000_0001: 2个字节 0x0000_0002: 3个字节 0x0000_0003: 4个字节 …… 0xFFFF_FFFF:未定义长度,以实际FLASH决定,读完写完为止 注:仅在BUSY = 0时,可修改 |
17.5.6. 传输配置寄存器CCR
偏移: 0x14 |
复位值: 0x00000000 |
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
SIOO |
MODE |
DMODE |
|||||
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
DUMMY |
ABSIZE |
||||||
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
ABMODE |
ASIZE |
AMODE |
IMODE |
||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
CODE |
位域 |
名称 |
类型 |
描述 |
---|---|---|---|
31:29 |
RO |
||
28 |
SIOO |
R/W |
只发送指令一次模式 当IMODE=00时,此位无影响 0:传输指令在每个交互 1:传输指令仅在首次命令 注:仅在BUSY = 0时,可修改 |
27:26 |
MODE |
R/W |
功能模式 此字段定义QUADSPI功能操作模式 00:间接写模式 01:间接读模式 10:自动轮询模式 11:不可用 注:仅在BUSY = 0时,可修改 |
25:24 |
DMODE |
R/W |
数据传输模式 此字段定义数据阶段的操作模式 00:无数据 01:1线数据 10:2线数据 11:4线数据 注:仅在BUSY = 0时,可修改 |
23 |
RO |
||
22:18 |
DUMMY |
R/W |
空周期大小设置位 此字段定义空阶段的持续时间 在SDR模式中,它指定CLK周期数(0-31) 注:仅在BUSY = 0时,可修改 |
17: 16 |
ABSIZE |
R/W |
交替字节传输模式 00:无数据 01:1线数据 10:2线数据 11:4线数据 注:仅在BUSY = 0时,可修改 |
15:14 |
ABMODE |
R/W |
交替字节模式 此字段定义交替字节阶段的操作模式 00:8 bit 交替字节 01:16 bit 交替字节 10:24 bit 交替字节 11:32 bit 交替字节 注:仅在BUSY = 0时,可修改 |
13:12 |
ASIZE |
R/W |
地址大小设置位 00:8 bit 地址字节 01:16 bit 地址字节 10:24 bit 地址字节 11:32 bit 地址字节 注:仅在BUSY = 0时,可修改 |
11:10 |
AMODE |
R/W |
地址传输模式 00:无数据 01:1线数据 10:2线数据 11:4线数据 注:仅在BUSY = 0时,可修改 |
9:8 |
IMODE |
R/W |
指令传输模式 00:无数据 01:1线数据 10:2线数据 11:4线数据 注:仅在BUSY = 0时,可修改 |
7:0 |
CODE |
R/W |
指令阶段 要发送到外部SPI设备的指令 注:仅在BUSY = 0时,可修改 |
17.5.7. 地址寄存器AR
偏移: 0x18 |
复位值: 0x00000000 |
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
ADDRESS |
|||||||
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
ADDRESS |
|||||||
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
ADDRESS |
|||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
ADDRESS |
位域 |
名称 |
类型 |
描述 |
---|---|---|---|
31:0 |
ADDRESS |
R/W |
地址 要发送到外部闪存的地址 |
17.5.8. 交替字节寄存器ABR
偏移: 0x1C |
复位值: 0x00000000 |
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
ALTERNATE |
|||||||
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
ALTERNATE |
|||||||
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
ALTERNATE |
|||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
ALTERNATE |
位域 |
名称 |
类型 |
描述 |
---|---|---|---|
31:0 |
ALTERNATE |
R/W |
交替字节 指定要在地址后立即发送到外部SPI设备的可选数据 |
17.5.9. 数据寄存器DATA
偏移: 0x20 |
复位值: 0x00000000 |
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
DATA |
|||||||
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
DATA |
|||||||
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
DATA |
|||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
DATA |
位域 |
名称 |
类型 |
描述 |
---|---|---|---|
31:0 |
DATA |
R/W |
数据字节 向外部SPI设备发送/接收的数据 在间接写模式下,写入该寄存器的数据在数据阶段被发送到FLASH之前存储在FIFO上。如果FIFO太满,写操作将被暂停,直到FIFO有足够的空间接受正在写入的数据量 在间接读取模式下,读取这个寄存器给出(通过FIFO)从闪存接收到的数据。粒度大于FIFO缓存字节时,返回数据为0(如果FIFO没有读操作所要求的那么多字节,并且BUSY=1,则读操作将停止,直到有足够的数据存在或直到传输完成,以先发生者为准。) 在自动轮询模式下,该寄存器包含从FLASH内存中读取的最后一个数据(没有屏蔽) 支持对该寄存器的字、半字和字节访问。在间接写模式下,字节写1个字节,半字写2个字节,字写4个字节。类似地,在间接读模式下,字节读从FIFO中读1个字节,半字读2个,字读4个 间接模式下的访问必须与寄存器底部对齐:字节读取必须读取DATA[7:0],半字读取必须读取DATA[15:0] 间接写模式下,如果需要传输数据字节,此寄存器需要在配置命令寄存器之后进行配置(不能之前),且每次传输过程都需要配置 |
17.5.10. 轮询状态掩码寄存器PSMSK
偏移: 0x24 |
复位值: 0x00000000 |
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
MASK |
|||||||
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
MASK |
|||||||
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
MASK |
|||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
MASK |
位域 |
名称 |
类型 |
描述 |
---|---|---|---|
31:0 |
MASK |
R/W |
状态掩码 对轮询模式下接收的状态字节进行屏蔽 对于位n: 0:在自动轮询模式下接收的数据的第n位被屏蔽,匹配逻辑中不考虑其值 1: 在自动轮询模式下接收的数据的第n位不被屏蔽,其值在匹配逻辑中被考虑 注:仅在BUSY = 0时,可修改 |
17.5.11. 轮询状态匹配寄存器PSMAT
偏移: 0x28 |
复位值: 0x00000000 |
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
MATCH |
|||||||
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
MATCH |
|||||||
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
MATCH |
|||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
MATCH |
位域 |
名称 |
类型 |
描述 |
---|---|---|---|
31:0 |
MATCH |
R/W |
状态匹配 将与掩码状态寄存器进行比较以获得匹配的值 注:仅在BUSY = 0时,可修改 |
17.5.12. 轮询间隔寄存器PSITV
偏移: 0x2C |
复位值: 0x00000000 |
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
INTERVAL |
|||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
INTERVAL |
位域 |
名称 |
类型 |
描述 |
---|---|---|---|
31:16 |
RO |
||
15:0 |
INTERVAL |
R/W |
轮询间隔 在自动轮询阶段读取的SCLK周期数 注:仅在BUSY = 0时,可修改 |
17.5.13. 延迟采样寄存器SSHIFT
偏移: 0x40 |
复位值: 0x00000000 |
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 |
SPACE |
CYCLE |
位域 |
名称 |
类型 |
描述 |
---|---|---|---|
31:8 |
RO |
||
7:4 |
SPACE |
R/W |
在配置了延迟采样时,为了防止溢出,接收FIFO停止接收外部Flash数据时FIFO中预留可缓存字节数量(最多8个) |
3:0 |
CYCLE |
R/W |
延迟采样周期 配置的是系统时钟CLK下延迟采样的周期数 延时采样开关开启时(SSHIFT=1),在这之后再延时采样半SCLK周期 注:仅在BUSY = 0时,可修改 |