我在调试stm32时,通常都将程序加载到外部SRAM内运行,一则容量大,加载速度快,再则避免擦写内部flash,延长其寿命。
但问题多多,最近在调试SDIO模式读写SD卡时,发现老是出现CRC错误,降低SDIO时钟频率还是如此,甚至低于1MHz问题依旧。
因为命令能成功执行,说明CMD线没问题,初步怀疑是数据线(DATA0~DATA3)出问题了。不管怎么调都无法解决。
后来我将程序加载到内部SRAM运行,把速度提高到18MHz都能正常工作未出现CRC错误。现象怪异,于是我又将主程序和SD驱动部分分开加载到外部SRAM和内部SRAM,也就是读写SD卡的代码在内部SRAM运行,其他程序仍然在外部SRAM运行,同样能运行无错。就是说SDIO数据线传输数据时FSMC总线不能传输数据。
请教各位这何解,难道FSMC线会干扰SDIO的数据线? |