TI中文支持网
TI专业的中文技术问题搜集分享网站

F28335通过SPI读写Flash出错

我手里有一个F28335的板子,DSP通过SPI端口连接了型号为M25P128的FLASH,进行读写测试时遇到问题。DSP向FLASH中写入256字节的测试数据,然后由DSP从FLASH中将这些数据读出,与原始数据进行对比检查是否一致。现在的现象是:将芯片擦除后,DSP从FLASH中读出的数据是0xFF(正确),但只要向FLASH中写入数据,无论这些数据内容是什么,并且无论对哪个PAGE进行操作,在DSP从FLASH中读出的数据中,第1个字节总是0x04,第2~256字节的值与写入的数据一致。用示波器观察过SIMO和SOMI,能够确认DSP写出的数据正确,而FLASH送出的数据中第1个字节的确是0x04。已经被这个问题纠缠很久了,希望大家给予帮助。

mangui zhang:

降低写的速率看看就是SPI的CLK频率看看手册的读写时序和操作的等待时间看看是否满足

answer:

可否确认一下,Flash芯片的第一个字节所写的位置,是否为只读的?还是可读可写的?

aozhao li:

回复 mangui zhang:

SPI的CLK频率已经降为最低,时序也对过,没看出问题来。如果是时序有问题,会只导致第1个字节出错吗?

aozhao li:

回复 answer:

我改变过读写的起始位置,但结果是一样的:如果只擦除,不写入,从FLASH读出来的所有字节确实为0xFF;如果擦除后写入,随后从FLASH读出来的第1个字节始终是0x04,剩余字节正确。

rookiecalf:

回复 aozhao li:

可以考虑M25P128的时序条件方面,检查一下时间是否都与电气需求相吻合。

Eruroraito:

你写了什么进去?

mangui zhang:

回复 aozhao li:

奇怪了。spi的起始电平状态对吗 比如上下拉等
从多次实验结果看 可能是你的程序就写入了04抓一下写时序的第一个写入数据

aozhao li:

回复 mangui zhang:

写时序的第一个写入数据是正确的,读时序的第1个数据确实是0x04,上下拉也检查过,没看出哪里有问题。

aozhao li:

回复 rookiecalf:

鄙人确实是菜鸟(或者菜鸟都算不上,还没孵化呢)再三检查时序,实在看不出问题,而且分别用GPIO16~19/GPIO54~57都试过了,现象一样:写入256个字节的任意数据,读出结果是第1字节为0x04,第2~256字节为与写入数据一致。当上电后仅进行读操作时,偶尔会出现读出数据全为0xFF或全为0x00的现象,这又会与什么方面有关呢?

赞(0)
未经允许不得转载:TI中文支持网 » F28335通过SPI读写Flash出错
分享到: 更多 (0)