みつきんのメモ

組み込みエンジニアです。Interface誌で「Yocto Projectではじめる 組み込みLinux開発入門」連載中

raspbian以外のOSでcocopar 5inch HDMI LCDディスプレイを使用する

cocopar 5 インチIPSハイビジョンLCD ディスプレイを購入した。

HDMI接続のLCDディスプレイとSPI接続のタッチパネルの機能を持つ。

これも基本的にはRaspbianで使用する前提のもののようだが、pokyで動作させたのでメモ。

カーネルは4.1を使用した。

このディスプレイはタッチパネル機能も付いているのでそれぞれの動作に必要なことを記載する。

LCDディスプレイ

LCDディスプレイを動作させるにはconfig.txtに下記の部分を追加すれば良い。

disable_overscan=1
hdmi_group=2
hdmi_mode=87
hdmi_cvt 800 480 60 6 0 0 0

タッチパネル

タッチパネルのコントローラは「XPT2046」が搭載されている。 ここによると、ADS7843と互換性があるらしい。 LinuxではADS7846のドライバが使用できる。

このドライバインストールされた状態で、さらにロードされるようにするためには、ads78460-overlay.dtbをSDカードのブートパーティションに置き、config.txtに以下を記述する

dtparam=spi=on
dtoverlay=ads7846,penirq=25,speed=10000,penirq_pull=2,xohms=150

これでタッチパネルが動作するようになる。

キャリブレーション(X11環境)

X11環境でのタッチパネルのキャリブレーションは、sshなどのコンソールで下記を実行する。これはスーパーユーザー権限が必要。

$ DISPLAY=:0.0 xinput_calibrator

LCDキャリブレーション画面が表示されるので、画面に従いキャリブレーションを実施する。

すると、下記のように表示されるので、指示に従い「/etc/X11/xorg.conf.d/99-calibration.conf」を作成する。

Calibrating EVDEV driver for "ADS7846 Touchscreen" id=6
    current calibration values (from XInput): min_x=102, max_x=3934 and min_y=330, max_y=3868

Doing dynamic recalibration:
    Setting calibration data: 60, 3976, 332, 3885
    --> Making the calibration permanent <--
  copy the snippet below into '/etc/X11/xorg.conf.d/99-calibration.conf'
Section "InputClass"
    Identifier  "calibration"
    MatchProduct    "ADS7846 Touchscreen"
    Option  "Calibration"   "60 3976 332 3885"
    Option  "SwapAxes"  "0"
EndSection

動作確認

写真はRPi3にディスプレイを接続してyoctoでcore-image-satoを作成して動かしたもの。

f:id:mickey_happygolucky:20160402073411j:plain