目录
[1.1 串口基础概念](#1.1 串口基础概念)
[2.1 I2C 与 SPI 简介](#2.1 I2C 与 SPI 简介)
1.1 串口基础概念
-
串口通信(Serial Communication):指外设和计算机间通过数据信号线、地线等按位进行传输数据的一种通信方式,属于串行通信方式。
-
电平标准
-
TTL:高电平5V(逻辑1),低电平0V(逻辑0),传输距离短。
-
RS232:负逻辑,高电平-3V ~ -15V(逻辑1),低电平3V ~ 15V(逻辑0),传输距离更远。{ TTL与 RS-232C(老式电脑用) 电平转换,通常使用的电平转换芯片是 MAX232。}{ TTL与USB电平转换,通常使用的电平转换芯片是 CH340}
-
RS485:差分信号,抗干扰能力强,适合工业环境。
-
UART(Universal Asynchronous Receiver Transmitter)即通用异步收发器,是硬件电路中的通信接口,拥有独立的通信规则(协议 ),核心属性为异步、全双工、串行通信。
- 异步:无时钟线同步,通信双方通过预设参数保持节奏一致;
- 全双工:双向同时通信,收发独立不冲突;
- 串行:数据逐位依次传输,硬件成本低、抗干扰性强。
- 应用:在 WIFI、蓝牙、GPS、GSM/GPRS 等应用的控制。开发板上集成了 1 个串口通信电路,是 USB 转串口模块,它既可下载程序也可实现串口通信功能。
- 比特率:是每秒钟传输二进制代码的位数,单位是:位/秒( bps)。如每秒钟传送 240 个字符,而每个字符格式包含 10 位(1 个起始位、1 个停止位、8 个数据位),这时的比特率为:
10 位×240 个/秒 = 2400 bps
1.2通信的基本概念
51 单片机不仅可以实现串口通信,还可以通过 IO 口模拟实现多种其他通信,比如 SPI、IIC 等。
通信的方式分类
- 按照数据传送方式分:
- 串行通信:传输线少,传输距离远,抗干扰性好,长距离传送时硬件成本低,且可以利用电话网等现成的设备,但数据的传送控制比并行通信复杂。
- 并行通信:控制简单、传输速度快;由于传输线较多,长距离传送时成本高且接收方的各位同时接收存在困难,抗干扰能力差;硬件成本高
- 按照通信的数据同步方式分
- 异步通信
- 概念:以字符(构成的帧)为单位进行传输,字符与字符之间的间隙(时
间间隔)是任意的,但每个字符中的各位是以固定的时间传送的
- 特点:不要求收发双方时钟的严格一致,实现容易,设备开销较小,但每个字符要附加 2~3 位用于起止位,各帧之间还有间隔,因此传输效率不高。
- 概念:以字符(构成的帧)为单位进行传输,字符与字符之间的间隙(时
- 同步通信
- 异步通信
- 照数据的传输方向分
- 单工、半双工和全双工通信
| 通信方式 | 数据传输方向 | 数据线数量 | 核心特点 | 适用场景 |
|---|---|---|---|---|
| 单工 | 单向固定 | 1 根 | 发送方和接收方固定,无法双向传输 | 红外遥控、串口打印(仅发送) |
| 半双工 | 双向但不同时 | 1 根 | 双方可收发数据,但同一时刻仅能单向传输 | 对讲机、I2C 总线(软件半双工) |
| 全双工 | 双向同时 | 2 根(TXD+RXD) | 收发独立,可同时进行数据传输 | 单片机与电脑、蓝牙模块通信 |
嵌入式通信协议
| 协议 | 特点 | 适用场景 |
|---|---|---|
| UART | 简单、异步、全双工 | 调试、模块通信 |
| I2C | 两线、半双工、多设备 | 传感器、EEPROM |
| SPI | 高速、全双工、片选 | 显示屏、SD卡 |
| CAN | 差分、多主、高可靠 | 汽车电子、工业控制 |
| Modbus | 主从、应用层协议 | 工业自动化 |
| USB | 高速、串行、差分传输、即插即用、主从结构外设连接(鼠标 / 键盘 / 存储 / 调试)、高速数据传输 | 外设连接(鼠标 / 键盘 / 存储 / 调试/U盘/摄像头)、高速数据传输 |
1.3UART数据传输核心规则
**发送顺序:**遵循 LSB 优先的原则,低位先行。
通信协议:通常使用 96-N-8-1 格式。
- "96":表示的是通信波特率为 9600。串口通信中通常使用的是异步串口通信,即没有时钟线,所以两个设备要通信,必须要保持一致的波特率,当然,波特率常用值还有 4800、 115200 等。
- "N"表示的是无校验位。校验方法有奇校验(odd)、偶校验(even)、0 校验(space)、1 校验(mark)以及无校验(noparity)。
- "8"表示的是数据位数为 8 位,其数据格式在前面介绍异步通信中已讲过。当然数据位数还可以为 5、6、7 位长度。
- "1"表示的是 1 位停止位,串口通讯的一个数据包从起始信号开始,直到停止信号结束。数据包的起始信号由一个逻辑 0 的数据位表示,而数据包的停止信号可由 0.5、1、1.5 或 2 个逻辑 1 的数据位表示,只要双方约定一致即可。
1.4串口相关寄存器
- (1)串口控制寄存器SCON

SM0 和 SM1 为工作方式选择位:
SM2: 多机通信控制位,主要用于方式 2 和方式 3。当 SM2=1 时可以利用收到的 RB8 来控制是否激活 RI(RB8=0 时不激活 RI,收到的信息丢弃;RB8=1 时收到的数据进入 SBUF,并激活 RI,进而在中断服务中将数据从 SBUF 读走)。当SM2=0 时,不论收到的 RB8 为 0 和 1,均可以使收到的数据进入 SBUF,并激活 RI(即此时 RB8 不具有控制 RI 激活的功能)。通过控制 SM2,可以实现多机通信。REN:允许串行接收位。由软件置 REN=1,则启动串行口接收数据;若软件置REN=0,则禁止接收。
TB8: 在方式 2 或方式 3 中,是发送数据的第 9 位,可以用软件规定其作用。可以用作数据的奇偶校验位,或在多机通信中,作为地址帧/数据帧的标志位。在方式 0 和方式 1 中,该位未用到。
RB8 :在方式 2 或方式 3 中,是接收到数据的第 9 位,作为奇偶校验位或地址帧/数据帧的标志位。在方式 1 时,若 SM2=0,则 RB8 是接收到的停止位。
TI :发送中断标志位。在方式 0 时,当串行发送第 8 位数据结束时,或在其它方式,串行发送停止位的开始时,由内部硬件使 TI 置 1,向 CPU 发中断申请。在中断服务程序中,必须用软件将其清 0,取消此中断申请。
RI:接收中断标志位。在方式 0 时,当串行接收第 8 位数据结束时,或在其它方式,串行接收停止位的中间时,由内部硬件使 RI 置 1,向 CPU 发中断申请。也必须在中断服务程序中,用软件将其清 0,取消此中断申请。
- (2)电源控制寄存器PCON
SMOD:波特率倍增位。在串口方式 1、方式 2、方式 3 时,波特率与 SMOD 有
关,当 SMOD=1 时,波特率提高一倍。复位时,SMOD=0。
1.5串口波特率计数
开发中建议大家使用小工具,它会给你带来很多便利。如51 波特率初值设定app,或STC-ISP里有波特率计数器

2.其他通信协议
2.1 I2C 与 SPI 简介
I2C(Inter -Integrated Circuit)
- 使用 SCL(时钟线) 和 SDA(数据线) 两根线。
- 半双工,支持多主多从,通过设备地址寻址。
- 适合连接多个低速设备,如传感器、EEPROM。
SPI(Serial Peripheral Interface)
- 使用 SCLK(时钟)、CS(片选)、MOSI(主出从入)、MISO(主入从出) 四根线。
- 全双工,传输速度快,适合高速设备如显示屏、SD卡。
- 无设备地址,通过片选线选择从设备。
Modbus协议:工业通信的"通用语言"
- Modbus是一种应用层协议,常基于串口(如RS485)传输,采用主从架构。
- 主从模式
- 主机:唯一有权发起通信的设备,控制整个通信过程。
- 从机:被动响应主机指令,执行对应功能并返回应答。
- 协议格式(以RTU模式为例)
-
设备地址:标识目标从机。
-
功能码:指示操作类型。
-
数据流向位:功能码最高位表示数据方向:
-
0:主机 → 从机
-
1:从机 → 主机
-
-
| 起始位 | 设备地址 | 功能码 | 数据位1 | 数据位2 | 校验位 | 结束位 |
|---|---|---|---|---|---|---|
| 0xAA | 0x01 | 0x01 | 0x42 | 0x00 | 0xEE | 0xBB |
