三个疑问,
第一是宏定义设置的读写地址按照正常设置应该是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
|