STM32F103ZET6 外部SRAM 无法读写

2019-10-16 07:12发布

初始化之前0x68000000 地址显示的值:如图


初始化后0x68000000地址值都为0


进行直接赋值的后 就全部变成 0xAA 了,板子就死了。  求 指点啊, 新手接的别人的项目,现在搞板子的人 离职了, 接了活。 在线等待
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
xucao514
1楼-- · 2019-10-16 08:34
正点原子 发表于 2016-11-27 13:13
板子你自己设计的?

图片是出错后FSMC的寄存器地址值  
xucao514
2楼-- · 2019-10-16 12:11
这是  初始化函数
//*************************************************************
//                                FSMC CY7C024AV Init.
//*************************************************************
void FSMCCY7C024AVInit(void)
{       
        FSMC_NORSRAMInitTypeDef  FSMC_NORSRAMInitStructure;
          FSMC_NORSRAMTimingInitTypeDef  p;
          //#if 0
        GPIO_InitTypeDef GPIO_InitStructure;
  
       
        /*FSMC×üÏßê1óÃμÄGPIO×éê±Öóê1Äü*/
          RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOG | RCC_APB2Periph_GPIOE |
                           RCC_APB2Periph_GPIOF, ENABLE);

    /*FSMCêy¾YÏßFSMC_D[0:15]3õê¼»ˉ£¬íÆíì¸′óÃêä3ö*/
          GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_8 | GPIO_Pin_9 |
                                  GPIO_Pin_10 | GPIO_Pin_14 | GPIO_Pin_15;
          GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
          GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
          GPIO_Init(GPIOD, &GPIO_InitStructure);
  
          GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 |
                                  GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 |
                                  GPIO_Pin_15;
          GPIO_Init(GPIOE, &GPIO_InitStructure);
  
    /*FSMCμØÖ·ÏßFSMC_A[0:17]3õê¼»ˉ£¬íÆíì¸′óÃêä3ö*/
          GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 |
                                  GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_12 | GPIO_Pin_13 |
                                  GPIO_Pin_14 | GPIO_Pin_15;
          GPIO_Init(GPIOF, &GPIO_InitStructure);
  
          GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 |
                                  GPIO_Pin_4 | GPIO_Pin_5;
          GPIO_Init(GPIOG, &GPIO_InitStructure);
  
          GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13;
          GPIO_Init(GPIOD, &GPIO_InitStructure);
   
          /*FSMC NOEoíNWE3õêÔ»ˉ£¬íÆíì¸′óÃêä3ö*/  
          GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 |GPIO_Pin_5;
          GPIO_Init(GPIOD, &GPIO_InitStructure);
  
          /*FSMC NE33õêÔ»ˉ£¬íÆíì¸′óÃêä3ö*/  
          GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
          GPIO_Init(GPIOG, &GPIO_InitStructure);
  
          /*FSMC NBL0oíNBL13õêÔ»ˉ£¬íÆíì¸′óÃêä3ö*/  
          GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1;
          GPIO_Init(GPIOE, &GPIO_InitStructure);
        //#endif
       
/*--------------FSMC ×üÏß ′æ′¢Æ÷2ÎêyÅäÖÃ------------------------------*/
          p.FSMC_AddressSetupTime = 3;//3           //μØÖ·½¨á¢ê±¼ä   
          p.FSMC_AddressHoldTime = 10;//10            //μØÖ·±£3Ö걼䠠
          p.FSMC_DataSetupTime = 4;//4              //êy¾Y½¨á¢ê±¼ä
          p.FSMC_BusTurnAroundDuration = 0;      //×üÏ߻ָ′ê±¼ä
          p.FSMC_CLKDivision = 1;//1               // ê±Öó·ÖÆμòò×ó
          p.FSMC_DataLatency = 0;                     //êy¾Y2úéúê±¼ä
          p.FSMC_AccessMode =  FSMC_AccessMode_A; //FSMC NOR¿ØÖÆÆ÷ê±Dò
         
/*--------------FSMC ×üÏß 2ÎêyÅäÖÃ------------------------------*/
          FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_NORSRAM3;                  //ê1óÃáËFSMCμÄBANK1μÄ×ó°å¿é3            
          FSMC_NORSRAMInitStructure.FSMC_DataAddressMux = FSMC_DataAddressMux_Disable;//½ûÖ1μØÖ·êy¾YÏ߸′óÃ
          FSMC_NORSRAMInitStructure.FSMC_MemoryType = FSMC_MemoryType_SRAM;           //′æ′¢Æ÷ààDíÎaSRAM
          FSMC_NORSRAMInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_16b;  //′æ′¢Æ÷êy¾Y¿í¶èÎa16λ
          //FSMC_NORSRAMInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_8b;
        FSMC_NORSRAMInitStructure.FSMC_BurstAccessMode = FSMC_BurstAccessMode_Disable; //1رÕí»·¢Ä£ê½·ÃÎê
    //μè′yDÅoÅóÅÏ輶£¬Ö»óDÔúê1Äüí»·¢·ÃÎêÄ£ê½2ÅóDD§
        FSMC_NORSRAMInitStructure.FSMC_WaitSignalPolarity = FSMC_WaitSignalPolarity_Low;
    //1رÕWrapped burst access mode£¬Ö»óDÔúê1Äüí»·¢·ÃÎêÄ£ê½2ÅóDD§
          FSMC_NORSRAMInitStructure.FSMC_WrapMode = FSMC_WrapMode_Disable;         
    //μè′yDÅoÅéèÖã¬Ö»óDÔúê1Äüí»·¢·ÃÎêÄ£ê½2ÅóDD§
          FSMC_NORSRAMInitStructure.FSMC_WaitSignalActive = FSMC_WaitSignalActive_BeforeWaitState;
          FSMC_NORSRAMInitStructure.FSMC_WriteOperation = FSMC_WriteOperation_Enable;     //ê1ÄüÕa¸öBANKμÄD′2ù×÷
    //ê1Äü/1رÕμè′yDÅÏ¢éèÖã¬Ö»Ôúê1Äüí»·¢·ÃÎêÄ£ê½2ÅóDD§
          FSMC_NORSRAMInitStructure.FSMC_WaitSignal = FSMC_WaitSignal_Disable;     
          FSMC_NORSRAMInitStructure.FSMC_ExtendedMode = FSMC_ExtendedMode_Disable; //1رÕExtend Mode
          FSMC_NORSRAMInitStructure.FSMC_WriteBurst = FSMC_WriteBurst_Disable;     //1رÕWrite Burst Mode   
          FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStruct = &p;               //¶á2ù×÷ê±Dò2Îêy
          FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct = &p;                   //D′2ù×÷ê±Dò2Îêy

          FSMC_NORSRAMInit(&FSMC_NORSRAMInitStructure);
       
/*--------------ê1ÄüBANK1μÄ×ó°å¿é3------------------------------*/
          FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM3, ENABLE);  
}
正点原子
3楼-- · 2019-10-16 14:15
板子你自己设计的?
xucao514
4楼-- · 2019-10-16 17:55
 精彩回答 2  元偷偷看……
xucao514
5楼-- · 2019-10-16 20:01
在options->target->use cross module optimization 和use microLIB 同时勾上就OK了。  具体不知道什么原因 我还在了解中 ,如果有深入理解的基友可以来解释下,我也在学习中。

一周热门 更多>