高级会员

- 积分
- 805
- 金钱
- 805
- 注册时间
- 2012-7-19
- 在线时间
- 111 小时
|
发表于 2021-12-22 15:35:20
|
显示全部楼层
修改Nand初始化的代码,增加新的IC识别就可以
- //初始化NAND FLASH
- u8 NAND_Init(void)
- {
- FMC_NAND_PCC_TimingTypeDef ComSpaceTiming,AttSpaceTiming;
-
- NAND_Handler.Instance=FMC_NAND_DEVICE;
- 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_2048BYTE; //ECC页大小为2k
- NAND_Handler.Init.TCLRSetupTime=0; //设置TCLR(tCLR=CLE到RE的延时)=(TCLR+TSET+2)*THCLK,THCLK=1/180M=5.5ns
- NAND_Handler.Init.TARSetupTime=1; //设置TAR(tAR=ALE到RE的延时)=(TAR+TSET+2)*THCLK,THCLK=1/180M=5.5n。
-
- ComSpaceTiming.SetupTime=2; //建立时间
- ComSpaceTiming.WaitSetupTime=3; //等待时间
- ComSpaceTiming.HoldSetupTime=2; //保持时间
- ComSpaceTiming.HiZSetupTime=1; //高阻态时间
-
- AttSpaceTiming.SetupTime=2; //建立时间
- AttSpaceTiming.WaitSetupTime=3; //等待时间
- AttSpaceTiming.HoldSetupTime=2; //保持时间
- AttSpaceTiming.HiZSetupTime=1; //高阻态时间
-
- HAL_NAND_Init(&NAND_Handler,&ComSpaceTiming,&AttSpaceTiming);
- NAND_Reset(); //复位NAND
- delay_ms(100);
- nand_dev.id=NAND_ReadID(); //读取ID
- printf("nand_dev.id=%x ,MT29F4G08ABADA=%x,MT29F16G08ABABA=%x\r\n",nand_dev.id,MT29F4G08ABADA,MT29F16G08ABABA);
- NAND_ModeSet(4); //设置为MODE4,高速模式
- if(nand_dev.id==MT29F16G08ABABA) //NAND为MT29F16G08ABABA
- {
- nand_dev.page_totalsize=4320; //nand一个page的总大小(包括spare区)
- nand_dev.page_mainsize=4096; //nand一个page的有效数据区大小
- nand_dev.page_sparesize=224; //nand一个page的spare区大小
- nand_dev.block_pagenum=128; //nand一个block所包含的page数目
- nand_dev.plane_blocknum=2048; //nand一个plane所包含的block数目
- nand_dev.block_totalnum=4096; //nand的总block数目
- }
- else if(nand_dev.id==MT29F4G08ABADA)//NAND为MT29F4G08ABADA
- {
- nand_dev.page_totalsize=2112; //nand一个page的总大小(包括spare区)
- nand_dev.page_mainsize=2048; //nand一个page的有效数据区大小
- nand_dev.page_sparesize=64; //nand一个page的spare区大小
- nand_dev.block_pagenum=64; //nand一个block所包含的page数目
- nand_dev.plane_blocknum=2048; //nand一个plane所包含的block数目
- nand_dev.block_totalnum=4096; //nand的总block数目
- }
- else if(nand_dev.id==MT29F4G08ABAEA)//NAND为MT29F4G08ABAEA
- {
- nand_dev.page_totalsize=2112; //nand一个page的总大小(包括spare区)
- nand_dev.page_mainsize=2048; //nand一个page的有效数据区大小
- nand_dev.page_sparesize=64; //nand一个page的spare区大小
- nand_dev.block_pagenum=64; //nand一个block所包含的page数目
- nand_dev.plane_blocknum=2048; //nand一个plane所包含的block数目
- nand_dev.block_totalnum=4096; //nand的总block数目
- }else return 1; //错误,返回
- return 0;
- }
复制代码 |
|