STM32F407 FSMC SRAM写入数据与读出的不一致

2019-07-20 20:15发布

我自己做了块板,芯片是STM32F407,用FSMC总线与SRAM相连,地址线与数据线都是按顺序连接,如图

测试函数如下,这个函数是原子STM32F4探索者里面的,而且这个程序在开发板内测试正常,写入0~1024,单步仿真读出来数据也是0~1024完全一致,但在自己的板上就不正常了
//外部内存测试(最大支持1M字节内存测试)
//x,y:坐标
//fsize:字体大小
//返回值:0,成功;1,失败.
u8 system_exsram_test(u16 x,u16 y,u8 fsize)
{  
        u32 i=0;            
        u16 temp=0;          
        u16 sval=0;        //在地址0读到的数据                                 
       
          //LCD_ShowString(x,y,lcddev.width,y+fsize,fsize,"Ex Memory Test:   0KB");
        //每隔1K字节,写入一个数据,总共写入1024个数据,刚好是1M字节
        for(i=0; i<1024*1024; i+=1024)
        {
                FSMC_SRAM_WriteBuffer((u8*)&temp, i, 2);
                temp++;
        }

        //依次读出之前写入的数据,进行校验                  
        for(i=0; i<1024*1024; i+=1024)
        {
                  FSMC_SRAM_ReadBuffer((u8*)&temp, i, 2);
                if(i==0)sval = temp;
                else if(temp <= sval)break;//后面读出的数据一定要比第一次读到的数据大.                             
                //LCD_ShowxNum(x+15*(fsize/2),y,(u16)(temp-sval+1),4,fsize,0);//显示内存容量  
        }

        if(i >= 1024*1024)
        {
                //LCD_ShowxNum(x+15*(fsize/2),y,i/1024,4,fsize,0);//显示内存值                 
                return 0;//内存正常,成功
        }
        return 1;//失败
}

自己的板上测试结果如图在读第4次时,i=4096,temp结果理论上应该是4,但实际结果是12)


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。