原创 S5PV210(TQ210)学习笔记——Nand配置这二

2016-1-26 10:36 893 11 11 分类: MCU/ 嵌入式

  S5PV210的Nand flash跟2440和6410的Nand flash配置差不多,不同的是S5PV210的功能更加强大,尤其是S5PV210的硬件ECC(本文不涉及S5PV210中Nand ECC配置)。整体上来讲,S5PV210的Nand flash配置还是非常简单的。

 

这样,Nand flash的初始化函数就出来了:

  1. void nand_init(){  
  2.     NFCONF = (3<<23)|(1<<12)|(2<<8)|(0<<4)|(1<<1);  
  3.     NFCONT = (1<<0)|(1<<1);  
  4.   
  5.     MP0_1CON &= ~(0xffff<<8);  
  6.     MP0_1CON |= 0x3333<<8;  
  7.     MP0_3CON = 0x22222222;  
  8.     MP0_6CON = 0x22222222;  
  9.   
  10.     nand_reset();  
  11. }  

  至于nand_reset,通常是Nand flash配置完成之后就进行一次reset,这样使Nand flash恢复到最初状态。

  这样,Nand flash初始化好了,但是要访问Nand flash还需要按照时序对其操作,Nand方式启动时只需要实现Nand flash的读操作,为此,这里只列举一下几个读相关的操作:

 

  (1)Nand flash reset

  1. static void nand_reset(){  
  2.     nand_select_chip();  
  3.     nand_cmd(0xff);  
  4.     nand_wait();  
  5.     nand_deselect_chip();  
  6. }  

  (2)Nand flash写地址

  1. static void nand_addr(unsigned long page_addr, unsigned long page_offset){  
  2.     NFADDR = (page_offset>>0) & 0xFF;  
  3.     NFADDR = (page_offset>>8) & 0x7;  
  4.     NFADDR = (page_addr) & 0xFF;  
  5.     NFADDR = (page_addr>>8) & 0xFF;  
  6.     NFADDR = (page_addr>>16) & 0x07;  
  7. }  

  (3)Nand flash读ID

  1. void nand_read_id(char id[]){  
  2.     int i;  
  3.   
  4.     nand_select_chip();  
  5.     nand_cmd(0x90);  
  6.   
  7.     NFADDR = 0;  
  8.   
  9.     for (i = 0; i < 5; i++)  
  10.         id = nand_read();  
  11.   
  12.     nand_deselect_chip();  
  13. }  

  (4)Nand flash读页数据

  1. void nand_read_page(unsigned char* buf, unsigned long page_addr){  
  2.     int i;  
  3.     nand_select_chip();  
  4.     nand_cmd(0);  
  5.     nand_addr(page_addr, 0);  
  6.     nand_cmd(0x30);  
  7.     nand_wait();  
  8.     for(i = 0; i != PAGE_SIZE; ++i){  
  9.         *buf++ = nand_read();  
  10.     }  
  11.     nand_deselect_chip();  
  12. }  

  上面是几个比较重要的Nand flash读相关的操作函数,到这里,您自己补充一下引用到的小函数就可以正常的进行Nand flash操作了,我把我写的代码上传到我的CSDN资源里,如果需要的话可以拿去参考。另外,如果需要编写Nand flash写操作的代码可以参考一下本人博客中6410的Nand flash配置部分和Nand flash的芯片手册,原理都是相通的。

文章评论0条评论)

登录后参与讨论
我要评论
0
11
关闭 站长推荐上一条 /2 下一条