分析NOR Flash时序(S3C2440)

S3C2440的存储器控制器的可编程访问周期的时序为:
分析NOR Flash时序(S3C2440)
上图中的时间参数(Tacc、Tacs、Tcoh等) 都是可编程设置的。

再看一下NOR Flash 的时序:
分析NOR Flash时序(S3C2440)
我们需要做的就是设置S3C2440的Nor Flash控制器(存储器控制器的BANK0)时序去满足Nor Flash芯片的时序。
每个参数的参考范围可以通过Nor Flash的AC CHARACTERISTICS(交流特性)得到。
分析NOR Flash时序(S3C2440)
结合Nor Flash芯片的两张图,可以得到如下信息:

  • 发出地址数据(Addresses)后,要等待Taa(要求大于等于70ns)时间,地址数据才有效;
  • 发出片选信号(CE#)后,要等待Tce(要求大于等于70ns)时间,片选信号才有效;
  • 发出读信号(OE#)后要等待Toe(要求大于等于30ns)时间,读信号才有效;

为了简单我们把地址数据(Addresses),片选信号(CE#),读信号(OE#),同时发出,然后让它们都等待70ns(等待信号有效)。对应S3C2440的Nor Flash控制器的读时序图,需要让地址信号A[24:0]、片选信号nGCS、读信号nOE同时发出,保持Tacc大于等于70ns。

查阅S3C2240的参考手册,Nor Flash是接在BANKCON0上的,因此只需要设置BANKCON0即可。
分析NOR Flash时序(S3C2440)
Tacc默认是14个时钟,系统上电采用12MHz的晶振,HCLK=12MHz,Tacc=(1000/12*14)≈1166ns,这个值很大,几乎可以满足所有Nor Flash的要求。

启动后,将HCLK设置为100MHz,T=1000/100=10ns,Tacc需要大于等于70ns,因此设置Tacc等于101,8个时钟即可。

#include "s3c2440_soc.h"

void bank0_tacc_set(int val)
{
	BANKCON0 = val << 8;
}