•
•
•
マキシム >
設計者のためのライブラリ >
アプリケーションノート
>
高速インターコネクト
高速信号処理
キーワード: PDA, マルチ機能, ゲームキー, ゲーム制御, キースイッチコントローラ, アドオン, スマートフォン, キーパッド制御, 自動インクリメント, キー解除検出, GPO
関連製品
APP 4054: Oct 23, 2007
ダウンロード、PDFフォーマット (50kB)
アプリケーションノート4054
PDA/スマートフォンのマルチファンクションキーおよびゲームキーのためのMAX7359の用法:プログラミングガイド
要約:携帯電話用のチップセットのキーパッド制御特性は多くの場合、オペレーティングシステムまたはアプリケーションが複数のキー押下(例:Ctrl-Alt-Delおよびゲーム制御)を検出する必要がある場合にその限界まで使用されます。MAX7359はPDA/スマートフォンのQWERTYキーパッドのマルチファンクションキーおよびゲーム用のキーを実装するための理想的なアッドオンのキースイッチコントローラです。MAX7359はI²C経由で携帯電話用のチップセットに接続することができ、簡単なプログラムの作成で所望の機能セットを選択して使用することができます。
MAX7359の概要
MAX7359 は低消費電力の特殊用途のキースイッチコントローラであり、携帯電話、プリンタ、およびその他の携帯アプリケーションに適しています。このデバイスを使うと最大64個のキーを実現することができます。各キーにはキーの押下と開放で別のコードが割り当てられます。複数のキーを同時に押下および/または異なった順序で保持および開放とすることができます。最大16個のキー押下および開放入力をFIFOレジスタに保持可能です。キーの動作情報はMAX7359によって集められて簡単なI²Cインタフェース経由で読み取られますが、1回のキー押下または開放に1バイトが割り当てられます。デバイスのノイズ耐性を強化するために、キー押下の検出はバウンス保護されています。具体的には、キー押下のたびに短時間に2度スキャンされて検出されます。
電力消費を下げるために、MAX7359はキー動作の待機中はスリープモードであり、1.2µAしか消費しません。キーを押下すると、このコントローラは200µs以内に起動してキー押下/開放の情報を収集します。0.256s~8sに定めるキー動作後のアイドル時間の後、デバイスは再びスリープモードになります。FIFO内のキー情報はスリープモードでもアクセスすることができます。ホストが常時監視しなくてよいように、キー押下のたびに、またはFIFOが既定のエントリ数に達した場合、割込み信号を発生することができます。割込み信号はデバイスをI²C経由で読み取るか、またはFIFOが空になったときクリアされます。
MAX7359はMAX7349 のエンハンスバージョンであり、1.8Vから~3.3Vの電源範囲で動作します。図1 はI²CによるMAX7359のホストとの標準的な接続を示しています。I²Cインタフェースはオープンドレインのポートであるため、MAX7359はホストとさまざまな電源電圧でインタフェースすることができます。
図1. I²CインタフェースによるMAX7359の接続
MAX7359のプログラミング
キーの動作情報はFIFOに含まれており、所望の動作機能はコントローラ内部の他のレジスタで定義されます。FIFOレジスタのアドレスは0x00です。構成レジスタのアドレスは0x01であり、その他の動作機能はアドレスが0x02~0x06のレジスタで定義されます。
MAX7359のレジスタの内容はI²Cの書込みコマンドで定められ、I²C読取りコマンドで確認されます。I²Cの書込みコマンドはコントローラのデバイスアドレスで始まり、その後にレジスタアドレスが続きます。デバイスアドレスはAD0端子の接続の仕方で0x70、0x74、0x78、または0x7Cになります。レジスタアドレスに続いて、幾つかのデータバイトがあります。データバイトが1つしかない場合は、先行バイトで決められるレジスタに格納されます。データバイト数が複数の場合は、最初のバイトは定められたレジスタに格納され、次のバイトはアドレスが1つ大きい数のレジスタに格納され、以下同様です。この動作はコントローラのレジスタアドレスの自動増加機能によります。つまり、0x70、0x01、0x0A、および0x00の書込みコマンドはレジスタ0x01に0x0Aバイトを、レジスタ0x02に0x00バイトを格納します。レジスタアドレスの自動増加機能はすべての書込みおよび読取りコマンドの両方に対して適用されますが、FIFOアドレスの0x00は例外です。レジスタアドレスの後にデータバイトがないI²Cコマンドは通常次の読取りコマンドのレジスタアドレスを設定するために使われます。
I²Cの読取りコマンドはMAX7359のデバイスアドレスで始まり、その後に1個または複数のデータバイトが続きます。データバイトが1個のみの場合、データはデータバイトを持たない先行の書込みコマンドで定められるレジスタから読み出されます。そうでない場合は、書込みまたは読出しコマンドでアクセスされた最後のレジスタから読み出されます。1個を超えるデータがある場合、最初のバイトは定められたレジスタから読み出され、レジスタアドレスの自動増加機構はFIFOレジスタを除いてデータバイトの残りに適用されます。つまり、FIFOレジスタの0x00を繰り返して読み取るためにレジスタアドレスの再設定は不要であるということです。
電源オンリセットの間、MAX7359はキー開放、キー押下ウエイクアップの動作の用意ができており、自動シャットダウン機能はイネーブル(デフォルト設定)となっています。さらに、キースイッチの制御用にアクティブなコラムは2つしかなく、使用可能なキーは合計で16個となります。6個のコラム/GPO (汎用出力)ポートの残りはロジックハイでGPOモード となります。次に示すI²Cコマンド構造は6個のコラム/GPOポートをアクティブにするために使用することができ、合計で64個のキーとなります。
// A Write Command to disable GPO ports
0x70 // MAX7359 device address
0x02 // GPO enable and debounce register
0x00 // Disable GPO ports and 9ms debounce time
次に示すI²CコマンドはFIFOエントリの読取りに使うことができます。
// A write command to set the register address to 0x00 and a read command from the FIFO
// A write 0 data byte to address 0x00 command
0x70 // MAX7359 device address
0x00 // FIFO register
// A read one byte from FIFO command
0x71 // MAX7359 device address
0xXX // A data byte from the FIFO. The value depends on what is there
次のI²CコマンドはMAX7359が64個のキーの動作をイネーブルとしてキーを押下したときに割込み信号を送信するために使うことができます。割込み信号はMAX7359がI²Cインタフェースを通して読み取られるとクリアされます。
// Initialization
More = 0x80 // More keys in the FIFO mask
Key = 0x00 // Key code variable
0x70, 0x02, 0x00 // Disable GPO ports
0x70, 0x03, 0x02 // Enable interrupt upon a keypress
0x70, 0x01, 0x2A // Enable interrupt cleared once read
// When an interrupt is received
0x70, 0x00 // Set the register address to 0x00
Loop: 0x71, 0xXX // Read the FIFO register
Key = 0xXX // Assign the key code to a variable
Save the key code // Save the key code for application
If (Key | More) go to Loop // If not the last entry, read more key codes
表1. キー押下でFIFOにエントリされる最後のコード
Col. 0
Col. 1
Col. 2
Col. 3
Col. 4
Col. 5
Col. 6
Col. 7
Row 0
0x00
0x08
0x10
0x18
0x20
0x28
0x30
0x38
Row 1
0x01
0x09
0x11
0x19
0x21
0x29
0x31
0x39
Row 2
0x02
0x0A
0x12
0x1A
0x22
0x2A
0x32
0x3A
Row 3
0x03
0x0B
0x13
0x1B
0x23
0x2B
0x33
0x3B
Row 4
0x04
0x0C
0x14
0x1C
0x24
0x2C
0x34
0x3C
Row 5
0x05
0x0D
0x15
0x1D
0x25
0x2D
0x35
0x3D
Row 6
0x06
0x0E
0x16
0x1E
0x26
0x2E
0x36
0xBE*
Row 7
0x07
0x0F
0x17
0x1F
0x27
0x2F
0x37
0xBF*
* FIFOが空であるかどうかを知るために複数回読み取ります。
表2. キー開放でFIFOにエントリされる最後のコード
Col. 0
Col. 1
Col. 2
Col. 3
Col. 4
Col. 5
Col. 6
Col. 7
Row 0
0x40
0x48
0x50
0x58
0x60
0x68
0x70
0x78
Row 1
0x41
0x49
0x51
0x59
0x61
0x69
0x71
0x79
Row 2
0x42
0x4A
0x52
0x5A
0x62
0x6A
0x72
0x7A
Row 3
0x43
0x4B
0x53
0x5B
0x63
0x6B
0x73
0x7B
Row 4
0x44
0x4C
0x54
0x5C
0x64
0x6C
0x74
0x7C
Row 5
0x45
0x4D
0x55
0x5D
0x65
0x6D
0x75
0x7D
Row 6
0x46
0x4E
0x56
0x5E
0x66
0x6E
0x76
0xFE*
Row 7
0x47
0x4F
0x57
0x5F
0x67
0x6F
0x77
0xFF*
* FIFOが空であるかどうかを知るために複数回読み取ります。
表3. FIFOに複数のエントリがあるキー押下コード
Col. 0
Col. 1
Col. 2
Col. 3
Col. 4
Col. 5
Col. 6
Col. 7
Row 0
0x80
0x88
0x90
0x98
0xA0
0xA8
0xB0
0xB8
Row 1
0x81
0x89
0x91
0x99
0xA1
0xA9
0xB1
0xB9
Row 2
0x82
0x8A
0x92
0x9A
0xA2
0xAA
0xB2
0xBA
Row 3
0x83
0x8B
0x93
0x9B
0xA3
0xAB
0xB3
0xBB
Row 4
0x84
0x8C
0x94
0x9C
0xA4
0xAC
0xB4
0xBC
Row 5
0x85
0x8D
0x95
0x9D
0xA5
0xAD
0xB5
0xBD
Row 6
0x86
0x8E
0x96
0x9E
0xA6
0xAE
0xB6
0xBE*
Row 7
0x87
0x8F
0x97
0x9F
0xA7
0xAF
0xB7
0xBF*
* FIFOが空であるかどうかを知るために複数回読み取ります。
表4. FIFOに複数のエントリがあるキー開放コード
Col. 0
Col. 1
Col. 2
Col. 3
Col. 4
Col. 5
Col. 6
Col. 7
Row 0
0xC0
0xC8
0xD0
0xD8
0xE0
0xE8
0xF0
0xF8
Row 1
0xC1
0xC9
0xD1
0xD9
0xE1
0xE9
0xF1
0xF9
Row 2
0xC2
0xCA
0xD2
0xDA
0xE2
0xEA
0xF2
0xFA
Row 3
0xC3
0xCB
0xD3
0xDB
0xE3
0xEB
0xF3
0xFB
Row 4
0xC4
0xCC
0xD4
0xDC
0xE4
0xEC
0xF4
0xFC
Row 5
0xC5
0xCD
0xD5
0xDD
0xE5
0xED
0xF5
0xFD
Row 6
0xC6
0xCE
0xD6
0xDE
0xE6
0xEE
0xF6
0xFE*
Row 7
0xC7
0xCF
0xD7
0xDF
0xE7
0xEF
0xF7
0xFF*
* FIFOが空であるかどうかを知るために複数回読み取ります。
キーコードの0x3FはFIFO空のためにリザーブされています。
キーコードの0x7FはFIFOのオーバフローのためにリザーブされています。
キーコードの0x3Eはキーのリピートのためにリザーブされており、それは最後のFIFOエントリです。
キーコードの0x7EはFIFO内に複数エントリがある場合のキーリピートのためにリザーブされています。
フィードバックをお寄せください。 内容に満足されましたか、あるいは満足されていませんか?もっと良いページにできると思いますか?あるいは、単なるコメントでも結構です。フィードバックをお待ちしています。 —マキシムはお客様からいただく訂正、提案を元に改善していきます。
このページを評価し、フィードバックを送信する。
自動アップデート
お客様が関心のある分野でアプリケーションノートが新規に掲載された際に自動通知Eメールの受信を希望する場合は、EE-Mail™にご登録ください。
その他の情報
APP 4054: Oct 23, 2007
ダウンロード、PDFフォーマット (50kB)
AN4054,
AN 4054,
APP4054,
Appnote4054,
Appnote 4054
プライバシーポリシー
•
法的お知らせ
Copyright © 2008 by Maxim Integrated Products, Dallas Semiconductor