ILI9340の2.2インチSPI TFTモジュールを使う


ILI9340チップを使った2.2インチSPI-I/FのTFTモジュールを入手しました。
このモジュールはaitendoで売られている[M-TM022-SPI] と同じものと思 いますが、私はAliExpressから購入しました。




このモジュールをフレームバッファ経由で、Raspberryのコンソールとして使う事例は沢山紹介されていますが、
コンソールとして使うには小さすぎるので、今回はSPI通信を使った単純なグラフィック表示装置として使ってみました。

このモジュールとのSPI通信については以下のページを大いに参考にさせて頂きました。
作者の方にはこの場を借りてお礼申し上げます。
http://imagewriteriij.blogspot.jp/2014/01/raspberry-pi-9-lcd-1.html

いろいろ探しましたが、上記のページ以外で、このモジュールとSPI通信を行っているページは発見できませんでした。
非常に貴重なページだと思います。
今回紹介するプログラムでは、上記のページで紹介されているコードを(ほぼ)そのまま利用させて頂きました。

上記のページでbcm2835ライブラリを使ったSPI通信が紹介されています。
RaspberryでSPI通信を行う場合、以下の何れかを利用することができます。
@bcm2835ライブラリ
AWiringPiSPIライブラリ
BWiringShiftライブラリ(ソフトウェアSPI)

いずれの方法でも動くようになりました。

このモジュールは240x320の解像度で、座標軸は以下の様に設定しています。
座標軸の設定はTFTの初期化パラメータで変更することができます。

 
Raspberryとの結線は上記のページで紹介されているままです。
ILI9340 TFT Rpi(Pin#)
VCC 3.3V
GND GND
CS CS0(24)
RESET GPIO3(05)(※2)
DC/RS GPIO2(03)(※2)
SDO/MOSI MOSI(19)
SCK SCLK(23)
LED 3.3V(※1)
SDI/MISO N/C

(※1)バックライトが明るすぎるときは100Ω程度の抵抗を挟んで下さい
(※2)プログラムの以下の箇所を変更することで、好きなピンに変更可能です。
#define D_C  2  // GPIO2=Pin#3
#define RES  3  // GPIO3=Pin#5

最初にraspi-configを使ってSPIを有効にします。
BCM2835ライブラリを使う場合、インストールは以下の手順です。
ソースはこ ちらで 公開して います。
wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.56.tar.gz
tar zxvf bcm2835-1.56.tar.gz
cd bcm2835-1.56
./configure
make
sudo make check
sudo make install

git clone https://github.com/nopnop2002/ili9340spi_rpi
cd ili9340spi_rpi
cc -o demo demo.c fontx.c ili9340.c -lbcm2835 -lm -DBCM
sudo ./demo

かなり表示が遅くなりますが、WiringPi/WiringOpライブラリでも動きます。
WiringPi/WiringOpライブラリを使う場合、インストールは以下の手順です。
git clone https://github.com/nopnop2002/ili9340spi_rpi
cd ili9340spi_rpi
cc -o demo demo.c fontx.c ili9340.c -lwiringPi -lm -DWPI
sudo ./demo

簡単なグラフィック関数が含まれています。








フォントファイルはFONTX形式のファイルを使っています。








複数のフォントを同時に使う事ができます。




続く...