1. 课程导论与硬件基础:串口与I2C协议概述、常用传感器选型、开发板与调试工具介绍
各位同学,欢迎来到这门实战课。我是你们的老朋友,一个在嵌入式底层摸爬滚打了十几年的工程师。
说实话,每次带新人,我第一个要他们搞定的就是串口和I2C。为什么?因为这两个协议几乎覆盖了90%的传感器通信场景。你想想看,从最简单的温湿度传感器,到复杂的九轴姿态模块,不是走UART就是走I2C。搞懂了它们,你就拿到了嵌入式开发的半张入场券。
这一章,我们不急着写代码。先把地基打牢——协议怎么工作的?传感器怎么挑?工具怎么用?这些我踩过的坑,今天一次性讲清楚。
1.1 串口通信协议:从物理层到应用层
串口,全称串行通信接口。说白了,就是一根线发数据,一根线收数据,再加一根地线。简单,但可靠。
我刚开始做项目时,总觉得串口太“古老”了,速度又慢。直到有一次在强干扰的工业现场,SPI死活调不通,最后靠115200波特的串口把数据稳稳定定地传了出来。嗯,从那以后我再也不敢小看它了。
1.1.1 关键参数
| 参数 | 说明 | 常见值 |
|---|---|---|
| 波特率 | 每秒传输的符号数 | 9600, 115200, 921600 |
| 数据位 | 一帧中有效数据的位数 | 7, 8 |
| 停止位 | 帧结束标志 | 1, 1.5, 2 |
| 校验位 | 奇偶校验或无校验 | None, Even, Odd |
1.1.2 电平标准
这里有个坑,我必须提醒你。MCU出来的通常是TTL电平(0V/3.3V或5V),而电脑的串口是RS-232电平(-12V/+12V)。直接连?烧芯片是小事,搞不好把电脑主板也带走。
我曾经见过一个实习生,拿着USB转串口线直接怼到STM32的PA9和PA10上,结果芯片冒烟了。后来才知道,他买的那根线是RS-232电平的,不是TTL。
1.2 I2C总线协议:两根线的艺术
I2C,Inter-Integrated Circuit。飞利浦公司发明的,初衷就是让芯片之间用最少的线通信。两根线:SCL(时钟)和SDA(数据)。
你可能会问:两根线怎么传数据?答案是“主从架构”。主设备产生时钟,从设备响应。每个从设备都有一个唯一的7位或10位地址。
1.2.1 通信流程
- 起始条件: SCL高电平时,SDA从高变低。
- 发送地址: 主设备发送7位从机地址 + 1位读写位。
- 从机应答: 从机拉低SDA表示ACK。
- 数据传输: 每8位数据后跟一个ACK/NACK。
- 停止条件: SCL高电平时,SDA从低变高。
关键点: I2C是开漏输出,所以必须加上拉电阻。阻值怎么选?
- 标准模式(100kHz):4.7kΩ
- 快速模式(400kHz):2.2kΩ
- 高速模式(1MHz以上):1kΩ或更小
我一般先焊4.7kΩ,如果波形上升沿太缓再换小。别一上来就用1kΩ,功耗会大不少。
1.2.2 串口 vs I2C:怎么选?
| 对比项 | 串口 (UART) | I2C |
|---|---|---|
| 线数 | 2根(TX/RX) | 2根(SCL/SDA) |
| 通信方式 | 点对点 | 多主多从 |
| 速度 | 最高可达数Mbps | 标准100kHz,快速400kHz |
| 距离 | RS-232可达15米 | 通常1米以内 |
| 典型传感器 | GPS模块、激光雷达 | 温湿度、加速度计、磁力计 |
我的经验是:如果只接一个传感器,距离又近,优先用I2C。如果传感器在另一个板子上,或者需要长距离传输,串口更靠谱。
1.3 常用传感器选型指南
选传感器,说白了就是看三个指标:精度、功耗、接口。我见过太多人为了省几毛钱,选了精度不够的传感器,结果整个产品重做。
1.3.1 温湿度传感器
| 型号 | 接口 | 精度 | 功耗 | 价格 |
|---|---|---|---|---|
| DHT11 | 单总线 | ±2°C, ±5%RH | 中 | 极低 |
| DHT22 | 单总线 | ±0.5°C, ±2%RH | 中 | 低 |
| SHT30 | I2C | ±0.3°C, ±2%RH | 低 | 中 |
| BME280 | I2C/SPI | ±1°C, ±3%RH | 极低 | 中 |
1.3.2 运动传感器
- MPU6050: 六轴(加速度+陀螺仪),I2C接口。经典款,资料多,适合入门。
- MPU9250: 九轴(加速度+陀螺仪+磁力计),I2C/SPI。注意:这颗芯片有假货,买的时候要小心。
- ICM-20948: 九轴,低功耗,性能比MPU9250好,价格也贵一些。
我记得有一次做平衡车项目,用了MPU6050,结果车子老是抖。查了两天,发现是I2C速率太高,传感器丢数据了。降到200kHz,问题解决。嗯,有时候不是芯片不行,是你没把它伺候好。
1.4 开发板与调试工具介绍
工欲善其事,必先利其器。工具选对了,调试效率翻倍。
1.4.1 开发板推荐
| 开发板 | 主控 | 串口数量 | I2C数量 | 适用场景 |
|---|---|---|---|---|
| STM32F103C8T6 | Cortex-M3 | 3 | 2 | 入门、工业控制 |
| ESP32 | Xtensa LX6 | 3 | 2 | 物联网、WiFi/蓝牙 |
| Arduino Uno | ATmega328P | 1 | 1 | 原型验证、教学 |
| Raspberry Pi Pico | RP2040 | 2 | 2 | 低成本、MicroPython |
我个人最常用的是STM32F103和ESP32。前者稳定可靠,后者自带无线,做物联网项目很方便。
1.4.2 调试工具清单
- 逻辑分析仪: 必备!别跟我说你用示波器看I2C波形,那效率太低了。买个24MHz 8通道的,也就几十块钱。我用的Saleae逻辑分析仪,虽然贵点,但软件好用,还能解码I2C、SPI、UART。
- USB转串口模块: CH340或CP2102,多备几个。注意区分3.3V和5V版本。
- 万用表: 测电压、测通断、测电阻。调试I2C时,先量SCL和SDA的上拉电压对不对。
- 示波器: 如果预算够,买个双通道100MHz的。看时序、测信号完整性,示波器还是王道。
1.5 本章知识体系
下面这张图,把本章的核心知识点串起来了。你可以把它当作一张地图,后面每学一章,都可以回来对照一下。
这张图把本章的三个核心模块串起来了。左边是串口,中间是I2C,右边是传感器和工具。箭头表示它们之间的关联——比如I2C传感器需要上拉电阻,调试时需要逻辑分析仪。你可以在后续学习中随时回来对照,看看自己学到哪一步了。