- CE assert
- CMD 0x00
- Address
- Offset in one page
- A[7:0]
- A[12:8]
- block + page address
- A[20:13]
- A[28:21]
- A[32:29]
- CMD 0x30
- --- delay --
- Wait RB ready
- --- read data (many)
- CE de-assert
- 告訴nandflash,把 哪一個 page 導引到 output buffer
- 告訴nandflash,將要從該page的哪一個byte 開始讀
每讀一個byte,內部 address就會+1。
以 "讀取 第 1 個block的第 4 個page 的spare area" 為例:
先算出 "第1個block的第4個page" 是 整個算起來,block+page index是..
1 x 128 + 4 = 132
LB 的一個page,有 4k 的data, spare area在 data area的後面,所以 就是由第 4096 byte 開始讀。
這樣就決定了 command 中的offset in one page (4096) 和 block+page index (132)。
照著下給 nandflash 後,就可以向nand flash 的data port 讀資料了。
因為 LB 的 spare area 有 128 bytes。所以用for loop
for(i=0;i<128;i++)就可以把spare area都讀到data[ ]中了。
data[i]=readnanddata();
沒有留言:
張貼留言