三個疑問,
第一是宏定義設置的讀寫地址按照正常設置應該是zone7 起始地址,但是設置后讀寫不正確,改為現在的就可以,這個值是之前離職同事留下來的;
第二是宏定義設置的NF_BYTE_NUM ,這個設置為512時是可以寫的,設置為1024就會跑死在讀頁函數里,下邊給了flash手冊中的描述,不知道我代碼里理解的是否正確;
第三個是最后的圖里有個地址和地址周期,按照官方的例程是起始地址加上圖上的地址,在這個里寫,但是這個芯片我沒有看懂,因為正常是一個地址一個命令。
詳細的flash手冊我放在了附件里,下邊是我的flash描述及代碼部分內容,如果有朋友了解外部flash
• Organization – Page size x8: 2112 bytes (2048 + 64 bytes) – Page size x16: 1056 words (1024 + 32 words) – Block size: 64 pages (128K + 4K bytes) – Plane size: 2 planes x 1024 blocks per plane – Device size: 2Gb: 2048 blocks
#define NF_BYTE_NUM 1024//512//2048 //頁字節數2048bytes 16位數 1024words 這里設置512讀就可以1024就不正常
#define NF_SPARE_NUM 32//64 //額外字節64bytes 16位數32words
#define NF_PAGE_NUM 64 //每個塊有64頁
#define NF_BLOCK_NUM 2048 //2 planes x 1024 blocks
#define rNFDATA (*(volatile unsigned int *)0x240000) //The is at CMD file zone7 star address 0x0200000
#define rNFCMD (*(volatile unsigned int *)0x240001)
#define rNFADDR (*(volatile unsigned int *)0x240002)
#define NF_RDDATA() (rNFDATA) //讀數據
#define NF_WRDATA(data) {rNFDATA=data;} //寫數據
#define NF_CMD(cmd) {rNFCMD=cmd;} //發送命令
#define NF_ADDR(addr) {rNFADDR=addr;} //寫入地址
ZONE7 : origin = 0x0200000, length = 0x100000
|