我有一个具有微控制器(NXP LPC1343)的应用程序,该微控制器通过16位SPI 连接到FPGA。还有一个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,但是如何解决此问题?