WSN176 I2C 16ビット I/Oエクスパンダ




背面


販売中

  • I2C接続でデジタルI/Oポートを16ビット拡張するボードです。
  • 標準的なI2C制御ですので、I2Cマスタとして作動すれば、ホスト側のCPUの種類は問いません(PIC、AVR、H8などI2Cマスタとして作動するものなら制御可)。
  • ブレッドボードには対応していません。ブレッドボードには#186をご使用ください。

【主な仕様】

【関連、類似品】

【ドキュメント】

基板レイアウト

この図には描かれていますが、 パワー・オン・リセット用のC3、D1は通常は実装不要です(写真参照)。
ピン・ヘッダやフラット・ケーブル・コネクタを使ってI/O信号を取り出せます。

MCP23017ははんだ付け面に実装します。

I2Cアドレスはジャンパで変更できます。

I2Cコネクタ結線
 1. GND
 2: VCC
 3. SCL
 4: SDA

I2Cアドレス設定用のジャンパJP1〜JP3はショートしたものが"L"レベル("0")になります。JP1がLSB、JP3がMSB側です。全部ショートすると"0"、全部オープンの場合は"7"になります。アドレスの上位はMCP23017は0x20に固定ですので、ジャンパで設定できるアドレスとしては、0x20〜0x27の8通りになります
C言語プログラム ホスト(マスタ)例 プログラム例

"I2CStart()"、"I2CStop"は順にスタート・コンディション、ストップ・コンディションを発行する関数、"I2CWrite()"は1バイト マスタ送信する関数とします。初期化などは省略しています。

#176のアドレスはジャンパJP1〜JP3をすべてショートして0x20に設定しているものとします。この場合、コントロール・バイト(R/W = "W")の値は0x40となります。

  // GPA0〜GPA7の全ポートを出力ポートに設定して
  // オール"1"、オール"0"を順に出力する例

  // GPA0〜GPA7の全ポートを出力ポートに設定
  I2CStart(0);      // スタート・コンディション発行
  I2CWrite(0x40);     // CB(W) adrs=0x20
  I2CWrite(0x00);     // reg-adrs IODIRA選択
  I2CWrite(0x00);     // 設定値 0x00
  I2CStop();       // ストップ・コンディション発行

  // GPA0〜GPA7の全ポートに"1"を出力
  I2CStart(0);      // スタート・コンディション発行
  I2CWrite(0x40);     // CB(W) adrs=0x20
  I2CWrite(0x12);     // reg-adrs GPIOA選択
  I2CWrite(0xFF);     // 設定値 0xFF
  I2CStop();       // ストップ・コンディション発行

  // 続いてGPA0〜GPA7の全ポートに"0"を出力
  I2CStart(0);      // スタート・コンディション発行
  I2CWrite(0x40);     // CB(W) adrs=0x20
  I2CWrite(0x12);     // reg-adrs GPIOA選択
  I2CWrite(0x00);     // 設定値 0x00
  I2CStop();       // ストップ・コンディション発行

また、#146 SIO-I2Cブリッジを使ってパソコンのターミナル・ソフト(windowsハイパーターミナルなど)から操作することもできます。この場合のコマンド文字列は、順に次のようになります。ただし、[Enter]はEnterキーの入力を表しています。また、#146からの応答メッセージは省略しています。

 s0 w40 w00 w00 p[Enter]        GPAの全ポートを出力ポートに設定

 s0 w40 w12 wFF p[Enter]        GPAの全ポートにオール"1"を出力

 s0 w40 w12 w00 p[Enter]        GPAの全ポートにオール"0"を出力

#146 SIO-I2Cシリアル・コマンド 一覧
s0 スタート・コンディション発行  
s1 リピート・スタート・コンディション発行  
p ストップ・コンディション発行  
wXX バイト・ライト XXは16進2桁の文字、ACK/NAKの応答あり
r0 バイト・リード(ACK応答) リード・データの応答あり
r1 バイト・リード(NOACK応答) リード・データの応答あり
コマンドは、例のようにスペースで区切って複数を続けて送信することも、"s0[Enter]"のように1つずつ送信することもできます。ただし、文字バッファの制限により、1回の文字列([Enter]まで)の文字数は、38文字を超えることはできません。

FED Wiz-Cのサンプル・ソース・ファイル
#146でデバッグに使用した実際のプログラム(xxx_User.cのみ)です。1秒ディレイした後にGPA0〜GPA3に接続した4個のLEDを200ms毎に2進数で点灯させます(0000〜1111)。このプログラムでは書籍「マイコンの1線2線3線インターフェース活用入門」で作成したI2CドライバをWiz-C(Ver.14)用に変更して使用しています。

146t176.c.s-jis.zip (圧縮するまでもありませんが、直接txtファイルが参照できないので圧縮してあります)

PIC、H8のドライバ、アプリのソースファイル(書籍掲載のもの)などはこちらからダウンロードできます。→ソースファイルDL

AVRのI2Cマスタ プログラム (07/08/13)
ATtiny2313(#179基板使用)のI2Cマスタのアセンブリ言語のサンプルを掲載しました。

AVRアセンブラのI2Cプログラム・サンプル

その他
RESET端子を"L"レベル→"H"レベルに設定すると、コントローラはリセットされ、GPA、GPBは入力ポートに設定されます。また、IOCON.BANK=0に設定され、レジスタ・アドレスは「連続」にマッピングされます。

MCP23017にはパワー・オン・リセット回路が内蔵されているため、D1、C3は実装不要ですが、リセットがかかりにくい場合はD1、C3を実装することができます。
この場合、リセット解除までの時間が延びるため、ホスト側でMCP23017のリセット解除前に通信しようとしても、通信できません(ACKが返れば正常に起動しています)。

I2CとSPIとは?

【使用例】

【ご注意】

【プリント基板、部品販売】

販売中

ID 商品名
在庫
単価
数 量 購 入 説 明
P176 #176 I2C 16ビット I/Oエクスパンダ プリント基板 300
基板のみ
P176-1 #176 I2C 16ビット I/Oエクスパンダ プリント基板 + MCP23017(SOIC) × 500
基板+MCP23017
6個以上ご購入の場合は、一旦5個で「購入」ボタンをクリックして、かごの内容を確認したあと、「戻る」ボタンで再びこのページに戻り、追加の個数を再設定してから再び「購入」ボタンをクリックしてください。この操作で個数が追加されます。

一括入力
ID 商品名
在庫
単価
数 量 説 明
P176 #176 I2C 16ビット I/Oエクスパンダ プリント基板 300 基板のみ
P176-1 #176 I2C 16ビット I/Oエクスパンダ プリント基板 + MCP23017(SOIC) × 500 基板+MCP23017

発送、送料について
送料(A) クロネコメール便(少量時のみ) 200円 下記説明参照
送料(B) 郵便小包 エクスパック 600円
プリント基板のみや少量の部品の場合の送料は(A)か(B)をお選びいただけます。基板枚数が多いまたは部品量が多い場合(自動判定)は(B)郵便小包エクスパックのみになります。選択可能なときは精算のページで指定できます。

クロネコメール便の場合、ポスト投函となります(受け取りの際の印鑑、サインは不要)。
通常、エクスパックは出荷日の翌日、クロネコメール便は距離により出荷日を含めて 3〜4日、クロネコメール便(速達)は距離により出荷日を含めて 2〜3日で到着の予定です。