<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                Nand Flash型號 : K9F2G08U0A ## 1、以頁方式讀取Nand Flash中的數據 ①選中Nand Flash芯片; ②清除RnB; ③發送命令0x00; ④發送列地址(列地址兩個周期,行地址三個周期); ⑤發送行地址(頁號); ⑥發送命令0x30; ⑦等待RnB; ⑧讀取RnB; ⑨取消選中Nand Flash芯片; ![](https://box.kancloud.cn/2016-07-26_579724f8e5b4f.jpg) ## 2、以頁方式向Nand Flash中寫入數據 ①選中Nand Flash芯片; ②清除RnB; ③發送命令0x80; ④發送列地址;發送行地址; ⑤向Nand Flash寫入數據; ⑥發送命令0x10; ⑦等待RnB; ⑧發送命令0x70; ⑨讀取寫入狀態; ⑩取消選中Nand Flash; ![](https://box.kancloud.cn/2016-07-26_579724f9301f2.jpg) ## 3、塊擦除操作 ①選中Nand Flash芯片; ②清除RnB; ③發送命令0x60; ④發送行地址; ⑤發送命令0xD0; ⑥等待RnB; ⑦讀取擦除狀態; ⑧取消選中Nand Flash; ![](https://box.kancloud.cn/2016-07-26_579724f9501b2.jpg) ## 4、K9F2G08U0A的陣列組織(即內部組成結構) ![](https://box.kancloud.cn/2016-07-26_579724f9746b3.jpg) ## 5、在srart.S中,需要調用Nand_Init函數對Nand Flash進行初始化,然后調用Nand_To_Ram函數將Nand Flash中的數據復制到SDRAM中。 ~~~ /******************************************************************* *版權所有(C)2015,ZJU * *文件名稱:nand.c *內容摘要:關于NAND flash的配置 *其它說明:NAND flash型號: K9F2G08U0B * 開發板型號: TX2440 *當前版本:V1.0 *作 者:Frank *完成日期:2015.12.12 * *******************************************************************/ #define NFCONF (*(volatile unsigned long *)0x4E000000) //NAND flash configuration register #define NFCONT (*(volatile unsigned long *)0x4E000004) //NAND flash control register #define NFCMMD (*(volatile unsigned char *)0x4E000008) //NAND flash command set register #define NFADDR (*(volatile unsigned char *)0x4E00000C) //NAND flash address register #define NFDATA (*(volatile unsigned char *)0x4E000010) //NAND flash data register #define NFSTAT (*(volatile unsigned char *)0x4E000020) //NAND flash operation status register #define TACLS 1 #define TWRPH0 2 #define TWRPH1 1 /******************************************************************* *函數名稱:Select_Chip() *功能描述:NAND flash使能函數 *其他說明:選中NAND flash(片選使能) *創建日期:2015.12.12 *******************************************************************/ void Select_Chip(void) { NFCONT &= ~(1 << 1); } /******************************************************************* *函數名稱:Deselect_Chip() *功能描述:NAND flash禁止函數 *其他說明:取消選中NAND flash(片選禁止) *創建日期:2015.12.12 *******************************************************************/ void Deselect_Chip(void) { NFCONT |= (1 << 1); } /******************************************************************* *函數名稱:Wait_RnB() *功能描述:等待RnB *其他說明:RnB為1時表示響應了 *創建日期:2015.12.12 *******************************************************************/ void Wait_RnB(void) { while (!(NFSTAT & (1 << 2))); } /******************************************************************* *函數名稱:Clear_RnB() *功能描述:清除RnB *其他說明: *創建日期:2015.12.12 *******************************************************************/ void Clear_RnB(void) { NFSTAT |= (1 << 2); } /******************************************************************* *函數名稱:Send_Cmd(unsigned char cmd) *功能描述:NAND flash命令發送 *輸入參數:cmd *返 回 值:無 *其他說明:cmd為向NAND flash發送的命令字符 *創建日期:2015.12.12 *******************************************************************/ void Send_Cmd(unsigned char cmd) { NFCMMD = cmd; } /******************************************************************* *函數名稱:Send_Addr(unsigned char addr) *功能描述:NAND flash地址發送函數 *輸入參數:addr *返 回 值:無 *其他說明:addr為8位地址 *創建日期:2015.12.12 *******************************************************************/ void Send_Addr(unsigned char addr) { NFADDR = addr; } /******************************************************************* *函數名稱:NF_PageRead(unsigned long addr, unsigned char * buff) *功能描述:讀取NAND flash中整頁的內容 *輸入參數:addr, *buff *返 回 值:無 *其他說明:addr為所讀取頁的行地址,buff寄存器存儲讀取的NF中的內容 *創建日期:2015.12.12 *******************************************************************/ void NF_PageRead(unsigned long addr, unsigned char * buff) { int i = 0; Select_Chip(); //選中NAND flash芯片 Clear_RnB(); //清除RnB Send_Cmd(0x00); //發送命令0x00 Send_Addr(0x00); //發送列地址(列地址兩個周期,行地址三個周期) Send_Addr(0x00); Send_Addr(addr & 0xff); //發送行地址(頁號) Send_Addr((addr >> 8) & 0xff); Send_Addr((addr >> 16) & 0xff); Send_Cmd(0x30); //發送命令0x30 Wait_RnB(); //等待RnB for (i=0; i<2048; ++i) //讀取數據 { buff[i] = NFDATA; } Deselect_Chip(); //取消選中NAND flash芯片 } /******************************************************************* *函數名稱:NF_PageWrite(unsigned long addr, unsigned char * buff) *功能描述:以頁的方式向NAND flash中寫入數據 *輸入參數:addr, *buff *返 回 值:ret *其他說明:addr為所寫頁的行地址,buff寄存器為向NF中寫入的內容 *創建日期:2015.12.13 *******************************************************************/ int NF_PageWrite(unsigned long addr, unsigned char * buff) { int ret ; int i = 0; Select_Chip(); //選中NAND flash芯片 Clear_RnB(); //清除RnB Send_Cmd(0x80); //發送命令0x80 Send_Addr(0x00); //發送列地址 Send_Addr(0x00); Send_Addr(addr & 0xff); //發送行地址 Send_Addr((addr >> 8) & 0xff); Send_Addr((addr >> 16) & 0xff); for (i=0; i<2048; ++i) //向NAND flash寫入數據 { NFDATA = buff[i]; } Send_Cmd(0x10); //發送命令0x10 Wait_RnB(); //等待RnB Send_Cmd(0x70); //發送命令0x70 ret = NFDATA; //讀取寫入狀態 Deselect_Chip(); //取消選中NAND flash return ret; } /******************************************************************* *函數名稱:NF_Erase(unsigned long addr) *功能描述:整塊擦除NAND flash *輸入參數:addr *返 回 值:ret *其他說明:addr為所擦除頁的行地址,ret為擦除狀態返回值 *創建日期:2015.12.13 *******************************************************************/ int NF_Erase(unsigned long addr) { int ret; Select_Chip(); //選中NAND flash芯片 Clear_RnB(); //清除RnB Send_Cmd(0x60); //發送命令0x60 Send_Addr(addr & 0xff); //發送行地址 Send_Addr((addr >> 8) & 0xff); Send_Addr((addr >> 16) & 0xff); Send_Cmd(0xD0); //發送命令0xD0 Wait_RnB(); //等待RnB Send_Cmd(0x70); //發送命令0x70 ret = NFDATA; //讀取擦除狀態 Deselect_Chip(); //取消選中NAND flash芯片 return ret; } /******************************************************************* *函數名稱:Nand_Reset() *功能描述:復位NAND flash *其他說明: *創建日期:2015.12.12 *******************************************************************/ void Nand_Reset(void) { Select_Chip(); //選中NAND flash Clear_RnB(); //清除RnB Send_Cmd(0xff); //發送0xff命令 Wait_RnB(); //等待RnB Deselect_Chip(); //取消選中NAND flash } /******************************************************************* *函數名稱:Nand_Init() *功能描述:初始化NAND flash *其他說明: *創建日期:2015.12.12 *******************************************************************/ void Nand_Init(void) { NFCONF = ((TACLS << 12) | (TWRPH0 << 8) | (TWRPH1 << 4)); //初始化NFCONF NFCONT = ((1 << 0) | (1 << 1)); //初始化NFCONT Nand_Reset(); //復位 } /******************************************************************* *函數名稱:Nand_To_Ram(unsigned long , unsigned char * , int) *功能描述:讀取NAND flash中整頁的內容 *輸入參數:start_addr, * sdram_addr, size *返 回 值:無 *其他說明:addr為所讀取頁的行地址,buff寄存器存儲讀取的NF中的內容 *創建日期:2015.12.12 *******************************************************************/ void Nand_To_Ram(unsigned long start_addr, unsigned char * sdram_addr, int size) { int i = 0; for (i=(start_addr>>11); size>0; ) //采用的是按頁拷貝的方式,不需要列地址,只保留行地址 { NF_PageRead(i, sdram_addr); size -= 2048; sdram_addr += 2048; i++; } } ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看