16ビットSPIを介してFPGAに接続されているマイクロコントローラー(NXP LPC1343)があるアプリケーションがあります。同じSPIポート(MISO / MOSI)を使用しているが、CS / SSピンが異なるSDカードもあります(どちらもSPI仕様に従ってアクティブLOWです)。FAT32を使用して、FPGAからSDカードのファイルにデータを書き込む必要があります。これがマイクロコントローラーの仕事です。マイクロコントローラーはFatFSを実行しています。これは、自分で確実に動作するようになっています。
マイクロコントローラーには少量のRAMしかないため、一度にバッファーできるのは少量のデータだけです。したがって、マイクロはFPGAからバッファーを読み取り、SPIモードを8ビットに変更してから、そのデータをFATFSに書き込む必要があります。SDカードをSPIモードに構成するには、SPIバスが400 kHzで動作しているときにコマンドを送信する必要があり、ある程度の待機が発生することを思い出してください。したがって、初期化を1回だけ実行したいと思います。
ただし、SDカードでCSをHighに保持しながらFPGAでトランザクションを実行すると、SDカードが奇妙な状態になり、初期化をやり直す必要があるようです。もちろん、これは望ましくありません。4kB程度のデータを書き込むために、初期化には数ミリ秒かかる可能性があるためです(これも、私のマイクロの小さなRAM機能によって制限されます)。数メガバイトをできるだけ早く書き込む必要があるため、これによりパフォーマンスが約500 kB / sから100 kB / s未満に低下します。
SDカードは技術的に完全にSPIに準拠していないことは承知していますが、この問題を解決するにはどうすればよいですか?