RT1052 FlexSPI 命令仲裁 手册1691页

RT1052 FlexSPI 命令仲裁 手册1691页

命令仲裁

有四个Flash访问命令源:

1.AHB命令,被AHB写 SFM空间触发

2.AHB命令,被AHB读SFM空间触发

3.IP Command ,被写IPCMD[TRG]触发

4.挂起命令(被挂起的AHB预读取序列)

RT1052 FlexSPI 命令仲裁 手册1691页

注意:

AHB BUS访问不会同时被写和读命令触发

AHB预读取序列是一种当AHB 预读取使能时被AHB 读访问触发的命令序列。在所有数据被AHB 读取后,FlexSPI会预读取更多数据来缩减下次读取的延迟。读取的AHB命令在为当前的AHB读取突发读取数据时不会中止。但是在预取数据时,AHB读命令可以被任何新的IP命令或AHB命令请求中止(不是为当前读突发)。

RT1052 FlexSPI 命令仲裁 手册1691页

当仲裁程序空闲状态时,这4个命令源被授予的优先级如下(STS0[ARBIDLE]=1):

1. AHB命令(读/写)

2. IP命令

3.暂停命令

RT1052 FlexSPI 命令仲裁 手册1691页

请注意:当仲裁员空闲且没有AHB/IP命令请求时,暂停命令不会立即被授予。仲裁员将等待n个 AHB时钟周期空闲状态,然后恢复暂停命令(n是寄存器字段值MCR2[RESUMEWAIT])。这样做是为了避免AHB预取序列被频繁地恢复和挂起。

RT1052 FlexSPI 命令仲裁 手册1691页

如果仲裁员忙于执行AHB/IP命令(不是suspended命令),则不授予所有命令请求,如果授予超时,则会出现AHB/IP命令授予错误。当仲裁员执行AHB读预取序列时,如果出现新的AHB/IP命令请求,AHB读预取序列将中止(但不是立即中止)。仲裁程序将授予AHB/IP命令请求后,AHB读预取序列被中止在FlexSPI接口并且保存所有内部数据指针。

RT1052 FlexSPI 命令仲裁 手册1691页

27.5.11.1命令中止和暂停

本节描述命令中止和挂起机制。

1. 命令中止

正如上面提到的,如果出现新的AHB/IP命令请求,AHB读取预取序列可以被中止。

2. 命令暂停

当AHB读取预取序列在FlexSPI接口中止时,以下情况下FlexSPI将保存这个暂停序列,并且如果仲裁员空闲足够的时间,可以恢复这个序列:

没有有效的挂起命令(寄存器字段AHBSPNDSTS[ACTIVE]是0x0)。如果还没有挂起的命令,或者挂起的命令被恢复,也是可以的。

中止的AHB读预取序列比当前活动挂起序列具有更高的优先级。

RT1052 FlexSPI 命令仲裁 手册1691页

请注意:原始的暂停序列将被忽略,永远不会被FlexSPI恢复。

RT1052 FlexSPI 命令仲裁 手册1691页

3.暂停命令

当任何AHB预取命令中止和挂起时,suspended命令(内部状态)将变为活动的。在下列情况下,它会无效:

暂停命令由仲裁员恢复。

有一个新的AHB读取命令请求,它是由AHB master触发使用相同的AHB RX缓冲区(缓冲区ID)。

下面是一个指示命令中止/暂停/恢复流的示例:

RT1052 FlexSPI 命令仲裁 手册1691页

 

 

相关文章: