高级会员

- 积分
- 539
- 金钱
- 539
- 注册时间
- 2016-4-19
- 在线时间
- 139 小时
|

楼主 |
发表于 2016-4-23 10:56:58
|
显示全部楼层
ID能够读出来,说明硬件连接和配置应该是没有问题,希望能看到的人特别注意一下
1、#define CMD_AREA (uint32_t)(1<<17) /* A16 = CLE high */
#define ADDR_AREA (uint32_t)(1<<16) /* A17 = ALE high */
这个配置,有的人配置成了
#define CMD_AREA (uint32_t)(1<<16) /* A16 = CLE high */
#define ADDR_AREA (uint32_t)(1<<17) /* A17 = ALE high */
,最上面的那种配置读出来的ID值是正确的,下面这种配置读出来的ID值不正确,但书上有说命令区应该设置HADDR[16]=1;
2、注意一下这个地方:NANDFLASH_ADDRESS=(NAND_FLASH_START_ADDR+(Address.Block*64+Address.Page)*1024);这个是我准备写入地址的计算
3、 //D′èëáD
*(vu16 *)(NAND_FLASH_START_ADDR | ADDR_AREA) = (uint16_t)(NANDFLASH_ADDRESS&0x00ff);
*(vu16 *)(NAND_FLASH_START_ADDR | ADDR_AREA) = (uint16_t)((NANDFLASH_ADDRESS>>8)&0x0007);
//D′èëDD
*(vu16 *)(NAND_FLASH_START_ADDR | ADDR_AREA) = (uint16_t)((NANDFLASH_ADDRESS>>11)&0x00ff);
*(vu16 *)(NAND_FLASH_START_ADDR | ADDR_AREA) = (uint16_t)((NANDFLASH_ADDRESS>>19)&0x00ff);
这是我写入列和行的计算,我用的是16位的存储器
|
|