MAX6954とMAX6955のキースキャンを32キーを超えて拡張
要約
このアプリケーションノートでは、MAX6954とMAX6955のLEDディスプレイドライバのキースキャン機能を32キーから最大80キーに拡張する方法について詳しく説明します。
MAX6954/MAX6955は、4線式と2線式のシリアルインタフェースのLEDドライバであり、最大7セグメント、14セグメント、および16セグメントのLED桁、あるいは16x8のLEDの配列を制御します。ドライバは、5つのI/Oエキスパンダ(GPIO)ポートを備え、またこれらのポートの一部または全部を使用して最大32のキースイッチを自動的にスキャンしてデバウンスするためのロジックも備えています。このロジックには、割込み出力端子を経由してシステムプロセッサにキーのデバウンスを通知するオプション機能があります。ここで説明する手法は、特別なダイオードを追加することによって、MAX6954/MAX6955の機能を32から80以上のキーに拡張するものです。
P0 | P1 | P2 | P3 | |
LED Output O0 | SW A1 | SW B1 | SW C1 | SW D1 |
LED Output O1 | SW A2 | SW B2 | SW C2 | SW D2 |
LED Output O2 | SW A3 | SW B3 | SW C3 | SW D3 |
LED Output O3 | SW A4 | SW B4 | SW C4 | SW D4 |
LED Output O4 | SW A5 | SW B5 | SW C5 | SW D5 |
LED Output O5 | SW A6 | SW B6 | SW C6 | SW D6 |
LED Output O6 | SW A7 | SW B7 | SW C7 | SW D7 |
LED Output O7 | SW A8 | SW B8 | SW C8 | SW D8 |
図1. MAX6954/MAX6955への標準32キー接続
表1と図1は、MAX6954/MAX6955への標準キースイッチ接続を示しています。キースイッチ回路は、4 x 8のマトリックス(4列8行)で構成された32のキーを読み取ります。キーマトリックスの8行は、8つのLEDカソード駆動出力(LED Output O0~LED Output O7)によって駆動されます。これらのLEDカソード駆動出力は、複合LED駆動の一部として、順に320µs (定格)の間ローとなり、これによってLEDを順次駆動します。また、これらの駆動出力を使用して、2つのキースイッチのそれぞれ一端をローにプルダウンしています。キーのもう一端は4つの入力端子(P0~P3)に接続され、MAX6954/MAX6955の内部でV+にプルアップされています。スイッチが押された場合、該当するLED Output Ox出力によってP0、P1、P2、またはP3がローにプルダウンされるため、MAX6954/MAX6955はキーが押されたことを検出し、デバウンスを実施します。
スイッチに直列に接続されたダイオードは、複数のキーが同時に押された場合に2つ以上のLEDカソード駆動出力が同時に短絡しないようにしています。たとえば、SW A1とSW A2が同時に押された場合、キーに直列に接続されたダイオードによってLED Output O0がLED Output O1に短絡されることを防止しています(常に少なくとも1つのダイオードに逆バイアスがかかるためです)。通常、ダイオードには、低コストなSOT23のコモンアノードBAW56が実装されます。
MAX6954/MAX6955は、任意の時点で押される(または離される)可能性のある32のキーのいずれの組み合わせも区別して識別します。製品にはこれら32のキーの状態を示せるだけのレジスタしかありません。したがって、このスキャニングトポロジを、MAX6954/MAX6955を設計したときの32キーを超えて拡張する方法がないことは明らかです。このため、より独創的な別の手法を考える必要があります。
具体的には、冗長的な状況を利用することが可能かどうかを探すことになります。多くの場合、アプリケーションに必要なことは、多数のキーの1つが押されたかどうかを検出するということだけです。通常、装置で2つのキーが押された場合、間違って入力したか、あるいは特殊な方法で工場診断モードに移行したかのいずれかです。つまり、冗長的な状況とは、2つのキーが押された場合です。ここで提案する独創的な方法とは、追加キーを、特定のキーのペアが同時に押されたかのように思わせることです。表2と図2の例では、P0とP1、およびP2とP3を組み合わせることによって、16のキーを追加しています。たとえば、SW AB1が押されたとき、SW A1とSW B1が同時に押されたかのようにMAX6954/MAX6955に思わせる必要があります。この拡張アーキテクチャは、元のキーの組み合わせ(たとえば、SW A1とSW B1)が物理的に隣接しておらず、したがって誤って同時に押されることのない限り、正しく機能します。1回のキースキャンパスの結果が確実に解析されるようにするために、MAX6954/MAX6955のデバウンスサイクルタイム以内にキーの/IRQ出力に反応するようにソフトウェアを記述する必要があります。ソフトウェアの/IRQ反応が遅いと、2つのキーが同時に押されたのか(追加した特別キーの識別)、同じ2つのキーが連続して押されたのかを区別することができなくなります。どちらの場合でも、キーデバウンスレジスタ0x08~0x0Bは、各キーに対応するビットのセットを示すだけです
P0 | P1 | P2 | P3 | P0 & P1 | P2 & P3 | |
LED Output O0 | SW A1 | SW B1 | SW C1 | SW D1 | SW AB1 | SW CD1 |
LED Output O1 | SW A2 | SW B2 | SW C2 | SW D2 | SW AB2 | SW CD2 |
LED Output O2 | SW A3 | SW B3 | SW C3 | SW D3 | SW AB3 | SW CD3 |
LED Output O3 | SW A4 | SW B4 | SW C4 | SW D4 | SW AB4 | SW CD4 |
LED Output O4 | SW A5 | SW B5 | SW C5 | SW D5 | SW AB5 | SW CD5 |
LED Output O5 | SW A6 | SW B6 | SW C6 | SW D6 | SW AB6 | SW CD6 |
LED Output O6 | SW A7 | SW B7 | SW C7 | SW D7 | SW AB7 | SW CD7 |
LED Output O7 | SW A8 | SW B8 | SW C8 | SW D8 | SW AB8 | SW CD8 |
特別キーのそれぞれにデュアルダイオード(低コストなSOT23のコモンカソードBAV70など)が必要となります。スイッチが押されたとき、このデュアルダイオードがP0とP1 (またはP2とP3)をローにプルダウンします。
図2. MAX6954/MAX6955への拡張48キーの接続"
図2(表2)の方式では、P0とP1、およびP2とP3を組み合わせることによって、16のキーが追加されています。実際には、P0~P3のキースキャン入力について可能な2つのキーの組み合わせは、さらに4通りあります。2つのキーの組み合わせ(6通り)をすべて使用すると、表3に示すように、キーの数を80スイッチに拡張することができます。図3は、6つの特別キーをLED Output O0の行に接続する方法を示しています。ここでも、特別キーのそれぞれが1つのデュアルダイオードを使用します。
P0 | P1 | P2 | P3 | P0 & P1 | P0 & P2 | P0 & P3 | P1 & P2 | P1 & P3 | P2 & P3 | |
LED Output O0 | SW A1 | SW B1 | SW C1 | SW D1 | SW AB1 | SW AC1 | SW AD1 | SW BC1 | SW BD1 | SW CD1 |
LED Output O1 | SW A2 | SW B2 | SW C2 | SW D2 | SW AB2 | SW AC2 | SW AD2 | SW BC2 | SW BD2 | SW CD2 |
LED Output O2 | SW A3 | SW B3 | SW C3 | SW D3 | SW AB3 | SW AC3 | SW AD3 | SW BC3 | SW BD3 | SW CD3 |
LED Output O3 | SW A4 | SW B4 | SW C4 | SW D4 | SW AB4 | SW AC4 | SW AD4 | SW BC4 | SW BD4 | SW CD4 |
LED Output O4 | SW A5 | SW B5 | SW C5 | SW D5 | SW AB5 | SW AC5 | SW AD5 | SW BC5 | SW BD5 | SW CD5 |
LED Output O5 | SW A6 | SW B6 | SW C6 | SW D6 | SW AB6 | SW AC6 | SW AD6 | SW BC6 | SW BD6 | SW CD6 |
LED Output O6 | SW A7 | SW B7 | SW C7 | SW D7 | SW AB7 | SW AC7 | SW AD7 | SW BC7 | SW BD7 | SW CD7 |
LED Output O7 | SW A8 | SW B8 | SW C8 | SW D8 | SW AB8 | SW AC8 | SW AD8 | SW BC8 | SW BD8 | SW CD8 |
図3. MAX6954/MAX6955への拡張80キーの接続
しかし、特別キーを識別するために、なぜキーの二重押しに限定するのでしょうか? 3つおよび4つのキーの組み合わせを、キーの二重押しの代わりに、あるいは二重押しに加えて使用することもできます。表4は、これらの特別な構成を示しています。3つのキーの組み合わせ(4通り)はトリプルダイオードを必要とし、4つのキーの組み合わせはクワッドダイオードを必要とすることに留意してください。
P0 & P1 & P3 | P0 & P1 & P4 | P0 & P2 & P3 | P1 & P2 & P4 | P0 & P1 & P2 &P3 | |
LED Output O0 | SW ABC1 | SW ABD1 | SW ACD1 | SW BCD1 | SW ABCD1 |
LED Output O1 | SW ABC2 | SW ABD2 | SW ACD2 | SW BCD2 | SW ABCD2 |
LED Output O2 | SW ABC3 | SW ABD3 | SW ACD3 | SW BCD3 | SW ABCD3 |
LED Output O3 | SW ABC4 | SW ABD4 | SW ACD4 | SW BCD4 | SW ABCD4 |
LED Output O4 | SW ABC5 | SW ABD5 | SW ACD5 | SW BCD5 | SW ABCD5 |
LED Output O5 | SW ABC6 | SW ABD6 | SW ACD6 | SW BCD6 | SW ABCD6 |
LED Output O6 | SW ABC7 | SW ABD7 | SW ACD7 | SW BCD7 | SW ABCD7 |
LED Output O7 | SW ABC8 | SW ABD8 | SW ACD8 | SW BCD8 | SW ABCD8 |
注:説明した拡張キーをそれぞれ接続することで、同じLEDカソード駆動出力(LED Output O0~LED Output O7)上のキーの複数押下をシミュレートしています。このように接続することで、キーの複数押下の組み合わせに関与するキーが同時にスキャンされてデバウンスが実施されるため、結果は同時に表示されます。異なるLEDカソード駆動出力によってスキャンされるキーの複数押しを特別キーでシミュレートする場合には、キーが同時にデバウンスされないため、信頼性は低下します。