STM32でデジカメを作成した時の小技
背景と問題点
- STM32F4 DiscoveryボードにはRAMが192KBしかない。
 - 320x240x16bitのフレームバッファ(153.6 KB)として使用するのは無理
 - JPEGエンコードなどの重い処理を、カメラ撮像と同時にやるのは無理 (Hブランキングを増やせば、ライン単位ならいけるかも?)
 - そのため、1フレームの画をマイコン外のどこかに保持する必要がある。
 
解決策
- 電子工作で使用するような液晶ディスプレイは通常、GRAMとコントローラが一緒になったモジュールになっている
 - LCDモジュールのGRAMをフレームバッファとして使う。
 
普段はこんな感じで、カメラ(DCMI)->LCD(FSMC)に画データを垂れ流す (ライブビューを想定)

いざ画像データを使用して処理するタイミングになったら、カメラ撮像を止める。LCDモジュール内のメモリを使って、重い処理もゆっくり実行可能。また、FSMCを使用しているので、通常のメモリアクセスと同様に扱うことが可能。 (シャッターボタンを押したときの静止画撮影を想定)

↑の図だと読み込みのピクセルフォーマットをRGB565と書いてしまっていますが、実際にはRGB888になります。たとえ書き込みがRGB565フォーマットでも、読み出すときはRGB888になるようです(仕様書にそのような記述は見当たらなかったのですが、実際にこのように動いていました)。
このパワポに、タイミングチャートなど、もう少し詳細を記載しています。