1. 先搞清楚单片机通信到底解决什么问题
单片机通信不是理论课,而是决定你的项目能不能实际跑起来的关键。很多人学单片机时把重点放在点亮LED、按键检测这些基础操作上,但一到需要多个模块配合、数据交换、远程控制时就会卡住。通信能力决定了你的单片机是孤立的玩具还是能融入系统的智能设备。
最常见的场景:传感器采集的数据要传给主控,主控需要控制执行机构,多个设备之间要协调工作,或者需要把数据上传到电脑或手机。这些都需要通信技术来支撑。通信出问题,整个系统就可能瘫痪。
我建议新手先理解一个核心观点:通信的本质是让不同设备或模块之间能够可靠地交换数据。重点不是记住各种协议的名字,而是理解它们各自适合什么场景,以及在实际项目中如何选择和配置。
2. 单片机通信的三种基础方式及其适用场景
2.1 UART串口通信:最直接的点对点方案
UART是最基础也最常用的通信方式,几乎每个单片机都支持。它的特点是只需要两根线(TX发送、RX接收)就能实现全双工通信,也就是可以同时收发数据。
实际使用时要注意几个关键点:
- 波特率必须一致:常见的波特率有9600、115200等,通信双方必须设置相同的波特率
- 电平匹配:51单片机通常是5V TTL电平,而STM32是3.3V,直接连接可能损坏芯片
- 通信距离:通常不超过几米,长距离需要转换成RS485标准
我一般会先测试最简单的串口通信:两个单片机之间用杜邦线连接,一个发数据,一个收数据。能跑通这个,再考虑添加校验位、停止位等高级设置。
2.2 I2C通信:节省引脚的多设备方案
I2C最大的优势是只需要两根线(SDA数据线、SCL时钟线)就能连接多个设备,每个设备有唯一的地址。这在需要连接多个传感器(如温湿度、气压、光照传感器)时特别有用。
实际使用中的经验:
- 要加上拉电阻:通常用4.7kΩ电阻将SDA和SCL上拉到VCC
- 地址冲突问题:不同厂家的设备可能有相同地址,选型时要注意
- 通信速度:标准模式100kHz,快速模式400kHz,高速模式3.4MHz
调试I2C时,我习惯先用逻辑分析仪抓取波形,确认起始信号、设备地址、数据内容和停止信号都正常。没有逻辑分析仪的话,可以逐段验证,先确保主机能发出正确的起始信号。
2.3 SPI通信:高速传输的首选
SPI是三种方式中速度最快的,适合需要高速数据传输的场景,如SD卡、显示屏、高速ADC等。它需要4根线:MOSI(主机发从机收)、MISO(主机收从机发)、SCK(时钟)、CS(片选)。
SPI的实际考虑:
- 引脚占用多:每个从设备都需要单独的CS片选线
- 模式配置:有4种时钟模式(CPOL和CPHA组合),主从设备必须一致
- 速度优势:通常可以达到几MHz甚至几十MHz
在选择通信方式时,我的经验法则是:点对点简单通信用UART,多传感器用I2C,高速设备用SPI。不要一味追求高性能,适合项目需求才是最重要的。
388




被折叠的 条评论
为什么被折叠?



