HDL4316G の使い方
HDL4316Gは、スレーブ側にあるデバイスのアドレスを異なるアドレスに変換します。 ひとつの I2Cバスに接続する
スレーブデイバスのアドレスが固定されていたり、同時接続した個数が設定可能なアドレス数より多い場合でも
ひとつの I2Cバスを共有できるようになります。
I2Cバスについて
I2Cバスは、バス上にあるデバイスで SCLおよび SDAのラインを共有して接続されます。
ホストデバイスが スレーブデバイスにアクセスするときは、ホスト側からアクセスしたいスレーブデバイス側のアドレスを指定します。指定された
スレーブデバイスだけが、応答し、ホストデバイスと通信を行います。
スレーブデバイス側のアドレスは、個々のデバイスを一意に指定するものですから、基本的に同一バス上でアドレスを重複させることができません。
多くのデバイス・チップは、いくつかのデバイスアドレスを選択できるようになっていますが、エンドユーザ向け製品の基板上に実装されたときに、
特定のアドレスのみに固定され、エンドユーザが変更できずに、複数のスレーブデバイスを接続できない場合もあります。
また、設定可能であっても、その設定可能な種類の数を越えて接続することはできません。
このようにスレーブアドレスが重複する場合の解決方法としては、下記のような解決策が考えられます。
- I2Cバススイッチ(マルチプレクサ) を利用し、利用するデバイス毎にバスを切り替える
- SDAまたは SCLとSDAの両方について、利用するデバイス毎に接続・切断を切り替える
- スレーブデバイスのアドレス変換回路を挿入する
HDL4316G は Analog Devices社製のLTC4316を用いて、第3の方法、スレーブデバイスのアドレスを変更する解決策を提供します。
ほかの2案は、目的のデバイスにアクセスするまえに、バスの切り替えや SDA/SCLの接続・切り離しなどの操作が必要になり、
手順を誤ると、目的とは違うデバイスにアクセスしてしまう可能性があります。 HDL416G でアドレス変換すれば、個別の新しい
アドレスを割り付けることができるので、スムーズに、かつ目的のデバイスに確実にアクセスできるようになります。
パーツ配置

No. |
リファレンス |
名称 |
備考 |
1 |
CN1 |
マスタ側 Grove接続コネクタ |
コネクタ 互換品 |
2 |
CN2 |
スレーブ側 Grove接続コネクタ |
コネクタ 互換品 |
3 |
RHTおよび RHB |
変換アドレス設定用抵抗(上位3bit) |
|
4 |
RLTおよび RLB |
変換アドレス設定用抵抗(下位4bit) |
|
5 |
R3, R4 |
スレーブデバイス側 プルアップ抵抗 |
10kΩ 1/10W |
6 |
R1, R2 |
マスタデバイス側 プルアップ抵抗 |
未実装 |
7 |
U2 |
3.3V LDO-IC |
|
8 |
U1 |
LTC4316 |
U1 |
接続方法
本基板の CN1側Grove互換コネクタ側に M5Stackや Raspberry Piなどの I2Cバスにアクセスするコンピュータを
Groveケーブルで接続します。 CN2側のGrove互換コネクタ側には I2Cでアクセス可能なセンサや、ディスプレイなどの
デバイスを Groveケーブルで接続します。 Groveケーブルは、本基板には付属していませんので、別途ご用意ください。
本基板を経由すると ホスト側からは、変換されたアドレスで I2Cデバイスにアクセスできますので、 i2cdetect コマンド
(RaspberryPi OSの場合)などで確認してください。
接続について
本基板は、I2C スレーブデバイスのアドレス重複の問題を解決するための基板です。 スレーブデバイスが 1台しかない場合や、
重複が全くない場合は、本基板を利用する必要はありません。同じアドレスがある場合、1台は、そのままのアドレスで、もう
1台を 変換した別のアドレスにして使用することが想定されています。
例えば、本基板の スレーブ側に I2Cハブ基板等を経由して2台接続すると 2台とも変換されたアドレスでのアクセスになり、
問題が解決しません。
I2Cハブ基板は、マスタ側に接続し、1台を I2Cハブ基板に直接、もう1台を 本基板を経由して接続するようにして、使用します。
I2Cデバイスを並列に接続するときは、ブレッドボードを経由して接続することも理論的には可能ですが、安定した接続を
確保するために 例えば、スイッチサイエンスさんの GROVE I2Cハブ、
Grove - I2C ハブ (6ポート)などの製品を利用する
ことをお勧めします。
アクセス方法
本基板の CN1コネクタ側に、M5Stickや RaspberryPi(Grove接続アダプタなどを使用)など マスタ側のデバイスを接続します。
CN2コネクタ側に、I2C接続のスレーブデバイス、たとえばディスプレイやセンサなどのデバイスを Grove用ケーブルで接続します。
CN2コネクタ側に接続されたスレーブデバイスには、変換されたアドレスが送信されます。ホストデバイス側からは、スレーブデバイスの
アドレスと HDL4316G の変換アドレスとの排他的論理和で得たアドレスでアクセスします。
変換アドレスの決定
変換する値は U1に実装された LTC4316が実行します。 アドレス値の上位 3bit, 下位 4bitの値は、LTC4316の XORH, XORL
の各端子の電圧で決定されます。決定されるタイミングは、電源が入り、ENABLE端子が有効になったときになります。HDL4316G では、
ENABLE端子は、電源に接続されていますので、実質的に電源が入ったときに決まります。
XORH および XORLは、基板上にある RHT, RHB, RLT, RLB の 4つのチップ抵抗で、電源電圧を分圧して印加します。
HDL4316G が使用するチップ抵抗は、1608サイズで、誤差 1%級のチップ抵抗を使用しています。
RHT, RHB, RLT, RLB のチップ抵抗を交換することにより、変換するアドレスの値を変更することができます。
推奨されるチップ抵抗の値は、データシートより 下記の表のとおりです。交換する場合、チップ抵抗は 誤差1%級を使用してください。
上位 3bit | RHTの値 | RHBの値 |
000 | Open | 0 |
001 | 976k | 102k |
010 | 976k | 182k |
011 | 1M | 280k |
100 | 1M | 392k |
101 | 1M | 523k |
110 | 1M | 681k |
111 | 1M | 887k |
下位 4bit | RLTの値 | RLBの値 |
0000 | Open | 0 |
0001 | 976k | 102k |
0010 | 976k | 182k |
0011 | 1M | 280k |
0100 | 1M | 392k |
0101 | 1M | 523k |
0110 | 1M | 681k |
0111 | 1M | 887k |
1000 | 887k | 1M |
1001 | 681k | 1M |
1010 | 523k | 1M |
1011 | 392k | 1M |
1100 | 280k | 1M |
1101 | 182k | 976k |
1110 | 102k | 976k |
1111 | 0 | Open |
変換するアドレスを 0x00 にすると、スレーブアドレスは、そのまま スレーブ側に転送されます。この場合、本基板は、
I2Cバスのリピータとして利用できます。 リピータとして利用するには Analog Devices社製の LTC4316は、高価なので、
もっと安価な基板を探したほうが良いかもしれません。
また、同じ変換アドレスの基板を 2個直列に接続すると、結果的にアドレス変換が行われない状態と同等になります。
LTC4316のデーターシートには明記されていませんが、異なる値のチップ抵抗を使用したり、5%や 10%級のチップ抵抗を使用すると、
XORH または XORL の電圧が規定の範囲から外れてしまうことがあります。この結果、期待と異なるアドレスに変換されたり、
電源を再投入したあとに変換されるアドレスが変わることも予想されます。
同じアドレスに変換が維持されるように、指定された値で、1%級のチップ抵抗を正しく実装することをお勧めします。
チップ抵抗は 日本からでも Digi-Keyさんや Mouserさん
のほか、マルツさんからの通信販売で購入できます。
そのほか、動作の詳しい内容については、Analog Devices社から発行されている LTC4316のデータシートを参照してください。
Copyright 2024 (C) By HardwareDreams