ILI9325をRaspBerryPiのコンソールとして使う


こちらで、fbtft+flexfbを使って、SPI接続の TFTモジュールをコンソールとして使う方法を紹介しました。
そこで、今回はfbtft+flexpfbを使って、パラレル接続のTFTモジュールをコンソールとして使う方法を紹介します。
flexfb と flexpfb は紛らわしいですが、以下の違いが有ります。
flexfb  汎用のSPI用モジュール
flexpfb 汎用のパラレル用モジュール

写真を見て分かるように完全にArduino UNOのシールド用のTFTです。
5V駆動ですが、3.3VのGPIO操作で動きます。




RaspberryPi(Raspbian)とOrangePi(Armbian)では少し手順が違います。
今回はRaspberryPi(Raspbian)の手順を紹介します。

まずはお試しで、コンソールとして使えるかどうか試してみます。
RaspberryとTFTの結線は、以下の様になります。
ILI9325 TFT Rpi(Pin#)
LCD_RST Pin#7
LCD_CS Pin#3
LCD_RS Pin#5
LCD_WR Pin#26
LCD_RD Pin#28
LCD_D0 Pin#29
LCD_D1 Pin#31
LCD_D2 Pin#33
LCD_D3 Pin#35
LCD_D4 Pin#37
LCD_D5 Pin#32
LCD_D6 Pin#36
LCD_D7 Pin#38
5V 5V
3.3V N/C(*1)
GND GND

(※)全てのピンは変更できますが、変更した場合、モジュールロード時に指定するgpiosパラメータが変わります。
(*1)3.3Vではバックライトが点灯しません。

最初に、fbtft_deviceモジュールを読み込みます。
gpiosパラメータが重要です。
sudo modprobe fbtft_device name=flexpfb \
gpios=reset:4,dc:3,wr:7,cs:2,db00:5,db01:6,db02:13,db03:19,db04:26,db05:12,db06:16,db07:20

dmesgには以下のように表示されます。
[   74.283741] fbtft: module is from the staging directory, the quality is unknown, you have been warned.
[   74.293845] fbtft_device: module is from the staging directory, the quality is unknown, you have been warned.
[   74.302855] spidev spi0.0: spidev spi0.0 500kHz 8 bits mode=0x00
[   74.302903] spidev spi0.1: spidev spi0.1 500kHz 8 bits mode=0x00
[   74.302967] bcm2708_fb soc:fb: soc:fb id=-1 pdata? no
[   74.303326] fbtft_device: GPIOS used by 'flexpfb':
[   74.303350] fbtft_device: 'reset' = GPIO4
[   74.303364] fbtft_device: 'dc' = GPIO3
[   74.303379] fbtft_device: 'wr' = GPIO7
[   74.303390] fbtft_device: 'cs' = GPIO2
[   74.303401] fbtft_device: 'db00' = GPIO5
[   74.303410] fbtft_device: 'db01' = GPIO6
[   74.303420] fbtft_device: 'db02' = GPIO13
[   74.303431] fbtft_device: 'db03' = GPIO19
[   74.303441] fbtft_device: 'db04' = GPIO26
[   74.303452] fbtft_device: 'db05' = GPIO12
[   74.303461] fbtft_device: 'db06' = GPIO16
[   74.303472] fbtft_device: 'db07' = GPIO20
[   74.303526] bcm2708_fb soc:fb: soc:fb id=-1 pdata? no
[   74.303579] platform flexpfb.0: flexpfb id=0 pdata? yes

次に、flexfbモジュールを読み込みます。
sudo modprobe flexfb width=240 height=320 regwidth=16 setaddrwin=1 init=\
-1,0x00E3,0x3008,-1,0x00E7,0x0012,-1,0x00EF,0x1231,\
-1,0x0001,0x0100,-1,0x0002,0x0700,-1,0x0003,0x1030,\
-1,0x0004,0x0000,-1,0x0008,0x0207,-1,0x0009,0x0000,\
-1,0x000A,0x0000,-1,0x000C,0x0000,-1,0x000D,0x0000,\
-1,0x000F,0x0000,-1,0x0010,0x0000,-1,0x0011,0x0007,\
-1,0x0012,0x0000,-1,0x0013,0x0000,-2,200,\
-1,0x0010,0x1690,-1,0x0011,0x0223,-2,50,\
-1,0x0012,0x000D,-2,50,-1,0x0013,0x1200,\
-1,0x0029,0x000A,-1,0x002B,0x000C,-2,50,\
-1,0x0020,0x0000,-1,0x0021,0x0000,-1,0x0030,0x0000,\
-1,0x0031,0x0506,-1,0x0032,0x0104,-1,0x0035,0x0207,\
-1,0x0036,0x000F,-1,0x0037,0x0306,-1,0x0038,0x0102,\
-1,0x0039,0x0707,-1,0x003C,0x0702,-1,0x003D,0x1604,\
-1,0x0050,0x0000,-1,0x0051,0x00EF,-1,0x0052,0x0000,\
-1,0x0053,0x013F,-1,0x0060,0xA700,-1,0x0061,0x0001,\
-1,0x006A,0x0000,-1,0x0080,0x0000,-1,0x0081,0x0000,\
-1,0x0082,0x0000,-1,0x0083,0x0000,-1,0x0084,0x0000,\
-1,0x0085,0x0000,-1,0x0090,0x0010,-1,0x0092,0x0600,\
-1,0x0007,0x0133,-3

initパラメータの構文はこち らを参考にしました。
最後に表示テストです。
con2fbmap 1 1

表示を横書きにするにはモジュールのパラメータを少し変更します。



sudo modprobe fbtft_device name=flexpfb rotate=90 \
gpios=reset:4,dc:3,wr:7,cs:2,db00:5,db01:6,db02:13,db03:19,db04:26,db05:12,db06:16,db07:20

initパラメータは03hのレジスターを変更し、アドレスの使い方を変更しています。
sudo modprobe  flexfb width=240 height=320 regwidth=16 setaddrwin=1 init=\
-1,0x00E3,0x3008,-1,0x00E7,0x0012,-1,0x00EF,0x1231,\
-1,0x0001,0x0100,-1,0x0002,0x0700,-1,0x0003,0x1018,\
-1,0x0004,0x0000,-1,0x0008,0x0207,-1,0x0009,0x0000,\
-1,0x000A,0x0000,-1,0x000C,0x0000,-1,0x000D,0x0000,\
-1,0x000F,0x0000,-1,0x0010,0x0000,-1,0x0011,0x0007,\
-1,0x0012,0x0000,-1,0x0013,0x0000,-2,200,\
-1,0x0010,0x1690,-1,0x0011,0x0223,-2,50,\
-1,0x0012,0x000D,-2,50,-1,0x0013,0x1200,\
-1,0x0029,0x000A,-1,0x002B,0x000C,-2,50,\
-1,0x0020,0x0000,-1,0x0021,0x0000,-1,0x0030,0x0000,\
-1,0x0031,0x0506,-1,0x0032,0x0104,-1,0x0035,0x0207,\
-1,0x0036,0x000F,-1,0x0037,0x0306,-1,0x0038,0x0102,\
-1,0x0039,0x0707,-1,0x003C,0x0702,-1,0x003D,0x1604,\
-1,0x0050,0x0000,-1,0x0051,0x00EF,-1,0x0052,0x0000,\
-1,0x0053,0x013F,-1,0x0060,0xA700,-1,0x0061,0x0001,\
-1,0x006A,0x0000,-1,0x0080,0x0000,-1,0x0081,0x0000,\
-1,0x0082,0x0000,-1,0x0083,0x0000,-1,0x0084,0x0000,\
-1,0x0085,0x0000,-1,0x0090,0x0010,-1,0x0092,0x0600,\
-1,0x0007,0x0133,-3

次回はOrangePi(Armbian)での手順を紹介しま す。