tiny6410裸机实验第6章--------------NAND(初始化原理)

来源:互联网 发布:数据库英文缩写 编辑:程序博客网 时间:2024/06/06 12:45

【说明】

             在地5章我们初始化了DDR并且进行了代码的重定位,但是注意!我们前面的重定位其实是假的,我们只过是把代码从片内内存复制到DDR中!因为我们的NAND 还没有初始化,而完整的程序在NAND FLASH中,所以我们当时没办法将完整程序复制到内存中,之所以进行了重定位是为了理解重定位的过程而已!这一章我们就来初始化NAND FLASH并且真正的实现从NAND FLASH中将代码重定位到内存中。

 

【原理图】

              我们先来看看NAND FLASH 接线原理图

             

                     1)怎么只有数据线?,最起码的地址线呢?

                           其实NAND  FLASH 是命令模式的,不仅要发送地址接收发送数据,还要发送命令,而这几个都是通过那个LDATA来发送的

                     2) 那显然要区分它们,当FCLE为高电平的时候传送命令,FALE为高电平时发送的是地址,两者都为低电平传送的是数据!

                     3)NCS2_NAND是片选信号,用来选通NAND  FLASH  只有选中了才能用

                     4)FWEN和FREN是用来设置是读还是写的

                     5)RNB是状态引脚,如果是高电平表示读写完成,如果是低电平表示正在操作

 

【NAND 控制器】

                    6410带有NAND控制器,这就让我们对于NAND FLASH的操作变得非常简单。因为只要我们设置好一些参数,比如时序,控制器就会自动帮我们处理发送数据和接收数据,如果没有控制器,我们就得自己控制那些时序去访问NAND 比较你麻烦。下面就是如何初始化NAND 控制器。

 

 

【控制器初始化】

                    1】初始化管脚

                             首先我们得找到NAND  和 6410连接的原理图,如下

                          

                            我们只关心在上边NAND原理图上标有的几个引脚,

                            1)CS2_NAND 和CS3_NAND 是GPIO管脚

                              

                                显然都要写成10

                               

                                我们不使用上拉电阻或者下拉电阻,要把前4位清0

                            2)剩下的是GPP管脚,原理同上的

                   

                 2】配置存储控制状态寄存器

                                这个寄存器是看了代码去查了才知道的。

                             

                                 其中我们要配置这里,如下

                                

                                          显然,我们需要让XM0CSN[2] 用在NFCON CS0  所以就要清相应位了。。。

                

                    3】NAND FLASH 配置寄存器

                                 我们要配置这个寄存器,里面包含了所需要的NAND的时序参数,首先给一张6410手册中的时序图

                                     命令和地址时序图

                                     

                                       下面是数据时序图

                                       

                                        下面是NAND  FLASH 芯片手册上对于命令的时序,我们可以计算出对应参数的值

                                       

                                           再付一张NAND FLASH 芯片手册中各个时序的值

                                         

                                         

                                          

                                           

                                           

                                   1)TACLS = NAND芯片手册(TCLS - TWP) = 0 ns ,

                                   2)TWRPH0 = NAND芯片手册(TWP) = 15   ns,                              

                                   3)TWRPH1 = NAND芯片手册(TCLH) = 5   ns,

                                   4)因HCLK = 133MBHZ 故算得一时钟周期大约为7.519 ns

                                   5)则寄存器相应为分别应写为 0,2,1 , 当然如果你不想这么麻烦,直接写777也是可以,只不过性能有影响。

                 

                         4】控制寄存器

                             

 

                                1)使能NAND控制器

                             

                                2)关闭软件锁

                               

0 0
原创粉丝点击