アプリケーションノート 4397

大型LEDディスプレイのためのMAX6960プログラミングガイド

筆者: Walter Chen

要約: このアプリケーションノートは、より大型のLEDディスプレイやドットマトリックス素子をサポートするための、複数の8 x 8マトリックスLEDドライバMAX696xの配列およびプログラム方法について詳述します。このドライバファミリは最大256のICのデイジーチェーンに対応しており、大型のマトリックスディスプレイを駆動、制御、およびプログラムすることができます。このアプリケーションノートでは、様々なデバイス間の相違点と、それらをマルチプレーン、マルチロウ、およびマルチカラムの用途に利用する方法を説明します。

デバイスの概要

LEDドライバMAX6960は、多重化された8行x16列のポートを通して、外付け部品を使用せずに2つの単色、8 x 8ドットマトリックスディスプレイを駆動します。1つのオープンドレインの行ポートが、16列すべてのポートから各40mAの最大定ソース電流で電流をシンクすることができます。これらの8つの行ポートは時間軸で多重化され、特定の時点では1つの行ポートだけが電流シンク用に作動します。したがって、個々の列ポートを通る平均電流は5mAになります。

また、MAX6960は単一の2色(赤、緑)、8 x 8ドットマトリックスディスプレイを駆動することもできます。個々のドットマトリックス素子を独立してオンまたはオフするか、または4段階(オフを含む)の輝度レベルに設定することができます。すべてのディスプレイの発光強度を、256ステップでPWM制御することができます。最大256のMAX6960デバイスをデイジーチェーンして、より大きな制御単位を形成することが可能であり、ホストコントローラからそのディスプレイメモリへは、DIN、DOUT、CLK、およびアクティブローのCSで構成される4線式シリアルインタフェースを通してアクセスすることができます。デイジーチェーンされたすべてのチップ間で使用される、ADDCLK、ADDIN、およびADDOUTで構成されたもう1つの3線式インタフェースによって相互接続の設定が自律的に行われるため、ホストコントローラからの介入は不要です。

このLEDドライバファミリの他のメンバも、MAX6960に類似しています。しかし、MAX6961の機能はドットマトリックス素子のオンとオフに限られています。MAX6962は単色のディスプレイのみを駆動することができます。最後に、MAX6963はドットマトリックス素子のオンとオフを行い、単色のディスプレイのみを駆動可能です。

アプリケーション例

図1は、2つのMAX6960を使用して4つの単色ディスプレイを駆動する簡単なアプリケーションを示しています。LDM-24288NIは、Lumex®製の8 x 8緑色、ドットマトリックスLEDです。4つのディスプレイ(D1、D2、D3、およびD4)は左から右に配置されて、8行x32列のディスプレイを形成します。U1のRISET0とRISET1、U2のRISET0とRISET1がすべてグランドに接続されているため、列の電流レベルはすべて一定の40mAに設定されます。

U1とU2の4線式インタフェースは並列に接続されており、DINとDOUTを通したデイジーチェーンにはなっていません。起動後に3線式インタフェースを通して固有のデバイスアドレスが設定されるため、個別チップコマンドの場合は1つのチップだけが選択されます。グローバルコマンドは、すべてのMAX6960に同時に適用されます。これは、3つ以上のMAX6960が1つに接続されている場合も同じです。4線式インタフェースは、すべて並列に接続されます。

各MAX6960は3線式インタフェースも備えており、この3線式インタフェースを通してすべてのMAX6960がデイジーチェーンされます。通常は1つのMAX6960がマスタとして選ばれます。マスタはデバイスアドレスが0であり、他のMAX6960のためにクロックを生成します。すべてのMAX6960のADDCLK端子が1つに接続されます。マスタのADDIN端子だけがV+に接続されます。他のMAX6960のADDIN端子は、1つ前のデバイス(アドレスがそのデバイス自身のものより1つ小さいデバイス)のADDOUT端子に接続されます。最後のデバイスのADDOUT端子は、未接続のままにします。

Figure 1. Multiple MAX6960 devices drive four one-color digits.
図1. 複数のMAX6960デバイスによる4つの単色ディスプレイの駆動

起動時に、すべてのMAX6960のドライバアドレスレジスタ0x00がオールゼロに初期化され、ADDOUT端子がロジックローに設定されます。マスタのMAX6960は、クロック信号がない状態でADDIN端子がロジックハイであることから、自分の状態を検知します。次にマスタはクロック信号を生成して、ADDOUTをロジックハイに駆動します。後続の各MAX6960は、自分のADDINがロジックハイになるまでのクロック周期をカウントすることによってそれぞれのドライバアドレスを設定して、自分のADDOUTをロジックハイに駆動します。こうして、256 ADDCLKクロックサイクルの間にすべてのMAX6960のドライバアドレスレジスタが初期化されます。

ディスプレイメモリアドレスの設定

個々のMAX6960が、2つまたは4つの輝度プレーンに分割することが可能な64バイトのディスプレイメモリを備えています。特定の時点では1つのプレーンだけが選択されてこれらのポートを駆動します。複数のプレーンが利用可能であるため、1つのプレーンでLEDを駆動している間に別のプレーンを更新することができます。また、複数のプレーンを順に切り替えることによってアニメーション化を行うオプションもあります。

4つのプレーンを使用する場合、各プレーンは16バイトすなわち128ビットであり、16列x8行のピクセルではピクセル当り1ビットになります。2つのプレーンの場合は、各プレーンが32バイトすなわち256ビットであり、同じく16列x8行ではピクセル当り2ビットになります。単色のディスプレイは8列x8行であり、2色のディスプレイは16列x8行です。1つのプレーンで、単色の場合は2つのディスプレイを、2色の場合は1つのディスプレイを、それぞれカバーすることができます。

ディスプレイメモリへのアクセスは一度に8ビットずつ行われます。ピクセル当り1ビットの場合は、ディスプレイメモリへの書込みに当たって、最初の8ビットが第1の列、第2の8ビットが第2の列、というようになります。ピクセル当り1ビットでの8 x 8ピクセルのディスプレイは、8バイトで書き込まれます。すなわち、第1のディスプレイの第1の列のアドレスは0、第1のディスプレイの第2の列は1、第2のディスプレイの第1の列は8、というようになります。複数のドライバを使用している場合、すべてのディプレイメモリが結合され、ディスプレイメモリアドレスが次式のように決定されます。

メモリアドレス = (ドライバ番号 - 1) x 16 + (ディスプレイ番号 - 1) x 8 + (列番号 - 1)

ピクセル当り2ビットの場合は、8ビットのディスプレイメモリアクセスによって列の半分だけが更新されます。前述のように、起動後に3線式インタフェースを通してドライバ番号が自動的に設定され、レジスタ0x00に格納されます。次に14ビットを使用して、結合ディスプレイメモリ内の1バイトが特定されます。1ピクセル当り1ビットの場合、最初の2つのビットによってプレーンが特定され、残りの12ビットを使用して、256のドライバの中に2048存在する列の1つが指定されます。1ピクセル当り2ビットの場合、最初のビットでプレーンが特定され、残りの13ビットを使用して、256のドライバの中に4096存在する半分の列の1つが指定されます。

MAX6960は、4線式インタフェースを通して、8、16、または24ビットの転送のみを受け付けます。アクティブローのCSの立下りエッジから次の立上りエッジまでの間に正確にこのビット数を含んでいない転送は無視されます。

間接方式によるレジスタへのアクセス

間接方式の8ビット転送を使用する場合は、ディスプレイメモリアドレスが不要です。各MAX6960には、2つの、グローバルドライバ、間接アドレスレジスタが存在します(0x09と0x0A)。これらのレジスタのそれぞれが、同じグローバル間接ディスプレイメモリアドレスを追跡管理します。起動時には、これらのレジスタはすべてアドレス0でスタートします。8ビット間接ディスプレイメモリアクセスを行うごとに、すべてのMAX6960のレジスタが1だけインクリメントされます。間接ディスプレイメモリアクセス中は、各MAX6960がこれら2つのレジスタ内のアドレスを自分のドライバアドレスと比較して、ディスプレイメモリを更新する必要があるかどうかを判断します。

また、24ビット転送を使うことによって、結合ディスプレイメモリ内の特定のバイトにアクセスすることもできます。これらの24ビットの中で、最初のビットはそれが書込み動作(0)か読取り動作(1)かを示します。第2のビットには意味がなく、無視することができます。次の14ビットを使用して、結合ディスプレイメモリ内の1バイトが特定されます。最後の8ビットは、データバイトです。

MAX6960の16のレジスタには、16ビット転送を使用してアクセスします。これらの16ビットの中で、最初のビットはそれが書込み動作(0)か読取り動作(1)かを示します。第2のビットは、アドレスの自動インクリメントを作動させるかどうかを決定します。第3のビットは、そのレジスタアクセスがローカル(0)かグローバル(1)かを示します。第4のビットは、常に0にする必要があります。次の4ビットは、どのレジスタが対象かを示します。最後の8ビットは、データバイトです。ローカルレジスタアクセスの場合、0x08に位置するグローバルドライバ間接アドレスレジスタにドライバアドレスが格納されます。すべてのMAX6960のレジスタ0x08は、起動時に0に初期化されます。16ビット転送を使用して、それらをグローバルに変更することが可能です。第2のビットをセットしておくことで、16ビット転送が終わるたびにそれらを同時にインクリメントさせることも可能です。

起動時のデフォルト値が、ディスプレイのサイズ、色、または輝度レベルの仕様に合わない場合は、MAX6960の初期化が必要になる可能性があります。256のMAX6960について、単色、1ピクセル当り1ビット、ディスプレイ全体、およびパネル半分の輝度というレジスタの起動時デフォルト値が連続して接続されます。

間接方式を使用する場合、ディスプレイメモリへのアクセスは一度に1桁(8 x 8)ずつ、左から右のピクセル列に向かって行われます。次に、左から右に向かって、1桁ずつMAX6960のドライバの行の終りまで進みます。最後に、MAX6960ドライバの行を上から下に順次処理します。間接方式では、最初にディスプレイ全体の赤のメモリにアクセスして、次に緑のメモリにアクセスします。0x0Eに位置するグローバルドライバデバイスレジスタを初期化して、ディスプレイ間接アドレスカウントが正しい数でリセットすることができるようにする必要があります。これを図23で示します(DANはDigit Access Numberの略です)。1つの単一桁アクセスで、8バイト(ピクセル当り1ビットの場合とピクセル当り2ビットの場合で、それぞれ8 x 8または4 x 8のディスプレイマトリックス)のディスプレイメモリが更新されます。グローバルドライバデバイス数レジスタは、MAX6960の総数から1を減じた値に初期化してください。

Figure 2. Single-color, 1-bit-per-pixel, display memory access sequence.
図2. 単色、ピクセル当り1ビット、ディスプレイメモリアクセスシーケンス

Figure 3. Two-color, 1-bit-per-pixel, display memory access sequence.
図3. 2色、ピクセル当り1ビット、ディスプレイメモリアクセスシーケンス

ピクセル分解能が2ビットの場合は、0x0Fに位置するグローバルドライバ行レジスタも初期化する必要があります。この初期化によって、図45に示すように、最初にMAX6960の1つの行にアクセスしてから次の行に進むことができることが保証されます。グローバルドライバ行レジスタは、連続するMAX6960の総数から1を減じた値に初期化してください。

Figure 4. Single-color, 2-bit-per-pixel, display memory access sequence.
図4. 単色、ピクセル当り2ビット、ディスプレイメモリアクセスシーケンス

Figure 5. Two-color, 2-bit-per-pixel, display memory access sequence.
図5. 2色、ピクセル当り2ビット、ディスプレイメモリアクセスシーケンス

輝度制御レジスタ

MAX6960の動作の詳細は、その16のレジスタに書込みを行うことによって制御されます。これらのレジスタには、ピクセル輝度スケール(0x01)、パネル輝度(0x02)、ディスプレイ0輝度(0x03)、ディスプレイ1輝度(0x04)、障害(0x05)、およびグローバルパネル設定(0x0D)が含まれます。これらの輝度制御レジスタは、それぞれ8ビットです。

グローバルドライバデバイスの初期化

次のコードは、図1の簡単なアプリケーション回路について、グローバルドライバデバイスとグローバルドライバ行レジスタの初期化を行う16ビット転送の例です。
0x0E, 0x01, 		// Write to global driver devices register with two total devices.
0x0F, 0x01, 		// Write to global driver rows register with two MAX6960s in a row.
次のコードは、図1の回路構成を持つ8 x 32マトリックスフォーメーションの中で、4つの8 x 8ピクセルで構成された部分の周囲をオンにする8ビット転送と16ビット転送の例です。
0xFF, 			// Light up the left edge.
0x81, 			// Light up top and bottom pixels of the second column.
0x81, 			// Light up top and bottom pixels of the third column.
...
0x81, 			// Light up top and bottom pixels of the fourteenth column.
0x81, 			// Light up top and bottom pixels of the fifteenth column.
0xFF, 			// Light up the left edge.
0x0D, 0x31, 		// Turn on the shutdown bit.
次のステップ
EE-Mail EE-Mail配信の登録申し込みをして、興味のある分野の最新ドキュメントに関する自動通知を受け取る。
© , Maxim Integrated Products, Inc.
このウェブサイトのコンテンツは米国および各国の著作権法によって保護されています。コンテンツの複製を希望される場合は お問い合わせください。.
APP 4397:
アプリケーションノート 4397,AN4397, AN 4397, APP4397, Appnote4397, Appnote 4397