本文主要是介绍S3C2440裸机------NandFlash编程_时序及初始化,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
目录
1.NandFlash初始化
2.NandFlash控制器使能
3.代码
1.NandFlash初始化
Nandflash初始化主要包括时序图的设置和Nandflash控制器的使能,我们首先看一下S3C2440芯片手册里面的时序图。
上图中的HCLK我们已经设置成了100M。那么时钟周期是1/100M=10ns
然后下图是NandFlash芯片手册里面的时序图。
我们将S2C2440里面NandFlash控制器的时序图和NandFlash时序图结合起来看。
左图中的TACLS表示当我们的CLE/ALE发出之后,再过多长时间再发出WE信号,就是右图中的tcls-twp,而我们从右下图可以看到,tcls的最小值是12,twp的最小值也是12,就表明tcls-twp可以为零,也就表明CLE和WE两个信号可以同时发出,而tals的最小值也可以是12,那么表明ALE信号和WE也可以同时发出,那么也就意味着左图中的TACLS可以为零,那么左下角的寄存器设置中TACLS可以为零,
左上图中TWRPH0表示写使能信号持续的时间,就是右图中的TWP,TWP的最小值是12ns,那么左图中的寄存器设置那里,HCLK*(TWRPH0+1)>=12ns,而HCLK=10ns,所以这里TWRPH0设置为1。
左上图中TWRPH1表示写使能释放之后,再过多久CLE/ALE再释放,也就是右图中的tCLH和tALH,右图中可以看到这两个都是5ns,那么HCLK*(TWRPH1+1)>=5ns,那么TWRPH1可以设置为0.
2.NandFlash控制器使能
然后我们再来看一下使能NandFlash控制器,
3.代码
void nand_init(void)
{
#define TACLS 0
#define TWRPH0 1
#define TWRPH1 0/*设置NAND FLASH的时序*/NFCONF = (TACLS<<12) | (TWRPH0<<8) | (TWRPH1<<4);/*使能NAND FLASH控制器,初始化ECC,禁止片选*/NFCONT = (1<<4) | (1<<1) | (1<<0);
}
这篇关于S3C2440裸机------NandFlash编程_时序及初始化的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!