SPI モード経由でマイクロコントローラに接続された SD カード (または SDHC カード) があります。Chan の FATライブラリを使用しています。8192 バイトのバッファーからのデータを書き込みます (RAM が不足しているため、バッファーを大きくすることはできません)。この書き込みは定期的に行われます。通常、バッファが再びいっぱいになる前に、書き込みの準備が整います。しかし、ときどき (バッファのフィル速度にもよりますが) 問題が発生し、新しいバッファが書き込まれる前に書き込みの準備ができておらず、データが失われることがあります。
ちなみにセクターサイズも8192バイトに設定されていますが、他は影響ないようです。
書き込みはスコープで監視でき、書き込みに時間がかかる場合があることがわかります。たとえば、通常の 4 倍の長さです。
ここで何が起こっているのでしょうか?どうすればこれを防ぐことができますか? これは、読み取り、変更、書き込みのシーケンスと関係がありますか? 外部 RAM バッファは必要ですか? または、パフォーマンスを向上させるためのより良い方法はありますか?