Aitendo Graphic LCD (M018C7735SPI)
https://mbed.org/users/smultron1977/code/ST7735_TFT/ で Aitendo の M018C7735SPI (http://www.aitendo.com/product/3858)を動作させてみるテスト。 Hirofumi Inomata さん(http://mbed.org/users/digiponta/)の試した内容が Web ページにあった筈なのですが、見えなくなっていたために自前で調査しなおしてます。
https://mbed.org/users/smultron1977/code/SPI18TFT/ のデモプログラムでは大体期待通りに表示されるが、一部怪しい箇所があるので調整してみた。全部を確認してはいないけど、とりあえず気の付いた箇所のメモ。環境依存な部分があったりするのでコードの公開は保留。
表示位置の調整
- window メソッドでのオフセットをx=2,y=1からそれぞれ0にする。コード中では固定値として埋め込まれているが、これは製品固有の調整が必要な部分だろう。
色ずれ
- RGB565 ではなく、BGR565 (unsigned short) で指定しなければならない。
- spi の 8 bit モードで色指定している箇所(hline,vline,fillrect,Bitmap)のバイトオーダーを逆にする。
short int を16bit モードで書いている箇所もあって謎。 サンプルプログラムに書いてある方法でBitmapデータを作ると上下左右が逆になる。 テストデータはChanさんのRGB565変換プログラムの出力を適当なPerlスクリプトで BGR565 にした上で更に unsigned char 配列のコードに変換したが、BGR565 のまま unsigned short の配列のほうがわかりやすかったと思う。
その他
- pixel メソッドからの window メソッド呼び出し第3,4引数を1(width,height)にする。
- コントローラは ST7735R (R付であることに注意)
- 定格3Vのところ、mbedの3.3Vで動かしている。
- 回路図によると VCC と LED-A は別になっているが、つながっている模様。
FRDM-KL25Z でも動かしてみる
- spi の 16bit モードは使えないので 8bit のみを使うようにライブラリを適当に修正。
- 使用ピンはこんな感じ。 ST7735_TFT TFT(PTD2, PTD3, PTD1, PTA13, PTD5, PTD0, "TFT");
- TFT.claim(stdout); printf() によるテキスト表示で末尾から何文字か表示されない現象が起きた。 どうやら、これ(http://mbed.org/forum/bugs-suggestions/topic/4310/ )と同じだ。 fprintf の操作はバッファリングされて割り込みによって非同期に動いている。つまり、OS 環境下の普通のバッファリングIOと同じで テキスト末尾に '\n' を入れるか、fflush(stdout) で回避できる。
参照
Please log in to post comments.