如何用一条I2C总线驱动多个I2C设备?

东海大仙

文章最后更新时间:2024年01月26日

应用设计中,用一条I2C总线驱动多个I2C设备师很常见,实施也很简单,本项目将连接以下I2C设备:
1x16×2 I2C LCD显示屏,地址0x27
1x 128×32 I2C OLED显示屏,地址0x3C
2x PCF8574 I2C Io扩展器,地址0x20、0x21
上述组件可使用以下库文件,通过Arduino Uno控制:
LiquidCrystal_I2C.h,控制LCD屏;
Wire.h and PCF8574.h,控制I2C IO扩展器;
Adafruit_GFX, Adafruit_SSD1306.h 和 SPI.h,控制SSD1306 128×32 OLED显示屏。
由于所有元件相距不远,没必要I2C总线使用上拉电阻,因为这些杜邦线就是组件的一部分。
本项目电路很直观,不同的是,Uno板子在顶部靠近USB适配器附近增加了一个I2C口,我们把它和A4、A5一起使用。

首先,将所有I2C组件的SDA引脚以串行方式连接在一起,再连接于Arduino SDA引脚(一般为A4)。
其次,将所有I2C组件的SCL引脚串联起来,再连接到Arduino SCL引脚(一般为A5)
第三,将所有5v(Vcc)引线连接到Arduino开发板的5v引脚,所有接地引线(GND)连接到Arduino板子的GND引脚。
第四,通过阻值在640-1000欧姆范围内的电阻,将4个LEDs的一个引脚连接到两个PCF8574 IO扩展器P0、P1引脚,另一个引脚接地。
本项目采用外接的5v电源供电,因为根据Uno的实际需求,没必要从稳压器获得太大的电流。
连接完成后,检查所有接线,再打开Arduino IDE中的i2c扫描工具,就会再示例中看到库 Wire.h 文件。
启动电源,将库文件上传到Uno,再打开Serial Monitor,就会看到检测到了4个I2C设备。

如果没有检测到4个设备,检查接线和设备地址,看看问题出在哪里,很有可能是接线问题,或者设备的地址错了。

如果一切无误,将以下代码拷入Arduino IDE,相关解释参见中间的注释。


本篇文章来源于微信公众号:                 电子工程专辑

手机扫描二维码访问

文章版权声明:除非注明,否则均为海东博科原创文章,转载或复制请以超链接形式并注明出处。

目录[+]

取消
微信二维码
微信二维码
支付宝二维码