打印
[STM32F4]

用100脚STM32F407的FSMC驱动NAND FLASH遇到问题

[复制链接]
3430|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jiaxw|  楼主 | 2017-2-25 23:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
之前在103上用控制器调好的代码,就想稍作修改放到100脚的407上,可是怎么也不能正常工作
沙发
spark周| | 2017-2-25 23:53 | 只看该作者
楼主程序可以公开吗?贴程序看下吧,这么说看不出什么原因

使用特权

评论回复
板凳
jiaxw|  楼主 | 2017-2-25 23:56 | 只看该作者
        FSMC_NANDInitTypeDef FSMC_NANDInitStructure;
  FSMC_NAND_PCCARDTimingInitTypeDef  p;
         /* Enable GPIOs clock */
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD | RCC_AHB1Periph_GPIOE , ENABLE);
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);
                        

//   RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC, ENABLE);//2013年7月7日12:10:51屏蔽 in STM32F105RB Let compiler happy
        RCC_AHB3PeriphClockCmd(RCC_AHB3Periph_FSMC, ENABLE);
/*-- GPIO Configuration ------------------------------------------------------*/

  GPIO_PinAFConfig(GPIOD, GPIO_PinSource0,         GPIO_AF_FSMC);
  GPIO_PinAFConfig(GPIOD, GPIO_PinSource1,         GPIO_AF_FSMC);
        GPIO_PinAFConfig(GPIOD, GPIO_PinSource14, GPIO_AF_FSMC);
  GPIO_PinAFConfig(GPIOD, GPIO_PinSource15, GPIO_AF_FSMC);
        
        GPIO_PinAFConfig(GPIOE, GPIO_PinSource7,         GPIO_AF_FSMC);
  GPIO_PinAFConfig(GPIOE, GPIO_PinSource8,         GPIO_AF_FSMC);
  GPIO_PinAFConfig(GPIOE, GPIO_PinSource9,         GPIO_AF_FSMC);
  GPIO_PinAFConfig(GPIOE, GPIO_PinSource10,        GPIO_AF_FSMC);
        
  GPIO_PinAFConfig(GPIOD, GPIO_PinSource4,         GPIO_AF_FSMC);
  GPIO_PinAFConfig(GPIOD, GPIO_PinSource5,         GPIO_AF_FSMC);
        GPIO_PinAFConfig(GPIOD, GPIO_PinSource6,         GPIO_AF_FSMC);
  GPIO_PinAFConfig(GPIOD, GPIO_PinSource7,  GPIO_AF_FSMC);
        GPIO_PinAFConfig(GPIOD, GPIO_PinSource11, GPIO_AF_FSMC);
  GPIO_PinAFConfig(GPIOD, GPIO_PinSource12, GPIO_AF_FSMC);

        

/* CLE, ALE, D0->D3, NOE, NWE and NCE2  NAND pin configuration  */
        GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_AF;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  GPIO_InitStructure.GPIO_PuPd  = GPIO_PuPd_UP;
        GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_14 | GPIO_Pin_15 | GPIO_Pin_0 | GPIO_Pin_1 ;
        GPIO_Init(GPIOD, &GPIO_InitStructure);
        /* D4->D7 NAND pin configuration  */  
  GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10;
        GPIO_Init(GPIOE, &GPIO_InitStructure);
        
//         GPIO_PinAFConfig(GPIOD, GPIO_PinSource4, GPIO_AF_FSMC);
//   GPIO_PinAFConfig(GPIOD, GPIO_PinSource5, GPIO_AF_FSMC);

        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5;
        GPIO_Init(GPIOD, &GPIO_InitStructure);
        /* ALE and CLE configuration */
//   GPIO_PinAFConfig(GPIOD,GPIO_PinSource11, GPIO_AF_FSMC);
//   GPIO_PinAFConfig(GPIOD,GPIO_PinSource12, GPIO_AF_FSMC);
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11 | GPIO_Pin_12;
        GPIO_Init(GPIOD, &GPIO_InitStructure);
        
        /* NE1 configuration */
//   GPIO_PinAFConfig(GPIOD, GPIO_PinSource7, GPIO_AF_FSMC);
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
        GPIO_Init(GPIOD, &GPIO_InitStructure);
        /* NWAIT Configuration */
//   GPIO_PinAFConfig(GPIOD,GPIO_PinSource6, GPIO_AF_FSMC);
        /* NWAIT NAND pin configuration */
        GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_6;
        GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_IN;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
        GPIO_InitStructure.GPIO_PuPd  = GPIO_PuPd_UP;
        GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  GPIO_Init(GPIOD, &GPIO_InitStructure);


        


/* INT2 NAND pin configuration */  
//   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;  //在100脚的407上没用到该管脚                                                         
//   GPIO_Init(GPIOG, &GPIO_InitStructure);                  //
  /*-- FSMC Configuration ------------------------------------------------------*/
  p.FSMC_SetupTime                  = 0x1;//2013年7月19日18:29:14,jack.li
  p.FSMC_WaitSetupTime = 0x3;
  p.FSMC_HoldSetupTime = 0x2;
  p.FSMC_HiZSetupTime  = 0x1;

  FSMC_NANDInitStructure.FSMC_Bank = FSMC_Bank2_NAND;
  FSMC_NANDInitStructure.FSMC_Waitfeature = FSMC_Waitfeature_Disable;
  FSMC_NANDInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_8b;
  FSMC_NANDInitStructure.FSMC_ECC = FSMC_ECC_Enable;
  FSMC_NANDInitStructure.FSMC_ECCPageSize = FSMC_ECCPageSize_512Bytes;
//FSMC_NANDInitStructure.FSMC_AddressLowMapping = FSMC_AddressLowMapping_Direct;//2013年7月6日21:16:52屏蔽,在STM32F105RB上没有该结构体内容//在407上同样需要屏蔽
  FSMC_NANDInitStructure.FSMC_TCLRSetupTime = 0x00;
  FSMC_NANDInitStructure.FSMC_TARSetupTime =         0x00;
  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);
        /* Enables the FSMC NAND ECC feature */
        FSMC_NANDECCCmd(FSMC_Bank2_NAND, ENABLE);

使用特权

评论回复
地板
jiajs| | 2017-2-25 23:56 | 只看该作者
原来调好的程序,那就可以从F4 的差别来考虑,所以可以看看最大区别,主频提高导致可能时序里的时间不够长了,还有就是 lO 口的设置变了。

使用特权

评论回复
5
jlyuan| | 2017-2-25 23:58 | 只看该作者
看初始化程序,两者好像有差别

使用特权

评论回复
6
heweibig| | 2017-2-25 23:59 | 只看该作者
同样遇到ID读出来是FF

使用特权

评论回复
7
jiaxw|  楼主 | 2017-2-26 17:46 | 只看该作者
哦,那我就知道怎么回事了,多谢大家,结贴了哈

使用特权

评论回复
8
SR_Li| | 2017-5-11 14:19 | 只看该作者
jiaxw 发表于 2017-2-26 17:46
哦,那我就知道怎么回事了,多谢大家,结贴了哈

大神,你是怎么破的,请指导。

使用特权

评论回复
9
whtwhtw| | 2017-5-11 15:45 | 只看该作者
jiaxw 发表于 2017-2-26 17:46
哦,那我就知道怎么回事了,多谢大家,结贴了哈

有问题了出来问,问题解决了也要给大家个交代啊,到底怎么回事?

使用特权

评论回复
10
zsz888| | 2017-5-12 10:33 | 只看该作者
jiajs 发表于 2017-2-25 23:56
原来调好的程序,那就可以从F4 的差别来考虑,所以可以看看最大区别,主频提高导致可能时序里的时间不够长 ...

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

825

主题

9762

帖子

4

粉丝