LCDモジュール比較 (Teensy 4.0 SPI接続)

2021年1月3日日曜日

LCD Teensy 4.0

t f B! P L

手持ちのSPI接続のLCDが増えてきたので、接続方法と表示の比較をしてみました。テスト環境としてはTeensy 4.0ボード上でAdafruitのLCDライブラリに付属のgraphicstestプロジェクトを使用します。

比較するLCDのリスト

以下に今回比較するSPI接続LCDモジュールのリストを記載します。
A, B, C, EのモジュールはベースのPCBに実装された状態のもので、Dのモジュールに関してはPCB実装タイプが見つからなったのでフレキ配線そのままのモジュール単体の状態です。
液晶タイプは一般的にIPSタイプのほうがTNタイプに比べて視野角が広く、見る角度による色相の変化も少ないです。解像度はもちろんですが、Dot Sizeに示される画素のきめ細かさも見た感じを大きく左右する要素です。

A
ST7735
1.8" 128x160
B
ST7735
0.96" 80x160
C
ST7789
1.3" 240x240
D
ST7789
2.0" 240x320
E
ILI9341
2.2" 240x320
Size (inch)1.8"0.96"1.3"2.0"2.2"
TypeTNIPSIPSIPSTN
Driver ICST7735SST7735SST7789VWST7789VWILI9341V
Resolution (Pixel)128 x 16080 x 160240 x 240240 x 320240 x 320
Active Area (mm)28.03 x 35.0410.80 x 21.7023.40 x 23.4030.60 x 40.8033.84 x 45.12
Dot Size (mm)0.219 x 0.2190.1350 x 0.13560.0975 x 0.09750.1275 x 0.12750.141 x 0.141
LCD Size (mm)34.70 x 46.7014.04 x 27.9526.16 x 29.2234.60 x 47.8040.10 x 55.20
PCB Size (mm)38.30 x 62.4824.04 x 30.0027.78 x 39.2240.10 x 67.20
Pins1187129

今回比較するLCDモジュール(左からA ~ E)

LCD接続のためのSPI信号

SPIはシリアルクロック、チップセレクトに加えて、Input/Outputのデータ線2本を使用するので通常4線シリアルと呼ばれますが、LCD接続の場合データはデバイスからLCDモジュール側へのライトアクセスのみの一方向で使用するためデータ線は1本で運用されることが多いです。この3線(シリアルクロック、チップセレクト、データ)に加えて補助の制御線としてDC、リセット信号を使用します。整理すると以下のようになります。

FunctionDescription
CSSPI Chip Select
SCKSPI Clock
MOSISPI Data (Master Out / Slave In)
DCData/Command
RSTReset

基本的にはSPIに直接関連するCS, SCK, MOSI信号に関してはSPI専用のIO端子を割り当て、DC, RST信号に関してはGPIOによる制御を用います。
電源に関してはLCDモジュールによっては、LDOを搭載しており5V供給に対応しているものもあります。ただしその場合でもIOインタフェースに用いる電圧は3.3Vになります。この他、LCDのバックライトの制御端子を備えているLCDモジュールが多いです。

各LCDモジュールの比較

[A] ST7735 1.8" 128x160

まずはST7735ドライバ使用の128x160pixelのモジュールの紹介です。SPI接続のmicroSDカードスロットが搭載されたタイプが入手可能でした。
入手先: AliExpress, Amazon
ST7735 1.8" 128x160

他にもおそらく同じLCDモジュールを搭載したものと思われるフルサイズのSDカードスロットを搭載したタイプも見つかります。電源は5V供給にも対応しており、3.3Vにて使用する場合はPCB上のJ1をブリッジして使用します。バックライトLED制御のための信号線はありません。
Teensy 4.0との接続は以下の通りです。

ST7735
1.8" 128x160
FunctionTeensy 4.0 Pin
1VCC5V/3.3V
2GNDGND
3GNDGND
4NC
5NC
6NC
7CLKSCK13
8SDAMOSI11
9RSDC8
10RSTRST9
11CSCS10

TNタイプであるため視野角をチェックしてみると、縦長でフレキケーブルが下側になるように配置した場合に垂直(上下)方向は0度(正面)の状態で水平(左右)の視野角を振った場合にはあまり変化は見られず、45度程度でも充分に視認性があります。水平方向は0度の状態で垂直方向のみ角度を付けた場合ですが、まず6時方向から見た場合は、15度程度傾けただけで全体的に輝度が上がってくるのがわかります。同時にバックライトが浮いてくるのも確認できますが、全体のバランスは崩れることなく一番良好な画質に見えますのでこの方向が意図された適正角のようです。このまま45度程度まで傾けてもほぼ同様な感じです。一方で12時方向から見た場合15度程度傾けただけで低輝度部分が極端に見えにくくなります。一方でバックライトは浮いてくるのでコントラスト及びカラーバランスが大きく崩れた状態になり、輝度が高い部分以外は非常に見にくくなります。

ST7735 1.8" 128x160 表示例

[B] ST7735 0.96" 80x160

ST7735ドライバ使用の80x160pixelのモジュールです。フレキケーブル部分の形状は異なりますが、おそらくSipeed Longan Nanoボードに使用されているものと同じタイプと思われます。
入手先: AliExpress, Amazon
ST7735 0.96" 80x160

Teensy 4.0との接続は以下の通りです。

ST7735S
0.96" 80x160
FunctionTeensy 4.0 Pin
1GNDGND
2VCC3.3V
3SCLSCK13
4SDAMOSI11
5RESRST9
6DCDC8
7CSCS10
8BLKBL

今回紹介するLCDモジュールの中では一番解像度は低いですが、Dot Sizeの細かさとIPSタイプならではの視野角の広さもあり非常にきれいな表示が得られます。バックライトの浮き上がりも抑えられているので黒が美しい印象です。

ST7735 0.96" 80x160 表示例

[C] ST7789 1.3" 240x240

ST7789ドライバ使用の240x240pixelのモジュールです。
入手先: AliExpressAmazon
ST7789 1.3" 240x240

Teensy 4.0との接続は以下の通りです。このLCDモジュールにはSPIのCS端子がありませんので他のSPIスレーブと共用はできませんが、その分ピン割り当てを少なくすることができます。またCSがない影響で非アクセス時にSCKがHになるSPIのモードを2または3にして使用する必要がありました。SPIモードについての詳細はここに詳しく記載があります。

ST7789
1.3" 240x240
FunctionTeensy 4.0 Pin
1GNDGND
2VCC3.3V
3SCKSCK13
4SDAMOSI11
5RESRST9
6DCDC8
7BLKBL

今回比較するLCDモジュールの中では最もDot Sizeが小さく非常に高精細な画質が得られます。色相、コントラストも申し分ありません。16ptの文字は小さすぎてしまうほどですので同程度の解像度のLCDから移植する際にはレイアウトやフォントに工夫が必要になるかもしれません。

ST7789 1.3" 240x240 表示例

[D] ST7789 2.0" 240x320

ST7789ドライバ使用の240x320pixelのモジュールです。PCBに実装されているタイプが見つからなかったため、0.8mmピッチのフレキ配線タイプを入手しました。
入手先: AliExpress
ST7789 2.0" 240x320

0.8mmピッチのフレキ配線の引き出し方ですが、今回は0.8mmピッチのQFPパッケージ変換基板を利用して2.54mmピッチに変換してみました。
QFP変換基板入手先: AliExpress

フレキ配線との接続

Teensy 4.0との接続は以下の通りです。

ST7789
2.0" 240x320
FunctionTeensy 4.0 Pin
1GNDGND
2LEDKLEDK
3LEDALEDA
4VCI3.3V
5GNDGND
6GNDGND
7WR/A0DC8
8CSCS10
9RS/SCLSCK13
10SDAMOSI11
11RESETRST9
12GNDGND
このLCDモジュールもIPSタイプならではの視野角の広い表示が得られます。[B] [C]のモジュールと甲乙つけがたいきれいな表示です。Dot Sizeも小さすぎず適度で使いやすそうです。

ST7789 2.0" 240x320 表示例

[E] ILI9341 2.2" 240x320

最後はILI9341ドライバ使用の240x320pixelのモジュールです。
入手先: AliExpressAmazon
ILI9341 2.2" 240x320

Teensy 4.0との接続は以下の通りです。電源は5V供給にも対応しており、3.3Vにて使用する場合はPCB上のJ1をブリッジして使用します。またRESET端子については、正常動作させるには3.3Vに常時接続しておく必要がありました。

ILI9341
2.2" 240x320
FunctionTeensy 4.0 Pin
1VCC5V/3.3V
2GNDGND
3CSCS10
4RESETRS?3.3V
5DC/RSDC8
6SDI/MOSIMOSI11
7SCKSCK13
8LEDBL
9SDO/MISO

TNタイプであるため視野角をチェックしてみると、同じTNタイプの[A] ST7735 1.8" 128x160と比べてかなり変化が少ないように感じます。水平(左右)の視野角を振った場合にはあまり変化は見らません。垂直方向は6時方向に15度~20度程度傾けたところで最良のバランスが得られます。12時方向から見た場合はやはり15度~20度程度傾けるとコントラストおよび色相も劣化しますが大きく視認性を損なうほどではありませんのでTNタイプとしては健闘しているほうと言えると思います。

ILI9341 2.2" 240x320 表示例

graphicstest動画

動画でも撮影しておきました。露光の関係で輝度の高い部分での彩度が低くなっているように見えますが、実際はもう少しきれいな色合いが出ています。

graphicstestプロジェクト

テスト用にAdafruitのLCDライブラリに付属のgraphicstestプロジェクトをカスタマイズしたものを使用しています。Teensy4.0ボードに対してVisual Studio Code + PlatformIOエクステンション環境でビルドして使用しました。

[A] ~ [D]のドライバICとしてST7735, ST7789を使用しているモジュールのプロジェクトは以下を参照ください。

[E]のドライバICとしてILI9341を使用しているモジュールのプロジェクトは以下を参照ください。

自己紹介

自分の写真
電子工作&プログラミング、オーディオ・音楽

注目の投稿

Raspberry Pi Pico Wで電波時計を合わせる (JJY標準電波エミュレータ)

Raspberry Pi Pico Wのアプリケーションとして 最少の周辺部品で電波時計むけJJYエミュレータ(時刻合わせ用)を製作しました。 ※2023年6月6日: ソースコード修正の内容を反映させました。 時刻合わせ風景 概要 電波時計は電波が届くところで使...

QooQ