第六课:SPI通信 - 高速数据传输
📌 学习目标
- 理解什么是 SPI 协议
- 了解 SPI 的硬件连接
- 理解 SPI 与 I2C 的区别
- 学会使用 SPI 设备
🎯 什么是 SPI?
SPI = Serial Peripheral Interface = 串行外设接口
形象的比喻
想象一个会议室:
- 主机 = 主持人
- 从机 = 参会者(可以多个)
- MOSI = 主持人说的话
- MISO = 参会者的回答
- SCLK = 会议节奏
- CS = 点名:叫到谁,谁才说话
🔌 SPI 的硬件连接
需要 4 条线:
| 线名 | 全称 | 功能 |
|---|---|---|
| SCLK | Serial Clock | 时钟线 |
| MOSI | Master Out Slave In | 主机输出,从机输入 |
| MISO | Master In Slave Out | 主机输入,从机输出 |
| CS | Chip Select | 片选(选择要通信的设备) |
连接示意图
单片机 SD卡 OLED屏
│ │ │
├─ SCLK ──────┼─ SCLK ─────┤
├─ MOSI ──────┼─ MOSI ─────┤
├─ MISO ──────┼─ MISO ─────┤
├─ CS1 ──────┤ │
└─ CS2 ────────────────────┤
📊 SPI 与 I2C 对比
| 特性 | I2C | SPI |
|---|---|---|
| 所需线数 | 2条 | 4条 |
| 设备地址 | 有(7位/10位) | 无(用CS) |
| 速度 | 较慢(通常400kHz) | 较快(可达几MHz) |
| 通信方式 | 半双工 | 全双工 |
| 多设备 | 共用地址 | 每个设备独立CS |
| 复杂度 | 稍复杂 | 简单 |
🎯 什么时候用 SPI?
适合用 SPI 的场景:
- 需要高速传输:比如读取大量数据
- SD卡/W25Q存储:高速读写
- 显示屏:快速刷新屏幕
适合用 I2C 的场景:
- 节省引脚:引脚不够用
- 很多传感器:温度、湿度、光线等
- 低速设备:不需要很高的速度
🔧 JoyKit 中的 SPI 设备
JoyKit 上常用的 SPI 设备:
| 设备 | 用途 |
|---|---|
| W25Q32 | Flash存储器(存储数据、图片) |
| 4.3寸LCD | 主屏幕显示 |
| OLED | 辅助显示屏 |
🔬 课堂演示:比较 I2C 和 SPI
演示目标
感受 I2C 和 SPI 的不同特点。
| 对比项 | I2C传感器 | SPI屏幕 |
|---|---|---|
| 线数 | 少 | 多 |
| 速度 | 慢 | 快 |
| 用途 | 读数据 | 写显示 |
💡 记忆口诀
| 协议 | 特点 |
|---|---|
| I2C | 线少、有地址、适合传感器 |
| SPI | 线多、速度快、适合屏幕 |
🎉 小结
今天我们学到了:
- ✅ SPI 是串行外设接口
- ✅ 需要 4 条线:SCLK、MOSI、MISO、CS
- ✅ SPI 速度比 I2C 快
- ✅ I2C 适合传感器,SPI 适合屏幕/存储
- ✅ JoyKit 有多个 SPI 设备
下一课将是综合实战项目,把前面学的都用起来!