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

频道:技术教程 日期: 浏览:4967
应用设计中,用一条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,相关解释参见中间的注释。


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

打赏
免责及版权声明
1、根据我国《计算机软件保护条例》第十七条规定:“为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。”您需知晓本站所有内容资源均来源于网络,仅供用户交流学习与研究使用,版权归属原版权方所有,版权争议与本人、论坛无关,用户本人下载后不能用作商业或非法用途,需在24小时之内删除,否则后果均由用户承担责任。
2、无特殊说明,如果需要解压密码,解压密码统一为:www.daxiange.com;
3、本站所有资源,无法保障链接的长久可用性,请你在确认需求后,自行保存至自己的云盘;如遇链接失效,你确实又特别需要这份资源,请及时反馈,我们及时更新。