[[電子工作]]


*Gumstix Overo に 7インチLCDを接続 [#ld977b74]
ここでは、Gumstix Overo シリーズに Samsung社製の 7inch TFT-LCD (800x480x24bitカラー)を接続する方法について紹介します。

**Gumstix Overoとは [#x979bb5e]
Gumstix社のOveroシリーズは、TI社製のCPU  OMAP3530(以下 OMAPと略記)と、メモリ(RAMとROM)、電源・周辺インターフェイス統合チップを小さなボードにコンパクトにまとめたシングルボードコンピュータです。このボードには、外部接続用コネクタとして70ピンのコネクタが 2個とFPC用コネクタ(カメラ等が接続できる)が実装されています。これらのコネクタにはLVCOMSレベル(1.8V) の周辺デバイス用の信号が出力されているため、容易に周辺IOデバイスを接続して拡張することができるようになっています。また、オンボード WifiやBluetoothなどの有無等でシリーズ化されている (なおこの原稿の執筆時点では電波法令で規定されている無線技術基準適合の認証が行われていない様です。オンボードの無線LANおよび Bluetoothについては日本国内での使用はできない。無線LAN等を利用するためには認証が行われた USBアダプタなどを接続する必要があります。)

&ref(gumstix.jpg,,25%);~

**接続するTFT-LCDについて [#lecf078f]
Samsung社のTFT-LCDユニットは、下記の特徴を持つ モバイルデバイス用のデバイスです。
Samsumg社製 LMS700KF23 を接続します。 ビート・クラフトが入手したデーターシートのコピーを添付しておきます。この記事と
合わせて参照してください。~
&ref(LMS700KF23.pdf);~
~

このTFT-LCDユニットは、下記の特徴を持つ モバイルデバイス用のデバイスです。
- 表示面のサイズが7インチ
- 表示ピクセル数は 800 x 480ドット
- 表示可能色数: 約1600万色 (24bitカラー)
- 白色LEDバックライトを採用
TFT-LCDユニットは 3.3Vレベルの24bit長の画像信号バス、4bit長同期信号バスで受信して表示パネルに表示を行います。バックライトの電源は、別系統で供給され、常に点灯させる。なおバックライトを点灯しないと、表示内容が見えませんので、必ず点灯させる必要があります。

&ref(DSCF7043.JPG,,25%);~

**基本的な接続方法 [#nb80e46d]
Gumstix Overoに搭載されているOMAPには LCDコントローラが内蔵されています。このLCDコントローラは、フレームメモリに書き込まれた内容を読み出し、TFT-LCDに表示するための必要な信号をハード的に生成して出力するハードウェアです。OMAPの内部レジスタにパラメータを書き込むことで様々なLCD等に対応しています。また、この信号から DVI-D信号へ変換することにより HDMIディスプレイに接続することも可能です。
TFT-LCDを接続するために必要な信号はOMAPより全て出力されているのでこれらの信号をTFT-LCDに接続することで簡単に動作させることができます。

ここで注意しなければならない点は、OMAPのIO駆動電圧が 1.8Vであり、LCDユニット側のIO駆動電圧が3.3V であり、異なっている点です。OMAPに接続する周辺デバイスのインターフェイス電圧が1.8V以外の電圧である場合には注意が必要で、一般的には直接接続することができません。今回接続する TFT-LCD場合も IO駆動電圧が 3.3Vであり、インターフェイス電圧が異なるため、直接接続することができません。この場合は、電圧変換用のLSIを介して接続する必要があります。詳しくは 後述します。

TFT-LCDのパネル自体は全く発光しないため、表示内容をみるためにはバックライトが必要となりますので、バックライト用の電源も必要となります。

**TFT-LCDの表示方法 [#m513ca73]
具体的な接続例を示す前に、TFT-LCDに使われる信号について簡単に説明します。

&ref(LCD2.jpg);

OMAPからフレームの開始信号として、FCLK信号が送信されます。これにより表示開始位置が左上の (0,0) であることを示します。TFT-LCDは FCLK信号を受信すると、次のピクセルデータは (0,0)のデータとします。

次にOMAPから24bit長のデーターバスに 1ピクセル分の画像データをセットして、PCLK信号を送信します。TFT-LCD側は、PCLK信号を受信すると、24bit長のデータバスを読み込み、(0,0) のピクセルに表示を行います。次のピクセルは 右側に 1ピクセル進んだピクセルになります。 OMAPはデータバスに次のピクセルのデータをセットしたのち 再びPCLKを送信します。TFT-LCD側は PCLKを受信すると、再びデータバスから読み込み、次のピクセルに表示します。これを 800ピクセル分繰り返すことにより、最初の1ライン分が完成します。1ラインの送信が完了すると、LCLK信号で次のラインに移ることがを送信され、再び 800ピクセル分が繰り返されます。このようにして、480ライン分繰り返すことにより、1フレーム分の画像が完成します。(ノン・インターレス表示の場合) 1フレーム分が完成すると、FCLK信号が送信され、次のフレームに移ります。再び (0,0) からピクセルのデータが開始され、同様に次のフレームが処理されます。この動作を繰り返すことにより、画像が表示されるようになります。この画像データの送信のために使われる信号をまとめると下記の通りになります。

- 垂直同期信号 VSYNC
-- フレームクロック FCLKとも呼ばれます。 フレームの開始を示す信号
- 水平同期信号 HSYNC
-- ラインクロック LCLK とも呼ばれます。 水平方向のラインの開始を示す信号です。
- ピクセルクロック PCLK 
-- 1ピクセル毎の区切りを示す信号です。CRTには存在しません。TFT-LCDの場合 各ピクセルの区切りを明確にするためにピクセルクロック信号が存在します
- (ピクセル)データ イネーブル DE 
-- RGBのピクセルデータが有効か無効か示す信号です。水平方向の走査中は アクティブになっています。
- (ピクセル)データ
-- 24bit長のデータバス

**IO駆動信号の電圧について [#f05ad668]
OMAPの周辺IOの駆動電圧は 1.8V のシングルエンドの信号です。つまり Hレベルの電圧は 約1.8V、Lレベルの電圧は約 0Vです。 Gumstix Overoの場合、ボード上のコネクタに1.8Vのまま出力されています。一方、TFT-LCDパネルの駆動電圧は 3.3Vのシングルエンドです。 

&ref(LCD3.jpg);~

一般的に Hレベルの入力電圧は 電源電圧の 0.65〜0.7倍以上の電圧を必要となるため、TFT-LCDの Hレベル入力電圧は 下記の通りとなります。

  Hレベル入力電圧 = 3.3 x 0.65 = 約2.15V以上

OMAPからの電圧は 1.8VであるためHレベルの電圧が低く正常に動作させることが出来ませんから、なんらかの方法で昇圧する必要があります。
なお、TFT-LCDの場合は OMAP側への出力信号がなく、接続がありませんが、(他のデバイスで) 3.3Vの出力端子のある場合、一般的に1.8V入力端子に 3.3Vの出力を接続することもできません。 多くの場合は、電源電圧 +0.3Vが限界になります。 1.8Vで動作している回路の場合には2.1Vまでとなるために接続できなくなります。なお、一部のデバイスでは 保護回路等が内蔵されて電源電圧 +0.3Vを超える場合でも入力可能な場合もあります。+0.3V以上でも入力できるか否かという点については個別にデータシートで確認する必要があります。
前述の通りOMAPから出力される信号レベルでは TFT-LCDに直接入力できないため、 1.8VのHレベル信号を 3.3VのHレベルに変換してから TFT-LCDに入力することにより接続することができるようになります。このような異電圧ロジックの変換を行い、接続するための手法や対応するLSIは数多くありますので、その中から用途にあわせて選択することになります。TFT-LCDに使われる信号は、単方向だが高速に画像データの伝送する必要があるため、この速度に充分に追従する性能のあるLSIを選択する必要があります。ここでは、TI社の SN74AVCB164245 というLSIを採用しました。

SN74AVCB164245は、電圧が異なる2つの非同期バスを接続することができる8bit長の非反転トランシーバーを2組、合計 16bit長を内蔵しています。変換する必要のある信号は 28bit分ありますので、2個使用します。(4bit分が余る) 利用可能な電圧は 1.4Vから 3.6Vまでであり、1.8Vと 3.3Vの変換を行うことが可能です。このLSIのOE 端子(Output Enable )を省略した動作ロジックは 下図の通りです。

&ref(LCD4.jpg);~

このLSIは、DIR端子を使うことによって 変換方向をA → B または B → A へ非同期で切り替えることができます。OE端子を使うことで非同期で2つのバスを切り離すことも可能になっています。詳細については SN74AVCB164245 のデータシートを参照してください。今回は、OMAPから TFT-LCDへの一方のみになるため、DIR信号は固定になります。また、常に変換動作を行うため、OE端子も 常に有効になるように固定します。
今回のケースでは以下のように接続します。 VccA 側には 1.8V を接続し、OMAPからのバスを接続します。 VccB側には 3.3Vを接続し、TFT-LCDへのバスを接続します。DIR端子は、A → B になるように Hレベルで固定します。 OE端子は 常に有効になるように Lレベルで固定します。

**TFT-LCD信号の接続 [#gc926837]
OMAP からは ピクセル信号が RGB各8bit, 合計 24bit長のバスでRGBの値が表現されて出力されています。ちなみにこのような方式をパラレル式と呼ぶます。Gumstix Overo のコネクタには出力されている信号には L_DATA00 〜 L_DATA23 という名前がついています。 このうちL_DATA00 〜 L_DATA07 は 青成分がLSB〜MSBの順に並んでいます。同様に L_DATA08〜L_DATA15 は 緑成分、L_DATA16〜L_DATA23 は、赤成分 となっています。この割り当ては OMAPのハードウェアによってあらかじめ決まっているためソフトウェアからは変更することが出来ません。このOMAPのビットの並びとTFT-LCDに入力する RGB成分のビットの並びが異なる場合があります。TFT-LCDに接続するときはRGB各成分の並びおよびLSB〜MSBの割り当てを間違えないように注意する必要があります。これを間違えると、正しい色が表示されません。そのほか、制御用のデータイネーブル、ピクセルクロック、水平同期、垂直同期の各信号も同じように接続します。

なお、SN74AVCB164245の入力側 つまり1.8V側をフロート状態にしてはいけません。フロート状態を避けるために必ずプルアップまたは、プルダウンの処理を行います。

**TFT-LCDバックライト [#m9673d87]
TFT-LCDの各ピクセルは発光しません。バックライト型のTFT-LCDは、RGBの各シャッターを表示色に応じて開閉させ、背面に組み込まれたバックライトからの光を透過させることで、目に見えるようにしています。(反射型は外からの光を反射させています) このためバックライトを発光させないと、表示内容が全く見ることができません。以前は 冷陰極菅型のバックライトが主流でしたが、最近は消費電力が少なく、薄くできるホワイトLCDを使うパネルが主流になりつつあります。この TFT-LCDパネルも 8個直列に接続されたホワイトLEDが3列、合計 24個が組み込まれています。このTFT-LCDパネルの場合は 標準値として 各ストリングに最大20mAの電流を流します。バックライトの輝度を調整するときは、主にPWMのデュティー比の調整による方法と、電流を調整する方法があります。デュティー比は、1サイクルの波形の中でどれくらいの割合で Hレベルの時間があるのか、という比率で表します。まったく Hレベルがない状態を 0% , すべて Hレベルの状態を 100% として、このHレベルの時間を調整します。 Hレベルの間は、バックライトが発光し、Lレベルの間は発光しません。この結果、バックライトは常に点滅している状態になりますが、高速で点滅させること、点滅しているのではく 発光している時間の割合に応じて明るく見えたり、暗く見えたりします。 

   デュティー比 = Th の時間 / Ts の時間

プログラムから調整する場合、PWMのデュティー比による調整方法が比較的容易に実装できることから、調光には 前者を採用することが主流のようです。後者の場合、電流値を決定する抵抗値の調整が必要になるケースが多く、プログラムからの調整が困難です。 ハードウェア的に調整して、固定する場合にはよく使われます。今回はプログラムから調光できるように、PWMによる調光を採用していいます。

&ref(LCD5.jpg);~

**実際の回路図 [#bc58f0ab]
(1)Gumstix Overoコネクタ

Gumstix Overoを接続するための 70pinのコネクタから TFT-LCDに必要な L_DATA00〜L_DATA23, FCLK, LCLK, PCLK, BIAS(DE信号) および調光用のPWMを引き出しています。 その他 Gumstix用の電源を配置しておきます。

(2)電圧変換
OMAPからの信号を VccA側に、TFT-LCDに出力する信号を VccB側に接続しています。このSN74AVCB164245 は、信号の方向を決めるDIR端子および、変換を有効にする OE端子がある。DIR端子は、Hレベルに、OE端子は GNDに接続して変換の方向および常時動作に設定してあります。変換する信号は、24bitの画像信号、クロック 4bit分あり、合計 28bit分あります。 LSIは1個で 16bit分しかありませんので、2個使用して 32bit分を確保しています。なお、余った入力端子は VccA側に接続して入力がフロート状態にならないように注意します。

(3)電源回路
この回路では下記の電源が必要となるため、電源用ICを使って必要な電源を生成しています。

-1.8V
-- OMAPのIOで使用
-3.3V
-- TFT-LCDで使用
-3.3〜4.2V
-- Overoで使用
--- なお、Overo用の電源は、3.3〜4.2Vの間で安定している必要があります。(変動して良いという意味でないので注意)

(4)バックライト回路
バックライトは ホワイトLED が直列8個 x 3列を駆動できるようにする。1列あたり 20mA必要になります。今回は 3列あるため全体では 60mALEDとなる。またホワイトLEDの順方向降下電圧は、約3V弱であるため、必要な電圧は3V x 8 = 24V となる。

リニアテクノロジー社製 LT3598を使い、昇圧および定電流電源を構成しています。過電圧保護のため の電圧を約31Vにしてあります。 ぎりぎりの電圧だと、充分に電流が流れないまま上限に達し、動作不良になる可能性がありますので、高めに設定します。また 調光用として PWM信号を入力しています。

**その他 [#he07cc73]
添付の回路図では、拡張用のGPIO端子、SPI端子、I2C端子などを拡張コネクタに配線しています。このほかにも、シリアルコンソールを USB-Serial変換LSIに接続し、USBケーブルでシリアルコンソールに接続できるように拡張してあります。

- 回路図
-- &ref(OVERO-001-0001B.pdf);

- PDF版
-- &ref(7インチLCD接続_all.pdf);

BC::labsへの質問は、bc9-dev @ googlegroups.com までお願い致します。
トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   最終更新のRSS