新手入门
- 积分
- 16
- 金钱
- 16
- 注册时间
- 2017-12-18
- 在线时间
- 3 小时
|

楼主 |
发表于 2017-12-19 10:05:41
|
显示全部楼层
本帖最后由 NARI007 于 2017-12-19 10:09 编辑
首先,谢谢原子哥回复。
关于第一个问题,F7支持的NAND容量,这个数据来源于F7的参考手册,不过论坛好像附图有点问题,可以参考文档RM0410第332页关于FMC的存储bank映射中给出NAND只支持256M;关于第二个问题,本人参考是例程实验42, FATFS实验,其中关于NAND的初始化代码如下:
//初始化NAND FLASH
u8 NAND_Init(void)
{
FMC_NAND_PCC_TimingTypeDef ComSpaceTiming,AttSpaceTiming;
NAND_MPU_Config();
NAND_Handler.Instance=FMC_Bank3;
NAND_Handler.Init.NandBank=FMC_NAND_BANK3; //NAND挂在BANK3上
NAND_Handler.Init.Waitfeature=FMC_NAND_PCC_WAIT_FEATURE_DISABLE; //关闭等待特性
NAND_Handler.Init.MemoryDataWidth=FMC_NAND_PCC_MEM_BUS_WIDTH_8; //8位数据宽度
NAND_Handler.Init.EccComputation=FMC_NAND_ECC_DISABLE; //禁止ECC
NAND_Handler.Init.ECCPageSize=FMC_NAND_ECC_PAGE_SIZE_512BYTE; //ECC页大小为512字节
NAND_Handler.Init.TCLRSetupTime=10; //设置TCLR(tCLR=CLE到RE的延时)=(TCLR+TSET+2)*THCLK,THCLK=1/180M=4.6ns
NAND_Handler.Init.TARSetupTime=10; //设置TAR(tAR=ALE到RE的延时)=(TAR+TSET+1)*THCLK,THCLK=1/180M=4.6n。
ComSpaceTiming.SetupTime=10; //建立时间
ComSpaceTiming.WaitSetupTime=10; //等待时间
ComSpaceTiming.HoldSetupTime=10; //保持时间
ComSpaceTiming.HiZSetupTime=10; //高阻态时间
AttSpaceTiming.SetupTime=10; //建立时间
AttSpaceTiming.WaitSetupTime=10; //等待时间
AttSpaceTiming.HoldSetupTime=10; //保持时间
AttSpaceTiming.HiZSetupTime=10; //高阻态时间
HAL_NAND_Init(&NAND_Handler,&ComSpaceTiming,&AttSpaceTiming);
NAND_Reset(); //复位NAND
delay_ms(100);
nand_dev.id=NAND_ReadID(); //读取ID
printf("NAND ID:%#x\r\n",nand_dev.id);
NAND_ModeSet(4); //设置为MODE4,高速模式
红色标记处关闭了硬件ECC
以上两个问题,若属于我理解问题,请原子哥海涵,不吝赐教。
最后也是最重要的问题,代码按照原子哥的例程编写,读写文件偶尔会出现disk_err,并且不同的板子,不同渠道的NAND表现都一样,还请原子哥给点思路,谢谢
|
|