首先来了解一下什么是UART
UART(通用异步收发器)
UART = Universal Asynchronous Receiver/Transmitter(通用异步收发器)
- 单片机 / 芯片内部的硬件模块(比如 51 单片机的 UART 模块),也指对应的物理接口(如 TXD/RXD 引脚)
作用:
- 把单片机内部的并行数据(如 8 位字节)转换成串行数据流(逐位发送),或把接收的串行数据还原成并行数据
UART 也有着一套自己的通信协议规范:
单片机通信协议:
常见通信协议:
- UART
- I2C
- SPI
- USB
- CAN
了解一下常见通信的几种类型

1.UART收发信息接口:
P31:RXD :数据接收信号线
P32:TXD:数据发送信号线
- 通信时两者必须插接,不能发送接发送
2.UART协议内容:
uart只需要TXD 与 RXD两个引脚就可以实现
除了UART异步串行通信协议之外,还有另一种更加复杂的通信协议:
SPI通信协议:
必须四个接口:
SCK Serial Clock 时钟线(主设备产生,同步收发节奏)
MOSI Master Out Slave In 主发从收(主设备→从设备的数据)
MISO Master In Slave Out 主收从发(从设备→主设备的数据)
CS/SS Chip Select/Slave Select 片选线(主设备选通某一个从设备)
UART收发过程:

TXD与RXD在通信时必须岔接
数据发送方式:
- 串行:通过一根信号线线逐个BIT发送数据
- 并行:通过多根信号线同时发送数据
类比两种方式:
1.并行:
- 传输速度快
- 硬件效率高
- 传输距离近,只能三十米之内传输
2.串行:
- 传输速度慢
- 硬件成本低,实现简单
- 传输距离远,最远可达到3000米
电平标准:
1.TTL标准:
高电平5V,低电平0V->0.4V
- 适用于板间通信,传输距离较近
2.RS232标准:
负逻辑,高电平 -3V -> -15V , 低电平 3V -> 15 V
当单片机需要和PC端进行通信时,可以利用MAX232电平转换芯片, 将TTL电平转化位RS232电平
3.RS485标准:
差分信号:
A-B > 2V
A-B < -2V
高电平: 2V- 6V
低电平:-6V- 2V
也可以利用CH340电平转换芯片,将TTL电平转化为USB电平
UART通信时,数据遵循以下格式:

1.首先我们来了解一下校验类型:
奇校验:
校验位为 1 ,如果数据位中的1的个数加上校验位的的1保持 1 的总数为奇数个,则代表奇校验通过
数据发送过程中数据的高低电平可能受到干扰
偶校验:
校验位为 0 ,如果数据位中的1的个数加上校验位的的1保持 1 的总数为偶数个,则代表偶校验通过
无校验
累加和校验:
串口通信基本参数:
例:9600 8 N 1
1.波特率:bits per second
bps 每秒传输bit数量
2.数据位: 8位数据位
3.校验位:
N:NONE 无校验
O:ODD 无校验
E: EVEN 偶校验
4.停止位:
2.通信频率:
同步通信:通信双方通过一根共享的时钟信号线规定数据传输的频率
SCL时钟线:
引脚高电平时才可以发送数据,低电平时不可以发送数据
异步通信:
通信双方没有共享时钟线规定数据传输频率,利用波特率实现类似同步的效果
3.SBUF接收发送缓存区
定时器1:
常用于串口波特率的设置
当定时器1作为波特率产生时,溢出不发生中断
串口通信初始化:

在UART协议的基础上,还有一种数据发送协议 MODBUS协议:
主句下发MODBUS协议格式指令,从机接收指令并解析,完成对应功能后给主机回复应答
从机->主机:
