- 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();
沒有留言:
張貼留言