跳到主要内容

第五课:I2C通信 - 单片机与传感器的对话

📌 学习目标​

  1. 理解什么是 I2C 协议
  2. 了解 I2C 的硬件连接
  3. 学会启用 I2C 传感器
  4. 读取温度传感器数据

🎯 什么是 I2C?​

I2C (读作 I-squared-C) = Inter-Integrated Circuit = 集成电路总线

形象的比喻​

想象一条有很多站点的公共汽车路线:

  • 总线 = 公共汽车路线
  • 设备 = 各个站点
  • 地址 = 每个站点的编号

所有设备共用两条线,通过地址来区分!


🔌 I2C 的硬件连接​

只需要 2 条线 + 电源和地线:

线名功能
SCL时钟线(Clock)
SDA数据线(Data)
VCC电源(3.3V 或 5V)
GND地线

连接示意图​

单片机       温度传感器      OLED屏幕
│ │ │
├─ SCL ──────┼─ SCL ────────┤
├─ SDA ──────┼─ SDA ────────┤
├─ VCC ──────┼─ VCC ────────┤
└─ GND ──────┴─ GND ────────┘

📮 I2C 的工作原理​

1. 每个设备有地址​

传感器I2C地址
BMP2800x76
ADS11150x48
TCS347250x29
OLED0x3C

2. 通信过程​

  1. 单片机发送地址
  2. 对应设备响应
  3. 发送或接收数据
  4. 结束通信

🔧 JoyKit 中的 I2C 指令​

指令功能
0xC0启用外设
0xC3启用温湿度传感器(BMP280/BME280)
0xC7启用 WS2812B

🔬 课堂演示项目:温度监测​

项目目标​

读取温度传感器数据并显示。

硬件需求​

  • 板载 BMP280/BME280 传感器
  • 屏幕(可选)

参考程序​

; 温度监测项目
000 C3 0001 0000 ; 启用温湿度传感器
001 02 03E8 0000 ; 等待传感器稳定
002 0E 0000 0000 ; 循环(数据会自动显示在屏幕)

进阶:用温度控制 LED​

; 根据温度改变 LED 颜色
000 C3 0001 0000 ; 启用传感器
001 C7 0001 0000 ; 启用 LED
002 02 03E8 0000 ; 延时
003 06 000A 001E ; 如果温度 > 30°C,跳转
004 E4 00FF 0000 ; 绿色(正常)
005 0E 0002 0000 ; 跳回
006 E4 0000 00FF ; 红色(太热警告)
007 0E 0002 0000 ; 跳回

💡 I2C 的优势​

特点说明
省线只需要2条线
多设备可以同时挂多个传感器
简单协议相对简单

🎯 与 SPI 的区别​

I2CSPI
2条线4条线
有地址无地址,用片选
稍慢较快
半双工全双工

🎉 小结​

今天我们学到了:

  • ✅ I2C 是一种总线协议
  • ✅ 需要 SCL 和 SDA 两条线
  • ✅ 每个设备有地址
  • ✅ JoyKit 用 0xC0 系列指令启用传感器
  • ✅ 完成了温度监测项目

下一课我们将学习 SPI 协议,然后进入综合实战项目!