Bir FPGA 16-bit SPI ile bağlı bir mikrodenetleyici (NXP LPC1343 ) olduğu bir uygulama var . Aynı SPI bağlantı noktasını (MISO / MOSI) kullanan ancak farklı bir CS / SS pinine sahip bir SD kart vardır (her ikisi de SPI spesifikasyonuna göre aktif düşüktür). Yapmam gereken şeylerden biri, FAT32'yi kullanarak FPGA'dan SD Karttaki bir dosyaya veri yazmak ve bu mikrodenetleyicinin işi. Mikrodenetleyici, tek başına güvenilir bir şekilde çalıştığım FatFS'yi çalıştırıyor .
Mikrodenetleyici sadece az miktarda RAM içerdiğinden, aynı anda sadece az miktarda veri arabelleğe alınabilir. Bu nedenle, mikro FPGA'dan bir tampon okumak, SPI modunu 8 bit olarak değiştirmek ve daha sonra bu verileri FATFS'ye yazmak zorundadır. SD kartı SPI modu için yapılandırmak için, SPI veriyolu 400 kHz'de çalışırken bir komutun gönderilmesi gerektiğini ve belirli bir bekleme süresinin olması gerektiğini hatırlayın. Bu nedenle, başlatmayı yalnızca bir kez yapmak istiyorum.
Ancak, CS'yi SD kartta yüksek tutarken bile FPGA'da işlem yapmak, SD kartı garip bir duruma sokuyor gibi görünüyor, böylece yeniden başlatmadan geçmesi gerekiyor. Tabii ki bu arzu edilmez, çünkü başlatma sadece 4 kB veya daha fazla veri yazmak için birkaç milisaniye sürebilir (yine mikro bilgisayarımın küçük RAM kapasitesi ile sınırlıdır). Mümkün olduğunca çabuk birkaç megabayt yazmam gerektiğinden bu, performansı yaklaşık 500 kB / s'den 100 kB / s'den daha düşük bir seviyeye düşürür.
SD kartların teknik olarak tam olarak SPI uyumlu olmadığını biliyorum, ancak bu sorun nasıl çözülebilir?