27.5.12  SCLK 停止功能

当编程数据没有准备好用于编程命令序列,或者(内部FIFO中)没有空间接收数据,无法读取命令序列时,FlexSPI将停止SCLK输出。

可能有某些设备不支持SCLK在命令序列期间停止(芯片选择是有效的)。SCLK停止可以通过以下操作避免:

对于由IP命令触发的flash读取

永远不要触发数据大于IP RX FIFO大小的read命令。

用于flash读取的内部异步FIFO不应该是满的。

FlexSPI以64Bits每AHB时钟周期的方式弹出数据,并以serial root clock 从FlexSPI接口接收数据。接收速度由闪存访问模式(单/双/四/八进制模式和单独/并行模式)决定。例如,在八进制模式和并行模式下,FlexSPI每个串行根时钟周期接收16位。如果AHB时钟频率高于串行根时钟的1/4,这个异步FIFO永远不会满。

对于由IP命令触发的flash编程

永远不要触发数据大于IP TX FIFO大小的程序命令。

在触发IP命令之前,将所有的编程数据填充到IP TX FIFO中。

用于flash编程的内部异步FIFO绝不应该是空的。

FlexSPI以64bit每AHB时钟周期的方式获取编程数据到异步FIFO,并以串行根时钟传输数据到FlexSPI接口。传输速度由闪存访问模式(单/双/Ouad/八进制模式和单独/并行模式)决定。例如,八进制模式和并行模式。FlexSPI每串行根时钟周期传输16位。如果AHB时钟频率高于串行根时钟的1/4,这个异步FIFO从不为空。

对于由AHB命令触发的flash读取/编程

用于flash读取/编程的内部异步FIFO不应该是满的/空的。

频率比率限制与IP命令触发的flash读取/编程时相同。

注意:

FlexSPI不会在数据大于内部AHB RX缓冲区的情况下触发AHB读取命令。

FlexSPI不会触发数据大于内部AHB TX缓冲区大小的AHB编程命令。

在FlexSPI中触发AHB程序命令之前,所有的编程数据都应该被缓冲到AHB TX缓冲区中。(提前准备好数据,写入开始后不能改变)

本文地址:https://blog.csdn.net/catshit322/article/details/108185364