Howto

Armadillo-440にタッチスクリーンディスプレイを接続する方法

a440-10.4inch-lcd

Armadillo-440にタッチスクリーンディスプレイを接続する方法、そしてそのソフトウェアの対応方法を紹介します。

Armadillo-440液晶モデル開発セット(以降、「液晶モデル」)では、以下のデバイスがLCD拡張ボード経由でArmadillo-440に接続されています。

  • 液晶:4.3インチ WQVGA
  • タッチスクリーン:4線式抵抗膜方式

このHowtoでは以下の物を接続する場合を例に説明します。

  • 液晶:10.4インチ VGA
  • タッチスクリーン:4線式抵抗膜方式

大きく2つに分けてハードウェアのカスタマイズそしてソフトウェア対応について説明していきます。ハードウェアのカスタマイズは、液晶パネルの表示機能、バックライト電源提供、タッチスクリーン、そしてキーパッドについて順番に説明していきます。ソフトウェア対応は、液晶パネル、そしてタッチスクリーンのソフトウェア対応について説明していきます。

ハードウェアのカスタマイズ

Armadillo-440に液晶ディスプレイを接続する場合は、液晶モデルのように外部基板でコネクタ形状を変換します。また、液晶バックライト用の電源も別途用意します。

イメージとして、以下のようなカスタムインターフェース基板を作ることになります。

a440-custom-iface

このHowtoの例に利用するデバイスの詳細は以下の通りです。

タッチスクリーンディスプレイ

製品型番 FG100410DNCWBGT1
解像度 640 x 480 dot
液晶パネルの種類 TFT
タッチスクリーンの種類 4線式抵抗膜方式
バックライトの種類 CCFL蛍光管
インターフェースの種類 3.3V C-MOS 18bitパラレルRGBインターフェース
電源電圧範囲 3.0V~3.6V
消費電流(3.3V) Typ. 420mA
コネクタ DF9C-31P-1V(32) (HIROSE)

DC-ACインバータ(バックライト電源)

製品型番 CXA-P10A-P
出力開放電圧 1.5kV
出力電力 9W
入力電圧 5V

液晶パネルの表示機能

アドバイス

Armadillo-440のLCDインターフェースは標準でパラレルインターフェースに対応していますので、パラレルインターフェースタイプの液晶パネルを選択するようにしてください。Armadillo-440で出力可能な最大解像度は800x600ピクセルなので、それ以下の解像度の液晶パネルを選択しましょう。

注意点

液晶パネルの電源をArmadillo-440の3.3V電源から供給する場合は、外部回路の消費電流が最大合計500mA以下になるようにしてください。詳細は、Armadillo-400シリーズハードウェアマニュアル「電源回路の構成」をご確認ください。

表示インターフェースの接続方法

今回利用する10.4インチ液晶(FG100410DNCWBGT1)には1mmピッチ面実装タイプのコネクタが付いています。このコネクタにArmadillo-440のCON11(LCDインターフェース)を繋ぐためにコネクタの形状を変換します。以下の回路図のように液晶パネルのコネクタからArmadillo-440のCON11と接続するFPC 0.5mmピッチコネクタに配線します。FPC 0.5mmピッチコネクタとArmadillo-440のCON11は液晶モデルに付属しているFFCケーブルを使用して接続します。

a440-custom-circuit-display

液晶パネルのバックライト

アドバイス

バックライト電源は液晶パネルのバックライトの種類に合わせて用意する必要があります。 液晶モデルでは、LEDバックライトタイプの液晶パネルを使用していますが、今回使用する液晶パネルは蛍光灯(CFL)バックライト方式の液晶パネルになります。 バックライト電源の選択では、Armadillo-440の電源電圧と同じ5V入力の物を選択すると、電源が統一できます。またCFLバックライト方式では、蛍光灯を駆動するために高圧電圧に変換する装置「インバータ」が必要で、インバータの出力電流は蛍光管の定格より余裕のあるものを選択しましょう。ただし今回使用した電源は都合により定格より少し下回っていますので定格通りの明るさで使用したい場合は、別の物を選択すると良いでしょう。

注意点

CFLバックライト駆動用のインバータは高圧電圧が発生しますので、ショートやけがなどに十分ご注意ください。

液晶パネルのバックライト電源供給

FG100410DNCWBGT1に電源を供給するように、以下の回路図のようにDC-ACインバータを配線します。

a440-custom-circuit-power

タッチスクリーン

アドバイス

4線式抵抗膜方式のタッチスクリーンはArmadillo-440に直接接続することが可能です。また、Armadillo内部のIC保護のためタッチスクリーンの信号には過電圧および過電流保護素子を入れることを推奨します。

FG100410DNCWBGT1のタッチスクリーンの接続方法

タッチスクリーンの信号とArmadillo-440は以下の回路図のように配線します。

a440-custom-circuit-ts

キーパッドの接続方法

キーパッドの接続は液晶モデルと同じピンに接続しています。

a440-custom-circuit-keypad

ソフトウェア対応

上記のハードウェアのカスタマイズに合わせて、ソフトウェアも変更します。該当するファイルで定義されている設定項目を変更するだけで、簡単に新しいハードウェアに対応させることができます。

このHowtoでは、以下のカーネルバージョンを想定しています。

  • Linuxカーネルバージョン: 2.6.26-at11

液晶パネル

液晶パネルに描画するには、フレームバッファドライバを使用します。ドライバのソースコードは以下のファイルです。

  • linux/drivers/video/mxc/mxcfb.c

液晶モデルと異なる液晶パネルで正しく描画できるように、以下のタイミング情報を修正する必要があります。

  • ドットクロック(ピコ秒)
  • Xレゾリューション
  • Yレゾリューション
  • 左マージン
  • 右マージン
  • 上マージン
  • 下マージン
  • 水平同期
  • 垂直同期

これらの項目に関しては以下のファイルに説明が載っているので参照してください。

  • linux/Documentation/fb/framebuffer.txt

タイミング情報は、液晶パネルの製品マニュアルを参照して計算します。FG100410DNCWBGT1の設定値は既にカーネルに定義済みですので、今回はその情報を記載します。カーネルで設定する値(KERNEL)の計算方法は以下のようになります。

PDF             | KERNEL
----------------+--------------
Clock 25.199MHz | 39683 ps/dot

            HORIZONTAL             |               VERTICAL
-----------------------------------+----------------------------------------
  PDF            | KERNEL  | DOTS  |   PDF            | KERNEL  | LINES
-----------------------------------+----------------------------------------
  Sync period      ----       800  |   Sync period      ----      525 (60Hz)
- Display period   xres       640  | - Display period   yres      480
                              ---  |                              ---
        (non-display)         160  |       (non-display)           45
- Sync w + Back P. ----       160  | - Sync w + Back P. ----       45
                              ---                                  --
  Front Porch      right m.     0  |   Front Porch      lower m.    0

- Sync w + Back P. ----       160  |   Sync w + Back P. ----       45
- Pulse w          hsync      160  | - Pulse w          vsync      45
  Back Porch       left m.      0  |   Back Porch       upper m.    0

上記の値を linux/drivers/video/mxc/mxcfb_modedb.c で定義されている mxcfb_modedb 配列に追加します。

{
        /* name           rfsh xres yres dotclk lm rm um lm  hs  vs */
        "FG100410DNCWBGT1", 60, 640, 480, 39683, 0, 0, 0, 0, 45, 160,
        0, /* sync */
        FB_VMODE_NONINTERLACED, /* vmode */
        0, /* flag */
},

これでhermitで以下のように video のカーネルパラメータで定義したタイミングを指定できます。

setenv console=ttymxc0 video=mxcfb:FG100410DNCWBGT1,16bpp,enable

タッチスクリーン

タッチスクリーンのドライバはi.MX25に内蔵されているタッチスクリーンコントローラを利用してタッチ情報を取得します。このドライバはLinuxのインプットレイヤーに対応しているので、アプリケーションは /dev/input/event* のデバイスノードを使ってデータを取り出すことができます。ソースは以下のファイルになります。

  • linux/drivers/input/touchscreen/imx_adc_ts.c

ダウンロード

回路図と部品表

例に利用していたハードウェアの回路図(PDF)と部品表を参考にしてください。

カーネルイメージ

準備中