OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2656|回复: 5

STM32F103ZET6 外部SRAM 无法读写

[复制链接]

3

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2016-11-24
在线时间
13 小时
发表于 2016-11-24 11:48:52 | 显示全部楼层 |阅读模式
1金钱
初始化之前0x68000000 地址显示的值:如图


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


进行直接赋值的后 就全部变成 0xAA 了,板子就死了。  求 指点啊, 新手接的别人的项目,现在搞板子的人 离职了, 接了活。 在线等待

初始化FSMC之前的地址值

初始化FSMC之前的地址值

最佳答案

查看完整内容[请看2#楼]

图片是出错后FSMC的寄存器地址值
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2016-11-24
在线时间
13 小时
 楼主| 发表于 2016-11-24 11:48:53 | 显示全部楼层
正点原子 发表于 2016-11-27 13:13
板子你自己设计的?

图片是出错后FSMC的寄存器地址值  
FSMC状态.png
回复

使用道具 举报

3

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2016-11-24
在线时间
13 小时
 楼主| 发表于 2016-11-24 12:03:08 | 显示全部楼层
这是  初始化函数
//*************************************************************
//                                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);  
}
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2016-11-27 13:13:01 | 显示全部楼层
板子你自己设计的?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

3

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2016-11-24
在线时间
13 小时
 楼主| 发表于 2016-11-28 09:13:24 | 显示全部楼层
正点原子 发表于 2016-11-27 13:13
板子你自己设计的?

是之前同事 自己的画的   主要结构 是STM32F103ZET6  和一个DSP 28335 公用一个外部的SRAM空间。   现在其他部分都测试正常, 到这个SRAM 读写的时候就挂了  有时候板子直接就死了, 有时候就直接进hard 中断死循环了 。 希望原子哥 指教   新手 之前搞POWER PC vxworks的 现在刚接手这个。
回复

使用道具 举报

3

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2016-11-24
在线时间
13 小时
 楼主| 发表于 2016-11-29 10:38:58 | 显示全部楼层
在options->target->use cross module optimization 和use microLIB 同时勾上就OK了。  具体不知道什么原因 我还在了解中 ,如果有深入理解的基友可以来解释下,我也在学习中。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-25 16:34

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表