AoiSaya が 2021年12月09日01時54分13秒 に編集
ライセンスを追加
記事種類の変更
製作品
ライセンスの変更
(CERN-OHL-P 2) CERN Open Hardware Licence Version 2 - Permissive
本文の変更
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基板を販売して欲しい方がいらしたらご相談ください。
# ライセンス等 CERN-OHL-P2とします。 以下の場合はご相談ください。 これらの場合を除き、個人、法人、商用、非商用問わず無料でご利用頂けます。 ・この記事や設計データそのものを販売する場合 ・この設計(軽微な改変を含む)を焼いたデバイスもしくはモジュールを販売する場合
# 免責事項 本記事の正確性については努力しておりますが、当方は利用者が当記事の情報を用いて行う一切の行為について何ら責任を負うものではありません。本記事の情報の利用、内容によって、利用者にいかなる損害、被害が生じても、著者は一切の責任を負いません。ご自身の責任においてご利用いただきますようお願いいたします。 # Author [GitHub/AoiSaya](https://github.com/AoiSaya) [Twitter ID @La_zlo](https://twitter.com/La_zlo)