nor flash之频率限制

支持一款nor flash时,出于性能考虑,一般会查看其nor支持的最高频率以及主控端spi控制器的最高频率,以选择一个合适的运行频率。

对于一款主控支持多款flash的情况,还得考虑好兼容性等问题。

主控端的最高频率,可以查看主控的规格书,本文主要说下nor的频率限制。

让我们带着问题出发,假设我们的主控端最高spi clk为100M,那该怎么识别nor的限制,驱动又可以怎么处理?

正确识别频率限制

让我们打开nor的规格书,搜索 "freq", 很容易看到104M, 133M之类的字样 。

如图是几款flash的规格书截图

winbond: w15q128

winbond

mxic: mx15l128

mxic

gd: gd25q127

gd

看到这个结果是不是很开心,看起来这些flash都可以跑100M以上。那我的主控端的控制器本身最高就100M,就直接把spi clk配置成100M就可以了呗。

是这样吗?不是!

其实flash的这个频率是有例外情况的。规格书中会具体说明。下面以mxic为例截图说明

比如对于READ命令,其频率限制是fR

nor flash之频率限制

FAST READ命令,其频率限制是fC

nor flash之频率限制

DUAL READ,其频率限制是fT

nor flash之频率限制

QUAD READ, 其频率限制是fQ

nor flash之频率限制

fR,fC,fT, fQ 分别是多少呢?规格书中也会给出一个表

nor flash之频率限制

从表中可以看出,原来最普通,看起来最稳的READ命令,其实是最特殊的一个。除了READ之外的所有命令,都能支持133M。而READ只能支持可怜的50M。

看来我应该把标题取成 “震惊,nor flash最慢的一条命令竟然是...”

那下面的fT和fQ标注的84M又是什么意思?不是说都支持133M吗,怎么又冒出来一个84M

原来双线和四线操作,要支持133M也是有条件的,需要插入dummy。也就是在关键时刻,加点空的操作,这样才能在高频率的clk下工作。

那加多少dummy合适呢,这也是明码标价童叟无欺的,直接看规格书中的表格。

nor flash之频率限制

解决手段

我们最开始的假定是,主控可以跑100M,那让主控跑100M的话,这些频率限制怎么解决呢?

从表格可以看出,假设主控端clk跑到100M,那么驱动里面插入8个dummy就可以使得双线四线都达到104M。

那READ只支持50M,怎么办?这个其实很好解决,既然知道READ的这个限制,那么不用它就是了。

基本nor flash都提供了双线,四线操作,驱动中应该尽量支持起来,提高性能。退一步讲即使不支持双线四线,我们还有FAST_READ命令可以用,这个是支持100M以上的。

READ并不孤单

那么看来不用READ,我们就可以在100M的频率下愉快地玩耍了是吗? 很遗憾,不是的。

多看几款规格书,我们就可以发现,READ并不孤单,有些nor flash,不止READ跑不到100M,读ID之类的命令也跑不到100M。

nor flash之频率限制

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzxxwj.html