AoiSayaのアイコン画像

I2Cで制御できるI/O拡張デバイスを自作する

AoiSaya 2021年07月07日に作成  (2021年07月07日に更新)

I2Cで制御できるI/O拡張デバイスを自作する

I2C to 7SEGx2 and GPIO using GreenPAK. (緑豆壱拾仇號)「7segx2 controller」

はじめに

I2Cで2桁7セグを制御したりGPIOを拡張したりできるやつをISP版GreenPAKでつくってみました。
音階を出せるBeepや入力信号割込みをサポートしています。

使用デバイスは、SLG46826V(STQFN) または SLG46826G(TSSOP)です。

内蔵した機能

  • I2Cバスで7セグLEDを点灯したりGPIO機能を使うことができます
  • 2桁7セグ(5621AS)の各セグメントの任意点灯が可能です
  • 任意周波数のBeep出力が可能です
  • 最大5chのGPO/GPIOに対応しています
  • LED付きスイッチに対応可能です
  • GPIO入力割り込みに対応しています
  • 各種プルアップ抵抗を内蔵しています

本デザインの使用イメージ

7セグLEDとLEDつきスイッチを各3個とBeep用スピーカーの接続例です。
左側のマイコンには好きなマイコンが使えます。
キャプションを入力できます

ブレッドボード上で再現した例

キャプションを入力できます

部品一覧

部品名 型番等 数量 備考
GreenPAK SLG46826V-DIP 1 Dialog直販で購入

仕様や使い方など

7セグメントLED対応

7セグメントLEDは、手持ちの5621ASをベースに設計しました。
10ピンの7セグメントLEDであれば、他のピン配置のものもピンアサインを変更することで対応可能と思います。
当初は7セグデコーダを内蔵することを考えていましたが、16進数に対応するには回路が足りなかったこと、マイコンに接続するならマイコン側でデコードすればよいことから、各セグメントを直接オンオフする仕様にしました。

スイッチ対応

I2C接続のGPIOは低速ですが、LEDの点灯やスイッチ入力に使うには十分です。そこで、LEDとスイッチのいずれかもしくは両方がつなげられるような仕様としてみました。
また、I/O切り替えと1/0の切り替えが連動しているI/OエキスパンダーPCF8574Fと同様の仕様を採用しました。すなわち、入出力の切り替えとHi/Lowの切り替えを1ビットのレジスタで行うことができます。この仕掛けは、I/O端子をプルアップすることで実現しています。
具体的には、IO設定を双方向かつ10kΩプルアップとし、IO端子のINにはGNDをつなぎ、入力属性をLow voltage digital inputとしています。こうすることで、IO端子のOE=0の時は、IO端子は入力モードとなり、EXT IN/OUTは内蔵プルアップによりHighが出力されます。また、EXT IN/OUTにスイッチや他のIOの出力を繋ぐと、EXT IN/OUTの状態をI2Cでリードすることができます。
IO端子のOE=1の時は、IO端子は出力モードとなり、EXT IN/OUTはINにつないだGNDが反映され、Lowが出力されます。

GPIO入力割り込み対応

10番ピンを割り込みフラグ出力に設定(アドレス0x7A[7]=1)することで、7番、13番、20番ピンのうち入力に設定した端子の状態が変化したときに、10番ピンの状態をLowからHighに変化させることができます。HighからLowに戻すにはレジスタアドレス0x7A[4]を0→1または0→1に変化させてください。

Beep対応

12番ピンとGNDの間、または12番ピンと13番ピンの間(差動ドライブ)に圧電スピーカーを繋ぐことでBeep音を出すことができます。どの端子をBeepに使うかはレジスタアドレス0x7A[6:5]で設定します。BeepのON/OFFはレジスタアドレス0x7A[3:2]で切り替えます。差動ドライブの方が音は大きくなります。また、16ビットカウンタのカウント値をレジスタ設定(アドレス0xA5,0xA6)することで、98Hz(G2)~16744Hz(C10)以上の周波数の設定が可能です。設定値は、data = 25000000/4/frequency[Hz]-2 で計算してください。

コンフィギュレーションレジスタ

レジスタの詳細はGitHubのREADME.MDもしくはEXCELファイルをご参照ください。

GreenPAKの設計

GreenPAKはCPLDのようなプログラマブルデバイスです。汎用ロジックIC数個で組めるような回路の置き換えに適しており、簡単な回路がこれ一個で実現できます。

回路図とピン配を示します。
回路図

PU10K: 約10kΩ PullUp
PU1M: 約1MΩ PullUp

モジュール化

DIP版のSLG46826V-DIPは購入時に最初から足がついています。
設計をI2Cで書き込むだけで、基板設計もはんだ付けも一切省略してオレオレモジュールが作れてしまいます。
ブレッドボードにさして書き込んだら、すぐにマイコン用インタフェースとして使えます。

キャプションを入力できます

おわりに

誰でもお試しいただけるように設計データをGitHubに公開しています。
https://github.com/AoiSaya/GreenPAK_I2C27SEG2
オレオレモジュール作成のご参考になれば幸いです。

もし少量のGreenPAKの入手にお困りだったり、この設計を書き込んだDIP基板を販売して欲しい方がいらしたらご相談ください。

免責事項

本記事の正確性については努力しておりますが、当方は利用者が当記事の情報を用いて行う一切の行為について何ら責任を負うものではありません。本記事の情報の利用、内容によって、利用者にいかなる損害、被害が生じても、著者は一切の責任を負いません。ご自身の責任においてご利用いただきますようお願いいたします。

Author

GitHub/AoiSaya
Twitter ID @La_zlo

AoiSayaのアイコン画像
こころの赴くままに豆をまきます。投稿内容は趣味と煩悩に基づいており、無保証です。また、所属団体を代表するものではありません。
  • AoiSaya さんが 2021/07/07 に 編集 をしました。 (メッセージ: 初版)
  • AoiSaya さんが 2021/07/07 に 編集 をしました。 (メッセージ: パッケージ写真がくどいので減らした)
  • Opening
    3duilabのアイコン画像 3duilab 2021/07/08

    GreenPAKは面白いデバイスですね、今まで知らなかったです。まだあまり売ってないのかな?ありがとうございます。

    0 件の返信が折りたたまれています
  • Opening
    AoiSayaのアイコン画像 AoiSaya 2021/07/10

    はじめまして。
    秋葉原などの店舗販売してるお店が扱ってくれると嬉しいんですけど、現状では通販でしか買えないようですね。
    響く人には響くデバイスだと思っています。興味を持ってくださってうれしいです。

    0 件の返信が折りたたまれています
ログインしてコメントを投稿する