大家好:我碰到的问题和以前的几位朋友一样,都是ecc代码读出为0,不知道设置有什么错误,想请教下,下面是我的大致步骤,希望指正:
/*-- FSMC Configuration ------------------------------------------------------*/
p.FSMC_SetupTime = 0x1; // 在(通用空间/属性空间)x的建立时间 (Common/Attribute memory x setup time)
p.FSMC_WaitSetupTime = 0x2;// 在(通用空间/属性空间)x的等待时间 (Common/Attribute memory x wait time)
p.FSMC_HoldSetupTime = 0x3;// 在(通用空间/属性空间)x的保持时间 (Common/Attribute memory x hold time)
p.FSMC_HiZSetupTime = 0x1; // 在(通用空间/属性空间)x数据总线的高阻时间 (Common/Attribute memory x databus HiZ time)
//tmppcr[0:19]
FSMC_NANDInitStructure.FSMC_Bank = FSMC_Bank2_NAND;
FSMC_NANDInitStructure.FSMC_Waitfeature = FSMC_Waitfeature_Disable; // 等待功能使能位打开 [1]
FSMC_NANDInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_8b; //数据总线宽度[4:5]
FSMC_NANDInitStructure.FSMC_ECC = FSMC_ECC_Enable; //ECC计算电路使能位 [6]
FSMC_NANDInitStructure.FSMC_ECCPageSize = FSMC_ECCPageSize_2048Bytes;
//#endif
FSMC_NANDInitStructure.FSMC_TCLRSetupTime = 0x00;//CLE至RE的延迟 (CLE to RE delay) [9:12]
FSMC_NANDInitStructure.FSMC_TARSetupTime = 0x00; //ALE至RE的延迟 (ALE to RE delay) [13:16]
FSMC_NANDInitStructure.FSMC_CommonSpaceTimingStruct = &p; //通用存储空间时序寄存器
FSMC_NANDInitStructure.FSMC_AttributeSpaceTimingStruct = &p; //属性存储空间时序寄存器
FSMC_NANDInit(&FSMC_NANDInitStructure);
/* FSMC NAND Bank Cmd Test */
FSMC_NANDCmd(FSMC_Bank2_NAND, ENABLE);
FSMC_NANDECCCmd(FSMC_Bank2_NAND,ENABLE);
status = FSMC_NAND_WriteSmallPage(TxBuffer, WR_Add, 1);
while(FSMC_GetFlagStatus(FSMC_Bank2_NAND,FSMC_FLAG_FEMPT)==Bit_RESET);
ecc = FSMC_GetECC(FSMC_Bank2_NAND);
FSMC_NANDECCCmd(FSMC_Bank2_NAND,DISABLE);
TxBuffer[2048]里面的数据是0x00~0xff的循环数据,写一个page以后就读一次ecc
但是每次数据都是0 不知道还有什么没有注意的,看了其他的帖子中提到的包括fifo标志和ecc的使能我都加了。真心求赐教,卡了两天了 没有一丝的头绪 |