OpenEdv-开源电子网

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

冰天雪地 跪求指导 关于FSMC驱动SRAM

[复制链接]

233

主题

961

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1816
金钱
1816
注册时间
2011-10-9
在线时间
230 小时
发表于 2013-7-10 18:14:17 | 显示全部楼层 |阅读模式
采用的SRAM是 BSI的 62LV1600EIP70

硬件连接

A0-A20  = FSMC_A0-FSMC_A20
D0-D7   = FSMC_D0-D7    由于是8bit的sram 所以 FSMC_D8- D15没有连接
CE1(低有效) == FSMC_NCE3  (bank1_S3)
CE2(高有效) 悬空
OE= FSMC_OE
WE=FSMC_WE

_________________________________________________
程序修改自原子的 寄存器 外界SRAM例程 主要是修改了8位模式 后来出问题又把 数据保持时间之类的改大了(现象无变化)

main程序如下(或见附件)
。。。。。各种初始化
while(1)
{
delay_ms(1000);
 for (i=0;i<10;i++)   //地址0-10 写0x80
{
    fsmc_sram_test_write(i,0x80);
}
fsmc_sram_test_write(6000,0xf6);  //地址6000 写0xf6
for (i=0;i<30;i++)   //把前30个地址的数据 从串口发出来
{
send_232(fsmc_sram_test_read(i));
}


}

程序运行后 串口出来的数据是

F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 

经过试验 无论你怎么写 或者 读那个地址的数  读出来的数据肯定是你最后一个写入的数据。看FSMC_A0-A20 地址数据是会变化的 

后来又做了个试验 上述程序修改为
while(1)
{
delay_ms(1000);
for (i=0;i<30;i++)   //把前30个地址的数据 从串口发出来
{
send_232(fsmc_sram_test_read(i));
}


}
//读出来全部是 0xff   但是我用示波器看 FSMC的D0--D7 是全低的  OE有脉冲  CE有脉冲

——————————————————————————
再来
while(1)
{
         for (i=0;i<10;i++)   //地址0-10 写0x80
{
     fsmc_sram_test_write(i,0xAA);
}


}

用示波器看 FSMC_D0-D7输出数据正常        
——————————————————————————————————
疑问:

是读出问题? 读出来FF 用示波器看引脚却全部都是低 没有数据出来???
写不进 读不出??

用示波器看连续写的地址情况 例如写地址 0xffff  
地址线会长期高。。。。
如果读地址0xffff 发现地址线是 低 然后突然高一下 很快又是低.....然后又高一下 这样 。不像写那样长期高 不知道正常不


已更换过芯片 不是芯片质量问题。

求高手帮我看看 无限感谢!



SRAM.zip

682.21 KB, 下载次数: 69

BSI62lv1600.pdf

205.02 KB, 下载次数: 73

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-7-10 21:03:03 | 显示全部楼层
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-7-10 21:03:28 | 显示全部楼层
读出的数据永远是最后一个,很可能是地址线的问题.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

233

主题

961

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1816
金钱
1816
注册时间
2011-10-9
在线时间
230 小时
 楼主| 发表于 2013-7-10 21:29:55 | 显示全部楼层
明天试试把cs长期有效试试   
应该不是地址线 我读0xaaaa 读0x5555地址用示波器看地址线正确的

我的sram是2mx8bit 没有高低地址控制线 不知道有关系不
而且很奇怪 我是能读最后写入的数 但是读的时候用示波器看d0——d7全低的 不知道数哪里来的
回复 支持 反对

使用道具 举报

233

主题

961

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1816
金钱
1816
注册时间
2011-10-9
在线时间
230 小时
 楼主| 发表于 2013-7-11 11:32:14 | 显示全部楼层
果然是 cs的问题

把另一个没用用的 ce2 接高  就正常了

但是这个不是用其中1个就可以了么 我看你都是这么用的

CE1 is active LOW and CE2 is active HIGH. Both chip enables must be active when
data read form or write to the device. If either chip enable is not active, the device is
deselected and is in standby power mode. The DQ pins will be in the high impedance
state when the device is deselected.





回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-18 00:26

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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