こんにちは。
ヘーシロー。です。
今回は、I2Cバスを用いた
システム構成について。
I2C busとは
$I^2C bus$ (アイスクエアシーバス: 以下(I2Cバス))は、
双方向通信の2線のバスです。
このI2Cバスも
バス線の一種ですので、
色々なデバイス(IC)がバス線上に接続されます。
その中でも、
マスタと呼ばれる制御ICがあり、
このマスタが、
I2Cバス上の各デバイスに命令を送ったり、
各デバイスの内部レジスタの情報を
読み取ったりします。
つまり、
このバスに接続されている各デバイスは、
バス上のマスターと通信し、
マスターの制御を受けます。
2線のバス線は、両方とも、
プルアップ抵抗を介して、
電源に接続されています。
I2Cのシステム構成
文章だけだと分かりずらいので、
I2C busで構成されるシステムの
代表例を図示します。
![I2Cのシステム構成](https://hei-shiro.com/wp-content/uploads/2019/03/611038b95e47ca025b7a523c3502d26e.png)
CPU(あるいはマイコン)からの
制御信号はGPIO等のパラレル信号で
送り出されます。
そのパラレル信号を、
2線のI2C bus信号にして、
各デバイスに送り出すのが
Bus controller(バスコントローラ)です。
LED driverやmotor controller等、
複数のデバイスが、
I2C bus上に並列に接続されます。
各デバイスには、
I2C bus上のアドレスが
定められており、
各デバイスは、
自分のアドレスへの命令のみ
受け取ります。
この例では、
LED driverやmotor contolloer等を
どう動かすか
CPUにプログラミングしておく事により、
システムを動作させることが出来ます。
SCL/SDAは双方向バッファ
I2Cは、
双方向通信しますので、
SCL/SDAは、双方向バッファです。
出力のドライバは、
オープンドレイン型なので、
I2C busは、
プルアップ抵抗により、
VDDへ接続されます。
これも簡単な図にしてみました。
![I2C バッファ](https://hei-shiro.com/wp-content/uploads/2019/03/c46a00c3335cea9bbfa93b9408ecdd03.png)
今日はここまで。
気まぐれに続きを書きますので、
気長にお待ちいただければと思います。