高中生
最后登录1970-1-1
在线时间 小时
注册时间2018-5-18
|
发表于 2018-7-9 21:15:28
|
显示全部楼层
本帖最后由 caiday 于 2018-7-9 21:45 编辑
uint8强制转换为uint32,有可能出现对齐问题。
还有一个地方也有问题,我一时忘记了。
野火的读ID函数中:ipCmd = SEMC_BuildNandIPCommand(NAND_READID, kSEMC_NANDAM_ColumnRow, kSEMC_NANDCM_CommandRead);
第二个变量地址模式应该是kSEMC_NANDAM_ColumnCA0
第三个变量也不对,应该是kSEMC_NANDCM_CommandAddress
读ID命令只需要一个地址00h(20h)
野火的读ID函数中:
result = SEMC_SendIPCommand(SEMC, kSEMC_MemType_NAND, NAND_ADDRESS, ipCmd, 0, (uint32_t *)data);
也是不对的,因为SEMC_SendIPCommand函数只是写或读,不能同时又发命令,又读数据。
正确的读芯片ID应该是:
ipCmd = SEMC_BuildNandIPCommand(NAND_COM_READID, kSEMC_NANDAM_ColumnCA0, kSEMC_NANDCM_CommandAddress);
Result = _NandFlash_SendIPCommand(SEMC, kSEMC_MemType_NAND, NAND_FLASH_BASE+0x00, ipCmd, 0, NULL); //发送读ID命令
Result = _NandFlash_IPCommandNandRead(SEMC, NAND_FLASH_BASE, DeviceID, 5); //读芯片ID
|
|