アリエクで売ってる半透過ディスプレイの仕様について調べたのでメモ。
基本仕様
- 解像度: 480x360
- Transreflective(半透過)ディスプレイ
- ドライバIC: ST7365
- 静電容量式タッチパネル(I2C)
- 商品ページ: https://viewedisplay.com/product/3-5-inch-320x480-sunlight-readable-transflective-with-super-low-power-tft-lcd-module/
ディスプレイ接続方式
SPI,MIPI,8080方式に対応しており、方式はIM0-2ピンの値を使って切り替えることができる。自分はMIPIが搭載されていないRaspberry Pi Zeroを使うのでSPI方式を検討する。
SPI
SPIでも、3-wireと4-wireの両方に対応している。ややこしいが、ここで言う3-wireとは、一般的な4-wireと等しい普通のSPIになっている。
4-wireでは、D/CXもしくはSPI_RSというピンを追加で使うため、実質5-wireとなる。
4-wireでは、D/CXもしくはSPI_RSというピンを追加で使うため、実質5-wireとなる。
D/CXとはそのデータがコマンドかデータかを選択するピンで、これを使わない場合にはSPI経由で1ビット余分に送信する必要があるということ。
ラズパイ
ラズパイがどちらの方式に対応しているのかがわからないので調べた。そもそもST7365はILI9488というもののクローン(?)のようで、そのILI9488を動かすためのドライバが
LCD-show/usr/fbcp-ili9341/ili9488.cpp at bbd0a9c539f16ba058fb19dda1e71c65c620f81f · goodtft/LCD-show
2.4" 2.8"3.2" 3.5" 5.0" 7.0" TFT LCD driver for the Raspberry PI 3B+/A/A+/B/B+/PI2/ PI3/ZERO/ZERO W - goodtft/LCD-show
github.com
にある。ILI9341と起動シーケンスが違うだけで似てるからかILI9341にまとめられている。そしてそのフォルダには結構詳しいREADMEファイルがあり、
LCD-show/usr/fbcp-ili9341/README.md at bbd0a9c539f16ba058fb19dda1e71c65c620f81f · goodtft/LCD-show
2.4" 2.8"3.2" 3.5" 5.0" 7.0" TFT LCD driver for the Raspberry PI 3B+/A/A+/B/B+/PI2/ PI3/ZERO/ZERO W - goodtft/LCD-show
github.com
この中に
-DGPIO_TFT_DATA_CONTROL=number
: Specifies/overrides which GPIO pin to use for the Data/Control (DC) line on the 4-wire SPI communication. This pin number is specified in BCM pin numbers. If you have a 3-wire SPI display that does not have a Data/Control line, set this value to -1, i.e.-DGPIO_TFT_DATA_CONTROL=-1
to tell fbcp-ili9341 to target 3-wire ("9-bit") SPI communication.
という記述を見つけた。つまりは3-wireと4-wireどちらも使えるようだ。4-wireのほうが高速になりそうなので4-wireにしてみる。
Pinout
- Pin 9, SPI_CS: チップセレクト
- Pin 10, SPI_SCL: SPIクロック
- Pin 11, SPI_RS: 多分ST7365でD/CXと呼ばれているもの
- Pin 13, SPI_SDA: SDAという名前はST7365に無いのだが、SDOがOutputである以上これがInput、つまりMOSIだと思う。ST7365だとSDIと呼ばれている?
- Pin 14, SPI_SDO: MISO。ST7365でもSDOと呼ばれている。必要ないかも?
他のピンについて
SPI有効時は、
- IM1-3: 3-wireなら101, 4-wireなら111
- DB0-15: GNDに落とす
- RESET: どっかのGPIOに繋ぐ
- MCU_RD: 多分ST7365のRDXピン。Low-activeなのでHigh?
- TE: フロート
のようにする。
↓他のよく分からないピン
バックライト
バックライトも搭載されており、
Backlight off in Reflective mode @ Surrounding illumination > 1500 cd/m²
Backlight on in Transmissive mode @ Surrounding illumination ≤ 1500 cd/m²
と記載されている。のでこれに従いバックライトをオンオフすれば良さそう。また、先程のILI9341ディスプレイドライバでバックライトピンを指定できそうな感じだったのでそれを使うといいかもしれない。
明るさ制御
バックライトは6個の並列LEDで駆動される。
5.2節によると、
5.2節によると、
- 順方向電圧: 2.9V
- 順方向電流: 120mA
が典型値となっているが、この電流は「モジュール全体」の値とされている。つまり1つのLEDあたり20mAが典型値となる。
そしてこの典型値は寿命を計算するのに用いられており、これを超えて電流を流すと寿命が縮まるということらしい。
ちなみにLED一つあたりの絶対定格電流は120mA
タッチパネル
Pin 1-4がタッチパネル関係のピンなのだが、CTPとRTPの場合で役割が分かれている。しかしながらこのディスプレイの仕様としてCTPなのでRTPになることが無さそうだが他のバリアントがあるのかもしれない。
今回はCTPなので普通にI2Cを繋げばよさそう
今回はCTPなので普通にI2Cを繋げばよさそう