16 비트 SPI를 통해 FPGA에 연결된 마이크로 컨트롤러 (NXP LPC1343 ) 가있는 응용 프로그램이 있습니다 . 동일한 SPI 포트 (MISO / MOSI)를 사용하지만 다른 CS / SS 핀을 사용하는 SD 카드도 있습니다 (SPI 사양에 따라 둘 다 활성 낮음). 내가해야 할 일 중 하나는 FAT32를 사용하여 FPGA의 데이터를 SD 카드의 파일에 쓰는 것입니다. 이것은 마이크로 컨트롤러의 역할입니다. 마이크로 컨트롤러는 FatFS를 실행하고 있는데 , 그 자체로 안정적으로 작동합니다.
마이크로 컨트롤러에는 적은 양의 RAM 만 있기 때문에 적은 양의 데이터 만 한 번에 버퍼링 할 수 있습니다. 따라서 마이크로는 FPGA에서 버퍼를 읽고 SPI 모드를 8 비트로 변경 한 다음 해당 데이터를 FATFS에 기록해야합니다. SPI 모드 용 SD 카드를 구성하려면 SPI 버스가 400kHz에서 실행되는 동안 명령을 보내야하며 일정량의 대기 시간이 발생해야합니다. 따라서 초기화를 한 번만 수행하고 싶습니다.
그러나 SD 카드에서 CS를 높게 유지 한 상태에서도 FPGA에서 트랜잭션을 수행하면 SD 카드가 이상한 상태가되어 다시 초기화해야합니다. 물론 4 kB 정도의 데이터를 쓰기 위해 초기화에 수 밀리 초가 걸릴 수 있기 때문에 이것은 바람직하지 않습니다 (내 마이크로의 작은 RAM 용량에 의해 제한됨). 가능한 빨리 몇 메가 바이트를 작성해야하므로 성능이 약 500kB / s에서 100kB / s 미만으로 줄어 듭니다.
SD 카드가 기술적으로 SPI를 완전히 준수하지는 않지만이 문제를 어떻게 해결할 수 있습니까?