最近接手一个很老的项目,需要新增程序远程跟新功能。
芯片是c6455,norflash是S29GL512P10TFIV10,目前对flash的读写擦除都失败的,获取ID也不成功,下面是代码:
void EMIFA_Init (void)
{
EMIFA_BPRIO = 0x000000FE;
EMIFA_CE2CFG = 0x011488ae; //fpga
EMIFA_CE3CFG = 0x00240120; //flash
EMIFA_CE4CFG = 0x8000000F;
EMIFA_CE5CFG = 0x8000000F;
EMIFA_AWCC = 0x000002FF;
}
void norflash_readID()
{
Uint16 Manufacturer_ID = 0;
Uint16 Device_ID_word1 = 0;
Uint16 Device_ID_word2 = 0;
Uint16 Device_ID_word3 = 0;
*((Uint16 *)FLASH_CTL555) = FLASH_CMD_AA;
*((Uint16 *)FLASH_CTL2AA) = FLASH_CMD_55;
*((Uint16 *)FLASH_CTL555) = FLASH_CMD_90;
Manufacturer_ID = *((Uint16 *)FLASH_BASE + 0x000);
Device_ID_word1 = *((Uint16 *)FLASH_BASE + 0x001);
Device_ID_word2 = *((Uint16 *)FLASH_BASE + 0x00E);
Device_ID_word3 = *((Uint16 *)FLASH_BASE + 0x00F);
printf("norflash Manufacturer_ID : 0x%x\n", Manufacturer_ID);
printf("norflash Device_ID_word1 : 0x%x\n", Device_ID_word1);
printf("norflash Device_ID_word2 : 0x%x\n", Device_ID_word2);
printf("norflash Device_ID_word3 : 0x%x\n", Device_ID_word3);
*((Uint16 *)FLASH_BASE_123) = FLASH_RESET;
}
我怀疑是emif初始化的问题,请问flash的初始化与什么有关,还有请问有没有emif norflash的例程。
谢谢~