OV2640の出力するJPEGデータについては、これまで始まりの部分にばかり着目していましたが、終わりの部分にも目を向けてみます。JPEGデータ出力の終了はVSYNC信号の変化で検出できますので、これを検出してGPIOからのDMA読み出しを止めてやることができます。実際に受信してみると、こうなりました。
左側のメモリ表示ウィンドウが、受信データ内容を示します。JPEGデータのDMA受信に先立って、あらかじめメモリは0xa5でフィルしてあります。EOIである0xFFD9を受信した後に、0x00を173(0xad)バイト受信していることがわかります。
右側のウインドウはVSYNCがかかる度ごとに、DMA受信したバイト数とEOIまでの有効データバイト数を示しています。このように、EOIの後ろに不要な0x00が何バイトが続いているようです。DMA受信バイト数がいつもキリのいい数字になっているので、おそらく出力処理の際にある程度バッファリングしている都合上、このようなデータが出力されるのでしょう。余分なデータは、そのままJPEGファイルに落としてしまっても害はありませんが、EOIの後のデータは捨ててしまうことにします。
左側のメモリ表示ウィンドウが、受信データ内容を示します。JPEGデータのDMA受信に先立って、あらかじめメモリは0xa5でフィルしてあります。EOIである0xFFD9を受信した後に、0x00を173(0xad)バイト受信していることがわかります。
右側のウインドウはVSYNCがかかる度ごとに、DMA受信したバイト数とEOIまでの有効データバイト数を示しています。このように、EOIの後ろに不要な0x00が何バイトが続いているようです。DMA受信バイト数がいつもキリのいい数字になっているので、おそらく出力処理の際にある程度バッファリングしている都合上、このようなデータが出力されるのでしょう。余分なデータは、そのままJPEGファイルに落としてしまっても害はありませんが、EOIの後のデータは捨ててしまうことにします。