GreenPAK(SLG46826)をI2C経由で触ってみる その6 I2Cアドレスの変更

概要

データシートを確認して、I2Cアドレスの変更方法を確認してみました。

GreenPAKのI2Cアドレスについて

コントロールコードRegisters0Registers1NVMEEPROM
00123
1891011
216171819
324252627
432333435
540414243
648495051
756575859
864656667
972737475
1080818283
1188899091
1296979899
13104105106107
14112113114115
15120121122123

GreenPAKはコントロールコードと呼ばれる0から15までの番号でI2Cアドレスが制御されています。Registers0とRegisters1は実際には同じ物で、レジスタにアクセスする場合に利用します。NVMは回路データのフラッシュが入っています。起動時にNVMからレジスタに回路データをコピーして起動をしています。EEPROMは2Kのメモリとして利用できますが、ESP32とかで使う限りはあまり必要ないかな。

選択方法

事前設定

I2Cのマクロセルを選択すると、上記の場所で設定できます。コントロールコードのプルダウンから0(0000)から15(1111)までを選択可能です。

基本的に回路に書き込んだ場合に事前に設定をしておく設定になります。レジスタやNVMの該当部分を直接書き換えることで変更することができます。

IO選択

同じ設定項目でPIN番号が書かれている項目があります。ここをクリックするとグレーになり選択することができます。初期設定だとRegの直値がグレーになっているので、IOの状態で変更したいビットのPINをグレーにして選択します。

上記は4つとも選択していますが、個別に選択が可能です。動的に変更したいPINのみ選択することができます。

回路の書き込み

:1000000000000000000000000000000000000000F0
:1000100000000000000000000000000000000000E0
:1000200000000000000000000000000000000000D0
:1000300000000000000000000000000000000000C0
:1000400000000000000000000000000000000000B0
:1000500000000000000000000000000000000000A0
:100060000030300030303030000030303000303080
:1000700030303030000000000000000000000000C0
:1000800000000000001422300C00000000000000FE
:100090000000000000000000000000000000000060
:1000A0000000002000010000000201000002000129
:1000B0000000020100000200010000020100000235
:1000C00000010000020001000000F101000000003A
:1000D0000000000000000000000000000000000020
:1000E0000000000000000000000000000000000010
:1000F000000000000000000000000000000000A55B
:00000001FF

起動直後からI2Cアドレスの選択を4つのPINに変更した回路データになります。この回路を使ってどのような動きになるのか確認してみます。

こんな動作確認は実験ボードが便利ですね。

#3#2#1#0
PIN7PIN6PIN5PIN4
IO5IO4IO3IO2

アプリケーション上ではPIN番号で書いてありますが、実際のIOですと上記になります。よくボードをみると、IO2にはSLA_0と書いてあります。これってSlave Addressの略でした。

さて、動作確認したところリアルタイムにアドレスが変更されました。最初は起動時のIOなのかと思っていましたが、IOの信号レベルを変更すると即反映されていました。

まとめ

よくあるI2Cデバイスのアドレス選択ピンがかんたんに実現できるんですね。複数のGreenPAKをI2Cで接続する可能性がある場合には、レジスタで事前に書き換えるのもいいんですが、2PINぐらい割り当てて、4アドレスを選択できるようにするとかの方が直感的でいいのかもしれません。

コメント

タイトルとURLをコピーしました