MAX6959 LEDディスプレイドライバのキースキャンを8キーから12キーに拡張

要約

複数のキーの押下をマッピングすることによって、MAX6959 LEDディスプレイドライバのキースキャン機能を8キーから12キーに拡張することができます。このアプリケーションノートでは、スキャン機能の拡張方法について詳細に説明します。

MAX6959は、4桁9セグメントのLEDドライバですが、最大8つのキースイッチのスキャンとデバウンスも自動的に実施することができます。またオプションとして、割込み出力端子を用いて、デバウンスされたキーをシステムプロセッサに通知することができます(ピンコンパチブルである類似のMAX6958も同様のLEDを駆動することができますが、キースキャンの機能はありません)。このアプリケーションノートに記載した手法を使えば、MAX6959の機能が8キーから12キーに拡張されます。このとき、特別キー1つにつき1つのデュアルダイオードが追加されます。

表1. MAX6959 LEDディスプレイドライバへの標準8キーの接続

  INPUT1 INPUT2
DIG0/SEG0 Key0 Key4
DIG1/SEG1 Key1 Key5
DIG2/SEG2 Key2 Key6
DIG3/SEG3 Key3 Key7

図1. MAX6959 LEDディスプレイドライバへの標準8キーの接続
図1. MAX6959 LEDディスプレイドライバへの標準8キーの接続

表1図1は、MAX6959への標準キースイッチ接続を示しています。キースイッチ回路は、2 x 4のマトリックス(2列4行)で構成された8つのキーを読み取ります。キーマトリックスの4行は、4つのLEDカソード駆動出力(DIG0/SEG0~DIG3/SEG3)によって駆動されます。これらのLEDカソード駆動出力は、複合LED駆動の一部として順に320μs (定格)の間ローとなり、これによってLEDを順次駆動します。また、これらの駆動出力を使用して、2つのキースイッチのそれぞれ一端をローにプルダウンしています。キーのもう一端は2つの入力端子(INPUT1とINPUT2)に接続され、MAX6959の内部でV+にプルアップされています。スイッチが押された場合、該当するDIG_/SEG_出力によってINPUT1またはINPUT2がローにプルダウンされるため、MAX6959はキーが押されたことを検出し、デバウンスを実施します。

スイッチに直列に接続されたダイオードは、複数のキーが同時に押された場合に2つ以上のLEDカソード駆動出力が同時に短絡しないようにしています。たとえば、Key0とKey1が同時に押された場合、キーに直列に接続されたダイオードによってDIG0/SEG0がDIG1/SEG1に短絡されることを防止しています(常に少なくとも1つのダイオードに逆バイアスがかかるためです)。通常、ダイオードには、低コストなSOT-23のコモンアノードBAW56が実装されます。

MAX6959は、任意の時点で押される(または離される)可能性のある8つのキーのいずれの組み合わせも区別して識別します。製品にはこれら8つのキーの状態を示す8ビットレジスタしかありません。したがって、このスキャニングトポロジを、MAX6959を設計したときの8キーを超えて拡張する方法がないことは明らかです。このため、このような場合に自尊心のあるエンジニアなら誰でも実行することを行う必要があります。そうです、ごまかすのです!

具体的には、冗長的な状況を利用することが可能かどうかを探すことになります。多くの場合、アプリケーションに必要なことは、多数のキーの1つが押されたかどうかを検出するということだけです。通常、装置で2つのキーが押された場合、間違って入力したか、あるいは特殊な方法で工場診断モードに移行したかのいずれかです。つまり、冗長的な状況とは、2つのキーが押された場合です。ここで提案する「ごまかし」とは、4つの追加キーを、特定のキーのペアが同時に押されたかのように思わせることです。これを表2に示します。たとえば、Key8が押されたとき、Key0とKey4が同時に押されたかのようにMAX6959に思わせる必要があります。この拡張アーキテクチャは、元のキーの組み合わせ(たとえば、Key0とKey4)が物理的に隣接しておらず、したがって誤って同時に押されることのない限り、正しく機能します。1回のキースキャンパスの結果が確実に解析されるようにするために、30.3msの最小デバウンスサイクルタイム以内にキーのIRQに反応するようにソフトウェアを記述する必要があります。ソフトウェアのIRQ反応が遅いと、2つのキーが同時に押されたのか(追加した特別キーの識別)、同じ2つのキーが連続して押されたのかを区別することができなくなります。どちらの場合でも、キーデバウンスレジスタ0 x 08は、各キーに対応するビットのセットを示すだけです。

表2. MAX6959 LEDディスプレイドライバへの拡張12キーの接続

  INPUT1 INPUT2 INPUT1 and INPUT2
DIG0/SEG0 Key0 Key4 Key8
DIG1/SEG1 Key1 Key5 Key9
DIG2/SEG2 Key2 Key6 Key10
DIG3/SEG3 Key3 Key7 Key11

この回路を図2に示します。キーのそれぞれにデュアルダイオード(低コストなSOT-23のコモンカソードBAV70など)が必要となります。スイッチが押されたとき、このデュアルダイオードがINPUT1とINPUT2をローにプルダウンします。

図2. MAX6959 LEDディスプレイドライバへの拡張12キーの接続
図2. MAX6959 LEDディスプレイドライバへの拡張12キーの接続

最後に、注意すべき点が1つあります。4つの拡張キーのそれぞれを接続することで、4つのLEDカソード駆動出力(DIG0/SEG0~DIG3/SEG3)のそれぞれに存在する2つのキーの二重押しをシミュレートしています。このように接続することで、各キーペアが常に同時にスキャンされてデバウンスが実施されます。異なるLEDカソード駆動出力によってスキャンされるキーの二重押しを特別キーでシミュレートする場合には、信頼性は低下します。キースキャンは順次実行されるため、2つのキーが同時に押される特別キーは、一方のLEDカソード駆動でデバウンスサイクルを見逃して、ただしもう一方のLEDカソード駆動で正しくデバウンスが実施される可能性があります。したがって、このようなキーの二重押しは、キーの二重押しとして判断されず、2つのキーの連続押しとして判断されます。推奨した接続方式では、このようなことは起こりません。2重キーを表す各キーペアのデバウンスが同時に実施されるためです。