如何计算Nand Flash要传入的行地址和列地址
生活随笔
收集整理的這篇文章主要介紹了
如何计算Nand Flash要传入的行地址和列地址
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在介紹具體讀取數據的詳細流程之前,還要做一件事,那就是,先要搞懂我們要訪問的地址,以及這些地址,如何分解后,一點點傳入進去,使得硬件能識別才行。此處還是以 K9F8G08U0A 為例,此 Nand Flash,一共有 8192 個塊,每個塊內有 64 頁,每個頁是 2K+64 Bytes,假設,我們要訪問其中的第 7000個塊中的第 64 頁中的 1208 字節處的地址,此時,我們就要先把具體的地址算出來: 物理地址 = 塊大小×塊號+頁大小×頁號+頁內地址=7000×128K+64×2K+1208=0x36B204B8接下來,我們就看看,怎么才能把這個實際的物理地址,轉化為 Nand Flash 所要求的格式。在解釋地址組成之前,先要來看看其datasheet 中關于地址周期的介紹:
結合圖,我們可以看出,此 Nand Flash 地址周期共有 5 個,2 個列(Column),3個行(Row)周期,而對于對應地,我們可以看出,實際上,列地址 A0~A10,就是頁內地址,地址范圍是從0 到2047,而對出的 A11,理論上可以表示 2048~4095,但是實際上,我們最多也只用到了2048~2011, 用于表示頁內的oob區域,其大小是 64 字節。對應地,A12~A30,稱作頁號,頁的號碼,可以定位到具體是哪一個頁。而其中,A18~A30,表示對應的塊號,即屬于哪個塊。簡單解釋完了地址組成,那么就很容易分析上面例子中的地址了:0x36B204B8 = 0011 0110 1011 0010 0000 0100 1011 1000,分別分配到5個地址周期就是:1st周期,A7~A0: 1011 1000 = 0xB82nd周期,A11~A8: 0000 0100 = 0x043rd周期,A19~A12: 0010 0000 = 0x204th 周期,A27~A20: 0110 1011 = 0x6B5th 周期,A30~A28: 0000 0011 = 0x03注意,與圖中對應的*L,意思是地電平,由于未用到那些位,datasheet中強制要求設為0,所以,才有上面的2nd周期中的高4位是0000.其他的A30之后的位也是類似原理,都是 0。因此,接下來要介紹的,我們要訪問第 7000 個塊中的第 64 頁中的 1208 字節處的話,所要傳入的地址就是分 5 個周期,分別傳入兩個列地址:0xB8,0x04,然后再傳3個行地址:0x20,0x6B,0x03,這樣硬件才能識別。
| ? |
總結
以上是生活随笔為你收集整理的如何计算Nand Flash要传入的行地址和列地址的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 嵌入式volatile关键字
- 下一篇: S3C2440的LCD编程