别被“协议”两个字吓到,说白了就是两个设备商量好怎么说话。
1. 为什么需要协议?
你想想,如果一个人只说中文,另一个人只说俄语,他俩能聊起来吗?
不能。
电脑、手机、传感器之间也一样——各说各话,就是鸡同鸭讲。
通信协议就是事先约定好的“聊天规则”,包括:
- 用什么“语言”(编码格式)
- 怎么开头、怎么结尾(帧结构)
- 说多快(波特率/速率)
- 说错了怎么办(纠错重传)
2. 举个生活例子
你给朋友打电话:
- 拨号 → 等待接通
- “喂?” → 确认对方能听见
- 你说一句,他回一句(一问一答)
- “拜拜” → 挂断
这就是一套非正式的口头协议。
通信协议就是把这个过程写成标准手册,让机器照做。
3. 常见的通信协议(入门级)
| 协议 | 特点 | 常见场景 |
|---|---|---|
| UART(串口) | 异步、点对点、简单 | 单片机调试、GPS模块 |
| I²C | 双线、多设备、慢速 | 传感器、EEPROM |
| SPI | 四线、高速、主从 | 显示屏、SD卡 |
| CAN | 差分信号、抗干扰、带校验 | 汽车、工业总线 |
| TCP/IP | 互联网基石、可靠、复杂 | 网页、邮件、远程登录 |
| HTTP/HTTPS | 基于TCP,请求-响应模式 | Web API、网页访问 |
4. 协议里到底规定了啥?(以UART为例)
UART 规定:
起始位(1位低电平) + 数据位(5~9位) + 校验位(可选) + 停止位(1~2位高电平) ```还必须约定 **波特率**(比如 9600、115200),双方得用同一个“语速”,否则听不清。清。 ```c // 伪代码:发送一个字节 void uart_send(char data) { // 拉低起始位 // 按位发送 data 的 8 个 bit // 发校验位(可选) // 拉高停止位 }5. 协议分层的概念(超级简化)
就像寄快递:
- 应用层:你写的信(内容)
- 传输层:快递单号(保证送到)
- 网络层:货车路线(寻址)
- 链路层:每个路口的红绿灯(物理传输)
每一层只关心自己的事,下层为上层服务。
这就是OSI 七层模型或TCP/IP 四层模型的朴素思想。
6. 总结一句话
通信协议 = 设备间的 “普通话” + “说话规矩” + “纠错机制”**
你不需要一开始就背下所有协议的细节,只要记住:
没有协议,就没有互联网,也没有智能硬件。下次调试串口打印乱码时,记得先检查波特率是不是对上了
–如果你觉得有帮助,欢迎点赞、收藏、评论,让更多人看到!
(更多硬核但有趣的技术科普,关注我,不迷路)