早速キースキャンの方をやってみました。この IC についてのハマりどころなど、概要はこちらをどうぞ。
この機能は、アレイ上に並んだボタンの押下を判定して、シリアルデータとして取り出す機能です。いわばパラ→シリ変換ですね。
めも Ver.2
前の記事に示した PDF ファイルですが、キースキャンのことも少し書いて追記しました。以下にどうぞ。
TM1627使用メモV2
接続
今回は 8bit の DIP スイッチを使用しました。DIP スイッチのどちらか一端をコモンとして K1 に全て接続し、残りは LED で使っていない KS3 〜 KS10 に接続しました。データは読みだすと PDF にあるようなビット位置で吐き出されるので、マイコン内でソフトウェア的に整形してあげます。データシートでは以下のような図で説明がされていました。
データ受信方法
取り敢えず以下にコードを記しておきます。
void getSwitchData(uint8_t *array) {
startCondition();
sendByte(0x42);
dio->setMode(GpioConfig::PinMode::INPUT);
for(int i=0; i<5; i++) {
array[i] = readByte();
}
stopCondition();
dio->setMode(GpioConfig::PinMode::GPIO_OUTPUT);
}
要はスタートコンディション発行後、0x42
のコマンドでキースキャンデータ読み出しモードにして、STB を上げずにそのまま 5Byte のデータを clk の立ち下がりエッジで読み出せばいいのです。
読み出すときは dio のポートモードを INPUT にするのをお忘れなく。
KEYINT
このポートは使っていません。KEYINT はキー入力割り込み発生用の出力ピンです。データシートによると、普段は High であり、キーの押下があると Low に変化するらしいです。外部入力割り込み or GPIO 割り込み で利用できるピンじゃないかなあと思います。
動作の様子
パラレル→シリアル変換と7セグLEDのドライブが1つのICでできた〜 pic.twitter.com/LotpJNYkqX
— しまじゃき (@obknt) October 6, 2019