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

[复制链接]
 楼主| lihaolongli 发表于 2013-8-1 14:35 | 显示全部楼层 |阅读模式
之前在103上用控制器调好的代码,就想稍作修改放到100脚的407上,可是怎么也不能正常工作,连ID号都读取不出来,407用的是25M晶振,以下是初始化部分代码,请各位看看,有没有问题
  1.         FSMC_NANDInitTypeDef FSMC_NANDInitStructure;
  2.   FSMC_NAND_PCCARDTimingInitTypeDef  p;
  3.          /* Enable GPIOs clock */
  4.   RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD | RCC_AHB1Periph_GPIOE , ENABLE);
  5.   RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);
  6.                         

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

  10.   GPIO_PinAFConfig(GPIOD, GPIO_PinSource0,         GPIO_AF_FSMC);
  11.   GPIO_PinAFConfig(GPIOD, GPIO_PinSource1,         GPIO_AF_FSMC);
  12.         GPIO_PinAFConfig(GPIOD, GPIO_PinSource14, GPIO_AF_FSMC);
  13.   GPIO_PinAFConfig(GPIOD, GPIO_PinSource15, GPIO_AF_FSMC);
  14.        
  15.         GPIO_PinAFConfig(GPIOE, GPIO_PinSource7,         GPIO_AF_FSMC);
  16.   GPIO_PinAFConfig(GPIOE, GPIO_PinSource8,         GPIO_AF_FSMC);
  17.   GPIO_PinAFConfig(GPIOE, GPIO_PinSource9,         GPIO_AF_FSMC);
  18.   GPIO_PinAFConfig(GPIOE, GPIO_PinSource10,        GPIO_AF_FSMC);
  19.        
  20.   GPIO_PinAFConfig(GPIOD, GPIO_PinSource4,         GPIO_AF_FSMC);
  21.   GPIO_PinAFConfig(GPIOD, GPIO_PinSource5,         GPIO_AF_FSMC);
  22.         GPIO_PinAFConfig(GPIOD, GPIO_PinSource6,         GPIO_AF_FSMC);
  23.   GPIO_PinAFConfig(GPIOD, GPIO_PinSource7,  GPIO_AF_FSMC);
  24.         GPIO_PinAFConfig(GPIOD, GPIO_PinSource11, GPIO_AF_FSMC);
  25.   GPIO_PinAFConfig(GPIOD, GPIO_PinSource12, GPIO_AF_FSMC);

  26.        

  27. /* CLE, ALE, D0->D3, NOE, NWE and NCE2  NAND pin configuration  */
  28.         GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_AF;
  29.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
  30.   GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  31.   GPIO_InitStructure.GPIO_PuPd  = GPIO_PuPd_UP;
  32.         GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_14 | GPIO_Pin_15 | GPIO_Pin_0 | GPIO_Pin_1 ;
  33.         GPIO_Init(GPIOD, &GPIO_InitStructure);
  34.         /* D4->D7 NAND pin configuration  */  
  35.   GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10;
  36.         GPIO_Init(GPIOE, &GPIO_InitStructure);
  37.        
  38. //         GPIO_PinAFConfig(GPIOD, GPIO_PinSource4, GPIO_AF_FSMC);
  39. //   GPIO_PinAFConfig(GPIOD, GPIO_PinSource5, GPIO_AF_FSMC);

  40.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5;
  41.         GPIO_Init(GPIOD, &GPIO_InitStructure);
  42.         /* ALE and CLE configuration */
  43. //   GPIO_PinAFConfig(GPIOD,GPIO_PinSource11, GPIO_AF_FSMC);
  44. //   GPIO_PinAFConfig(GPIOD,GPIO_PinSource12, GPIO_AF_FSMC);
  45.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11 | GPIO_Pin_12;
  46.         GPIO_Init(GPIOD, &GPIO_InitStructure);
  47.        
  48.         /* NE1 configuration */
  49. //   GPIO_PinAFConfig(GPIOD, GPIO_PinSource7, GPIO_AF_FSMC);
  50.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
  51.         GPIO_Init(GPIOD, &GPIO_InitStructure);
  52.         /* NWAIT Configuration */
  53. //   GPIO_PinAFConfig(GPIOD,GPIO_PinSource6, GPIO_AF_FSMC);
  54.         /* NWAIT NAND pin configuration */
  55.         GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_6;
  56.         GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_IN;
  57.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
  58.         GPIO_InitStructure.GPIO_PuPd  = GPIO_PuPd_UP;
  59.         GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  60.   GPIO_Init(GPIOD, &GPIO_InitStructure);


  61.        


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

  70.   FSMC_NANDInitStructure.FSMC_Bank = FSMC_Bank2_NAND;
  71.   FSMC_NANDInitStructure.FSMC_Waitfeature = FSMC_Waitfeature_Disable;
  72.   FSMC_NANDInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_8b;
  73.   FSMC_NANDInitStructure.FSMC_ECC = FSMC_ECC_Enable;
  74.   FSMC_NANDInitStructure.FSMC_ECCPageSize = FSMC_ECCPageSize_512Bytes;
  75. //FSMC_NANDInitStructure.FSMC_AddressLowMapping = FSMC_AddressLowMapping_Direct;//2013年7月6日21:16:52屏蔽,在STM32F105RB上没有该结构体内容//在407上同样需要屏蔽
  76.   FSMC_NANDInitStructure.FSMC_TCLRSetupTime = 0x00;
  77.   FSMC_NANDInitStructure.FSMC_TARSetupTime =         0x00;
  78.   FSMC_NANDInitStructure.FSMC_CommonSpaceTimingStruct = &p;
  79.   FSMC_NANDInitStructure.FSMC_AttributeSpaceTimingStruct = &p;
  80.         FSMC_NANDInit(&FSMC_NANDInitStructure);
  81. /* FSMC NAND Bank Cmd Test */
  82.   FSMC_NANDCmd(FSMC_Bank2_NAND, ENABLE);
  83.         /* Enables the FSMC NAND ECC feature */
  84.         FSMC_NANDECCCmd(FSMC_Bank2_NAND, ENABLE);

puchuang 发表于 2013-8-1 18:50 | 显示全部楼层
不是很了解  这一块   楼主   帮你顶一个   看看别人的意见   顶一个
dream215 发表于 2014-1-24 16:34 | 显示全部楼层
楼主 问题解决没?我也遇到同样问题了。。。
airwill 发表于 2014-1-24 17:34 | 显示全部楼层
原来调好的程序,那就可以从F4 的差别来考虑,所以可以看看最大区别,主频提高导致可能时序里的时间不够长了,还有就是 lO 口的设置变了。
njchenmin 发表于 2014-1-25 08:27 | 显示全部楼层
看初始化程序,两者好像有差别
zhoujianyong 发表于 2014-12-15 13:37 | 显示全部楼层
楼主,您的问题解决了吗? 我也遇到类似的问题。

帮忙看下:
https://bbs.21ic.com/icview-849727-1-1.html
fang19931130 发表于 2015-12-25 17:34 | 显示全部楼层
同样遇到ID读出来是FF
zhuotuzi 发表于 2015-12-25 21:58 | 显示全部楼层
有没有人做过这个,分享一下经验,这个如何搞。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:练好内功,摘花伤人,单片机交流群:219349984

1

主题

58

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部