パラレルのTFTをOrangePiのコンソールとして使う


こちら
で、パラレル接続のTFTモジュールを RaspberryPi(Raspbian)のコンソールとして使う方法を紹介しました。
そこで、今回はOrangePi(Armbian)のコンソールとして使う方法を紹介します。






写真の様に、これらは完全にArduino UNOのシールド用のTFTです。
見た目はそっくりですが、大きな違いがいくつか有ります。

・コントローラーがILI9341とILI9342
これはこちらのツールを使って調べま した。

・駆動電圧が5Vと3.3V
これはレギュレータが実装されているかどうかで判断できます。
レギュレータが実装されていれば5V駆動、実装されていなければ3.3V駆動です。

OrangePiとTFTの結線は、以下の様になります。
TFT Opi(Pin#)
LCD_RST Pin#7
LCD_CS Pin#3
LCD_RS Pin#5
LCD_WR Pin#26(*1)
LCD_RD Pin#28(*1)
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(*2)
3.3V 3.3V(*3)
GND GND

(※)全てのピンは変更できますが、変更した場合、モジュールロード時に指定するgpiosパラメータが変わります。
(*1)組み合わせによって動かない組み合わせが有ります。何度も確認しましたが、原因不明です。
  WR=Pin#24 RD=Pin#28 → 動く
  WR=Pin#26 RD=Pin#28 → 動く
  WR=Pin#24 RD=Pin#26 → 動かない(原因不明)
(*2)5V駆動モデルの時に使います。
(*3)3.3V駆動モデルの時に使います。


ILI9341

ILI9341の初期化コードはこちらで紹介している Raspberryの初期化コードと同じです。
GPIOの番号をRaspberryとは変える必要が有ります。
$ sudo modprobe flexfb width=320 height=240 buswidth=8 init=\
-1,0x01,-2,5,\
-1,0x28,\
-1,0x36,0x38,\
-1,0x3A,0x55,\
-1,0x11,-2,100,\
-1,0x29,-2,20,\
-3

$ sudo modprobe fbtft_device name=flexpfb \
gpios=reset:6,dc:11,wr:21,cs:12,db00:7,db01:8,db02:9,db03:10,db04:20,db05:200,db06:201,db07:198


$ fbset -i -fb /dev/fb2

mode "320x240"
    geometry 320 240 320 240 16
    timings 0 0 0 0 0 0 0
    nonstd 1
    rgba 5/11,6/5,5/0,0/0
endmode

Frame buffer device information:
    Name        : flexfb
    Address     : 0
    Size        : 153600
    Type        : PACKED PIXELS
    Visual      : TRUECOLOR
    XPanStep    : 0
    YPanStep    : 0
    YWrapStep   : 0
    LineLength  : 640
    Accelerator : No

$ con2fbmap 1 2



横書きを180度回転するには以下のパラメータです。
rotationパラメータを指定しても回転しません。
$ sudo modprobe flexfb width=320 height=240 buswidth=8 init=\
-1,0x01,-2,5,\
-1,0x28,\
-1,0x36,0xF8,\
-1,0x3A,0x55,\
-1,0x11,-2,100,\
-1,0x29,-2,20,\
-3

$ sudo modprobe fbtft_device name=flexpfb \
gpios=reset:6,dc:11,wr:21,cs:12,db00:7,db01:8,db02:9,db03:10,db04:20,db05:200,db06:201,db07:198


$ fbset -i -fb /dev/fb2

mode "320x240"
    geometry 320 240 320 240 16
    timings 0 0 0 0 0 0 0
    nonstd 1
    rgba 5/11,6/5,5/0,0/0
endmode

Frame buffer device information:
    Name        : flexfb
    Address     : 0
    Size        : 153600
    Type        : PACKED PIXELS
    Visual      : TRUECOLOR
    XPanStep    : 0
    YPanStep    : 0
    YWrapStep   : 0
    LineLength  : 640
    Accelerator : No

$ con2fbmap 1 2

上の写真と比べるとTFTの向きが180度回転します。



ILI9342

ILI9342の初期化コードもこちらで紹介している Raspberryの初期化コードと同じです。
$ sudo modprobe flexfb width=320 height=240 buswidth=8 init=\
-1,0x01,-2,5,\
-1,0x28,\
-1,0x36,0x08,\
-1,0x3A,0x55,\
-1,0x21,\
-1,0x11,-2,100,\
-1,0x29,-2,20,\
-3

$ sudo modprobe fbtft_device name=flexpfb \
gpios=reset:6,dc:11,wr:21,cs:12,db00:7,db01:8,db02:9,db03:10,db04:20,db05:200,db06:201,db07:198


$ fbset -i -fb /dev/fb2

mode "320x240"
    geometry 320 240 320 240 16
    timings 0 0 0 0 0 0 0
    nonstd 1
    rgba 5/11,6/5,5/0,0/0
endmode

Frame buffer device information:
    Name        : flexfb
    Address     : 0
    Size        : 153600
    Type        : PACKED PIXELS
    Visual      : TRUECOLOR
    XPanStep    : 0
    YPanStep    : 0
    YWrapStep   : 0
    LineLength  : 640
    Accelerator : No

$ con2fbmap 1 2



横書きを180度回転するには以下のパラメータです。
$ sudo modprobe flexfb width=320 height=240 buswidth=8 init=\
-1,0x01,-2,5,\
-1,0x28,\
-1,0x36,0xC8,\
-1,0x3A,0x55,\
-1,0x21,\
-1,0x11,-2,100,\
-1,0x29,-2,20,\
-3

$ sudo modprobe fbtft_device name=flexpfb \
gpios=reset:6,dc:11,wr:21,cs:12,db00:7,db01:8,db02:9,db03:10,db04:20,db05:200,db06:201,db07:198


$ fbset -i -fb /dev/fb2

mode "320x240"
    geometry 320 240 320 240 16
    timings 0 0 0 0 0 0 0
    nonstd 1
    rgba 5/11,6/5,5/0,0/0
endmode

Frame buffer device information:
    Name        : flexfb
    Address     : 0
    Size        : 153600
    Type        : PACKED PIXELS
    Visual      : TRUECOLOR
    XPanStep    : 0
    YPanStep    : 0
    YWrapStep   : 0
    LineLength  : 640
    Accelerator : No

$ con2fbmap 1 2




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

ILI9341

$ sudo modprobe flexfb width=320 height=240 buswidth=8 init=\
-1,0x01,-2,5,\
-1,0x28,\
-1,0x36,0x58,\
-1,0x3A,0x55,\
-1,0x11,-2,100,\
-1,0x29,-2,20,\
-3

$ sudo modprobe fbtft_device name=flexpfb rotate=90 \
gpios=reset:6,dc:11,wr:21,cs:12,db00:7,db01:8,db02:9,db03:10,db04:20,db05:200,db06:201,db07:198

$ fbset -i -fb /dev/fb2

mode "240x320"
    geometry 240 320 240 320 16
    timings 0 0 0 0 0 0 0
    nonstd 1
    rgba 5/11,6/5,5/0,0/0
endmode

Frame buffer device information:
    Name        : flexfb
    Address     : 0
    Size        : 153600
    Type        : PACKED PIXELS
    Visual      : TRUECOLOR
    XPanStep    : 0
    YPanStep    : 0
    YWrapStep   : 0
    LineLength  : 480
    Accelerator : No

$ con2fbmap 1 2



縦書きを180度回転するには以下のパラメータです。
rotationパラメータを指定しても回転しません。
$ sudo modprobe flexfb width=320 height=240 buswidth=8 init=\
-1,0x01,-2,5,\
-1,0x28,\
-1,0x36,0x98,\
-1,0x3A,0x55,\
-1,0x11,-2,100,\
-1,0x29,-2,20,\
-3

$ sudo modprobe fbtft_device name=flexpfb rotate=90 \
gpios=reset:6,dc:11,wr:21,cs:12,db00:7,db01:8,db02:9,db03:10,db04:20,db05:200,db06:201,db07:198

$ fbset -i -fb /dev/fb2

mode "240x320"
    geometry 240 320 240 320 16
    timings 0 0 0 0 0 0 0
    nonstd 1
    rgba 5/11,6/5,5/0,0/0
endmode

Frame buffer device information:
    Name        : flexfb
    Address     : 0
    Size        : 153600
    Type        : PACKED PIXELS
    Visual      : TRUECOLOR
    XPanStep    : 0
    YPanStep    : 0
    YWrapStep   : 0
    LineLength  : 480
    Accelerator : No

$ con2fbmap 1 2

上の写真と比べるとTFTの向きが180度回転します。



ILI9342

$ sudo modprobe flexfb width=320 height=240 buswidth=8 init=\
-1,0x01,-2,5,\
-1,0x28,\
-1,0x36,0x68,\
-1,0x3A,0x55,\
-1,0x21,\
-1,0x11,-2,100,\
-1,0x29,-2,20,\
-3

$ sudo modprobe fbtft_device name=flexpfb rotate=90 \
gpios=reset:6,dc:11,wr:21,cs:12,db00:7,db01:8,db02:9,db03:10,db04:20,db05:200,db06:201,db07:198

$ fbset -i -fb /dev/fb2

mode "240x320"
    geometry 240 320 240 320 16
    timings 0 0 0 0 0 0 0
    nonstd 1
    rgba 5/11,6/5,5/0,0/0
endmode

Frame buffer device information:
    Name        : flexfb
    Address     : 0
    Size        : 153600
    Type        : PACKED PIXELS
    Visual      : TRUECOLOR
    XPanStep    : 0
    YPanStep    : 0
    YWrapStep   : 0
    LineLength  : 480
    Accelerator : No

$ con2fbmap 1 2



縦書きを180度回転するには以下のパラメータです。
$ sudo modprobe flexfb width=320 height=240 buswidth=8 init=\
-1,0x01,-2,5,\
-1,0x28,\
-1,0x36,0xA8,\
-1,0x3A,0x55,\
-1,0x21,\
-1,0x11,-2,100,\
-1,0x29,-2,20,\
-3

$ sudo modprobe fbtft_device name=flexpfb rotate=90 \
gpios=reset:6,dc:11,wr:21,cs:12,db00:7,db01:8,db02:9,db03:10,db04:20,db05:200,db06:201,db07:198

$ fbset -i -fb /dev/fb2

mode "240x320"
    geometry 240 320 240 320 16
    timings 0 0 0 0 0 0 0
    nonstd 1
    rgba 5/11,6/5,5/0,0/0
endmode

Frame buffer device information:
    Name        : flexfb
    Address     : 0
    Size        : 153600
    Type        : PACKED PIXELS
    Visual      : TRUECOLOR
    XPanStep    : 0
    YPanStep    : 0
    YWrapStep   : 0
    LineLength  : 480
    Accelerator : No

$ con2fbmap 1 2

こちらで FrameBufferの設定を公開しています。

次回は非常に高機能なFrameBufferグラフィックライブラリを紹介します。