[STM32F1] FSMC读8位内存出错,请教大家

[复制链接]
1058|8
 楼主| static 发表于 2019-12-24 10:52 | 显示全部楼层 |阅读模式
本帖最后由 static 于 2019-12-24 11:05 编辑

大家好,使用FSMC经验不足,现使用FSMC读取8bit 外部RAM,读到的数据有错位且只有第一次是正确的的,求教大家,谢谢大家帮忙指正。

385965e018090a38ed.png
如上图: CE接NE2,所以CS地址空间是:BANK2:6400 0000 --- 67ff ffff ;
FSMC 配置如下(根据官方代码修改):

46135e017ef72e263.png

读数据:

uint8_t data = 0x55 ;
  /* Write data to the SRAM memory */
  for(uwIndex = 0; uwIndex < 3; uwIndex++)
  {
    *(__IO uint8_t *)(0x64000000 + uwIndex) = data;
   printf ( "FSMC read buffer[%d] fill = %x , \r\n" , uwIndex , data );
  }

  /* Read back data from the SRAM memory */
  for(uwIndex = 0; uwIndex < 3; uwIndex++)
  {
    aRxBuffer[uwIndex] = *(__IO uint8_t *)(0x64000000 +  uwIndex);
   printf ( "FSMC read buffer[%d] READ = %x , \r\n" , uwIndex , aRxBuffer[uwIndex] );
  }
        
uint8_t volatile *Test1,*Test2;
Test1=(uint8_t *)0x64000100;
*Test1++=0x99;
printf ( "FSMC read buffer3 = %x , \r\n" , *(volatile uint8_t *)0x64000100 );
printf ( "FSMC read buffer3 = %x , \r\n" , *(volatile uint8_t *)0x64000100 );        


打印出数据为:
FSMC read buffer[0] fill = 55 ,
FSMC read buffer[1] fill = 55 ,
FSMC read buffer[2] fill = 55 ,
FSMC read buffer[0] READ = 5 ,
FSMC read buffer[1] READ = 5 ,
FSMC read buffer[2] READ = 5 ,
FSMC read buffer3 = 99 ,
FSMC read buffer3 = 1 ,


请问大家问题出在哪里?始终没搞懂
kingkits 发表于 2019-12-24 16:26 | 显示全部楼层
貌似你的地址线不对呀
香水城 发表于 2019-12-25 11:55 | 显示全部楼层
你是STM32F1具体什么型号?多少脚的?
硬件连接可以参考下ST官方的评估板的原理图接法,软件可以参考下ST的FSMC例程。
 楼主| static 发表于 2019-12-25 14:26 | 显示全部楼层
香水城 发表于 2019-12-25 11:55
你是STM32F1具体什么型号?多少脚的?
硬件连接可以参考下ST官方的评估板的原理图接法,软件可以参考下ST ...

谢谢香水版主,现在用的是STM32F103ZET6;LQFP144
我看了官方例程,官方例程是16bit SDRAM , 我这边现在是8bit SDRAM ,其他的处理就是地址线引脚;我现在改动的也就是上面几点;仍然搞不明白还有什么地方不对;
 楼主| static 发表于 2019-12-25 14:27 | 显示全部楼层
kingkits 发表于 2019-12-24 16:26
貌似你的地址线不对呀

硬件那边说对于RAM是地址寻址,方便走线是可以的;
kingkits 发表于 2019-12-25 15:12 | 显示全部楼层
本帖最后由 kingkits 于 2019-12-25 15:31 编辑
static 发表于 2019-12-25 14:27
硬件那边说对于RAM是地址寻址,方便走线是可以的;

应该是我看错了


zchong 发表于 2019-12-25 17:47 来自手机 | 显示全部楼层
时序先调保守些
香水城 发表于 2019-12-25 23:39 | 显示全部楼层
static 发表于 2019-12-25 14:26
谢谢香水版主,现在用的是STM32F103ZET6;LQFP144
我看了官方例程,官方例程是16bit SDRAM , 我这边现在 ...

是SRAM吧,

你现在8位数据宽带,例程16位,地址这个地方你要注意,他做了1位偏移,你现在就不用做了。
wakayi 发表于 2020-1-17 14:30 | 显示全部楼层
先把速度降下来试试看
您需要登录后才可以回帖 登录 | 注册

本版积分规则

19

主题

133

帖子

1

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