Previous: 2.4.7.2. 表示位置の指定 |
Up: 2.4.7. プログラムによる処理 |
Next: 3. タイマ |
あとはSDカードからデータを読み出して、ST7735に送信するだけです。
サンプルプログラムでは1ピクセル分毎にデータを処理することにしましたので、(128×128)回読み出しと送信処理を繰り返しています。BMPファイルから読み出すデータはRGBで3バイトですが、ST7735_Write_RGB関数内で2バイトに変換されています。
BMPファイルのデータは各色8ビットでおよそ1677万色のデータになっています。一方、ZY-FGD1442701V1は赤5ビット、緑6ビット、青5ビットの65536色が指定可能な範囲です。そのためBMPファイルの各ピクセルのデータを、ST7735に送信する前に、右シフトして桁数を減らしています。
for (i=0;i<128*128;i++) ? { ??? fsresult = f_read(&fhandle, &data_buffer, sizeof data_buffer, &data_read); ??? if (fsresult != FR_OK) ????? { ??????? cprintf("File read failed.\r\n"); ??????? while(1); ????? } ??? ST7735_Write_RGB(data_buffer[2]>>3,data_buffer[1]>>2,data_buffer[0]>>3); ? } |
サンプルプログラムでは、1秒毎に表示する画像を切り替えています。画像の切り替えにちょっともたつきがあるのが玉にキズですね。SDカードからの読み込みの単位を大きくしてバッファしたり(19.9.3参照)、最適化のレベルを挙げたりすると、表示速度を上げられるはずです。本格的に利用する際には、FSMC(21.5参照)を使用してDMA転送をすると、CPUの負荷を下げられるはずです。
サンプルプログラムで表示させている画像は、STM32のイメージイラスト(写真 6?43)、筆者のお気に入りのラジコン(写真 6?44)、フラットケーブル(写真 6?45)、筆者の職場のロゴです(写真 6?46)。
写真 6?43 表示結果(STM32.bmp)
***P5141434***
写真 6?44 表示結果(graphite.bmp)
***P5141437***
写真 6?45 表示結果(flat.bmp)
***P5141439***
写真 6?46 表示結果(ilaw.bmp)
***P5141440***
ブックガイド 15 音声処理と映像処理
北山洋幸;『WAVプログラミングC言語で学ぶ音響処理』,カットシステム,2008年7月. WAVファイルの構造と各種の処理方法がわかりやすく解説されています。 昌達慶仁;『詳解 画像処理プログラミング』,ソフトバンククリエイティブ,2008年3月. BMPファイルの構造と各種の処理方法がわかりやすく解説されています。 |
Previous: 2.4.7.2. 表示位置の指定 |
Up: 2.4.7. プログラムによる処理 |
Next: 3. タイマ |