你好,
我需要在flash里面存储数据,但目前无法正确写flash,flash挂在CE1。DSP core时钟是200M,EMIF工作在40M,能正确读写SDRAM,CE1配置如下,配置的保持时间,建立时间和读写脉冲宽度均满足flash芯片的要求。请问可能是什么原因?
Shine:
请问可以擦除flash吗?看一下是否能擦成0xFFFF?
user6321166:
回复 Shine:
读取出来的数据是0xffff,通过memory看到的也是0xffff。因为赛普拉斯的flash出厂前已经进行了擦除,所以现在读出来的0xffff不能确定是我自己擦除成功还是失败。从我无法写flash来看,感觉我并没有擦除成功
Shine:
回复 user6321166:
可以先clear再erase来判断是否能擦除成功。您看一下flash手册,一般flash烧写需要经过clear(全部为0)->erase(全部0xffff)->program三个命令。
如果erase成功,program不正确,可以测量一下program时序是否符合flash手册里的program命令要求。另外,试试加长每次program之间的wait时间。
user6321166:
回复 Shine:
我这款flash没有clear功能,该功能包含在erase面里:执行erase之前,芯片自动执行clear把所以数据写成0,然后再执行erase。用示波器监测波形,发现DSP地址线输出的地址与代码中指定的地址不一致,DSP数据线输出的数据与指定的一致。
写入代码如下。flash宽度为16位,EMIF的setup,strobe和hold分别为4,3,3,EMIF时钟为40M,HD12为高,HD8为高。
while(1)
{*(Uint16*)0x9000055e=0xaaaa;*(Uint16*)0x90000aae=0x5555;*(Uint16*)0x9000055e=0xaaaa;delay(1000);//自定义延迟
}
理论上DSP地址线A2输出数据依次为0-0-0,监测到的A2数据为1-1-1;A3理论输出数据依次为1-1-1,监测到的A3数据为1-1-1;A4理论输出数据依次为1-1-1,监测到的A4数据为1-1-1;A5理论输出数据依次为1-1-1,监测到的A5数据为1-0-1。如果你需要看波形图,请给我您的邮箱,这里无法回复图片
Tony Tang:
回复 user6321166:
这里可以插入图片的。 如下图:
是不是地址线接错了?把相关部分的EMIF+flash原理图贴进来。
user6321166:
回复 Tony Tang:
user6321166:
回复 Tony Tang:
黄色为CE信号,蓝色为FLASH地址线A0信号
Tony Tang:
回复 user6321166:
flashcode.c
对比一下代码,好像地址偏移值要右移。
Tony Tang:
回复 user6321166:
方便的话,量一下CS与OE信号,我觉得这个信号不太对,按下图不应该连RAS,更应该是连接CAS,当然这个不影响写,会影响读。