我有一个应用程序,其中有一个通过 16 位 SPI连接到FPGA的微控制器(NXP LPC1343 )。还有一个 SD 卡使用相同的 SPI 端口 (MISO/MOSI) 但具有不同的 CS/SS 引脚(根据 SPI 规范,两者都是低电平有效)。我需要做的一件事是使用FAT32将 FPGA 中的数据写入 SD 卡上的文件,这是微控制器的工作。微控制器正在运行FatFS,我已经自己可靠地工作了。
因为微控制器只有少量的 RAM,一次只能缓冲少量数据。因此,微必须从 FPGA 读取缓冲区,将 SPI 模式更改为 8 位,然后将该数据写入 FATFS。回想一下,为了将 SD 卡配置为 SPI 模式,必须在 SPI 总线以 400 kHz 运行时发送命令,并且必须进行一定的等待。因此,我希望只执行一次初始化。
然而,即使在 SD 卡上保持 CS 为高电平的同时在 FPGA 上执行事务似乎会使 SD 卡进入一个奇怪的状态,以至于它需要再次进行初始化。这当然是不可取的,因为初始化可能需要几毫秒,以便只写入 4 kB 左右的数据(再次受到我的微型 RAM 容量的限制)。由于我需要尽快写入几兆字节,这会将性能从大约 500 kB/s 降低到不到 100 kB/s。
我知道 SD 卡在技术上并不完全符合 SPI,但如何解决这个问题?