LoginSignup
10
10

More than 5 years have passed since last update.

メモリの少ないマイコンでもフレームバッファを使いたい

Last updated at Posted at 2017-11-15

STM32でデジカメを作成した時の小技

背景と問題点

  • STM32F4 DiscoveryボードにはRAMが192KBしかない。
  • 320x240x16bitのフレームバッファ(153.6 KB)として使用するのは無理
  • JPEGエンコードなどの重い処理を、カメラ撮像と同時にやるのは無理 (Hブランキングを増やせば、ライン単位ならいけるかも?)
  • そのため、1フレームの画をマイコン外のどこかに保持する必要がある。

解決策

  • 電子工作で使用するような液晶ディスプレイは通常、GRAMとコントローラが一緒になったモジュールになっている
  • LCDモジュールのGRAMをフレームバッファとして使う。

普段はこんな感じで、カメラ(DCMI)->LCD(FSMC)に画データを垂れ流す (ライブビューを想定)
image.png

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

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

10
10
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
10