目录
[1. 串口通信](#1. 串口通信)
[1.1 概述](#1.1 概述)
[1.2 通信的基本概念](#1.2 通信的基本概念)
[1.2.1 串行通信和并行通信](#1.2.1 串行通信和并行通信)
[1.2.2 异步通信与同步通信](#1.2.2 异步通信与同步通信)
[1.2.3 单工、半双工、全双工](#1.2.3 单工、半双工、全双工)
[1.2.4 通信速率](#1.2.4 通信速率)
1. 串口通信
1.1 概述
在 WIFI、蓝牙、GPS、GSM/GPRS 等应用的控制都体现串口通信的重要性
开发板上集成了1个串口通信电路,是 USB 转串口模块,其既可以下载程序也可以实现串口通信功能
串口通信是异步的串行通信 =「逐位传输(串行)」+「无时钟线,靠帧格式和波特率同步(异步)」
串口先把数据拆成一位一位发(串行),再靠约定的 "开头结尾" 和 "节拍" 让对方听懂(异步)
异步串行通信像 "写信 + 寄信":
串行:写信时不会把整句话一次性写在纸上,而是一个字一个字按顺序写(逐位传输);
异步:和朋友约定好 "每周寄一封信,每封信开头写'你好'(起始位),结尾写'此致'(停止位)"------ 不用每天同步时间(无时钟线),但靠约定的规则(帧格式 + 波特率),朋友收到信就知道怎么读。
串口异步通信的同步规则靠两点实现:
①帧格式约定:数据的 "包装规则":串口会把零散的位打包成「帧(Frame)」,双方约定好帧的结构(比如常见的 "1 位起始位 + 8 位数据位 + 1 位停止位"):
起始位:低电平(0),告诉接收方 "数据要开始了",相当于 "发令枪";
数据位:要传输的实际数据(比如 8 位);
停止位:高电平(1),告诉接收方 "一帧数据结束了"。
接收方只要检测到 "高电平→低电平" 的跳变(起始位),就知道接下来要开始接收数据位了。
②波特率约定:数据的 "节拍规则":双方提前约定好波特率 (每秒传输的位数,比如 9600),由此确定每个位的持续时间(位间隔 = 1 / 波特率)。比如 9600 波特率下,每个位占 104μs:发送方按 104μs / 位的节奏发,接收方按同样节奏采样(通常在每个位的中间时刻采样,避免边缘抖动)------ 相当于 "你敲鼓我踏步,按约定的节拍来"。
1.2 通信的基本概念
51单片机不仅可以实现串口通信,还可以通过IO口模拟实现多种其他通信,如SPI、ICC
学习这些通信前,需要了解通信的基本知识:
通信按数据的
传送方式分为:串行通信、并行通信
同步方式分为:异步通信、同步通信
传输方向分为:单工、半双工、全双工
位间隔 = 单个二进制位(0 或 1)在串口线上的持续时间 ,单位是「秒(s)」或「微(μs)」。它和我们常说的「波特率(Baud Rate)」是倒数关系
1.2.1 串行通信和并行通信
串行通信是指用一条数据线,将数据一位一位的依次传输,每位数据占据一个固定的时间长度
只需要少数几条线就可以在系统间交换信息,特别适用于计算机与计算机之间、计算机与外设之间的远距离通信
其特点:传输线少,长距离传送时成本低,且可以利用电话网等现成设备,但数据的传输控制比并行通信复杂

并行通信通常将数据字节的各位用多条数据线同时进行传送,通常是8位、16位、32位等数据一起传输
其特点:控制简单、传输速度快;由于传输线较多,长距离传送时成本高且接收方的各位同时接收存在困难,抗干扰能力差

1.2.2 异步通信与同步通信
异步通信是指通信的发送与接收设备使用各自的时钟控制数据的发送和接收过程 ,为使双方的收发协调,要求发送和接收设备的时钟尽可能一致
异步通信是以字符为单位进行传输,字符与字符之间的间隙(时间间隔)是任意的,但每个字符中的各位是以固定的时间传送的
其特点:不要求收发双方时钟的严格 一致,容易实现,设备开销较小,但每个字符要附加2-3位用于起止位,各帧之间还有间隔,因此传输效率不高


同步通信时要建立发送方时钟对接收方时钟的直接控制,使双方达到完全同步。
传输数据的位之间的距离均为"位间隔"的整数倍,同时传送 的字符间不留间隙,即保持位同步关系 ,也保持字符同步关系。可通过两种方法实现:

1.2.3 单工、半双工、全双工
单工通信:数据只能沿一个方向,不能实现反向传输

半双工通信:数据传输可以沿两个方向,但需要分时进行

全双工通信:数据可以同时进行双向传输

1.2.4 通信速率
衡量通信性能的一个非常重要的参数就是通信速率,通常以比特率表示
比特率是每秒传输二进制代码的位数,单位是:位/秒(bps)。如果每秒传送240个字符,而每个字符格式包含10位(1个起始位,1个停止位,8个数据位),这时的比特率为:10 位 * 240 个/秒 = 2400bps
此外,还有"波特率 "(每秒传输了多少个码元,码元是通信信号调制的概念),通信中常用时间间隔相同的符号表示一个二进制数字,这样的信号称为码元
如常见的通信传输中,OV表示数字0,5V 表示数字1,一个码元可以表示两种状态:0、1,因此一个码元等于一个二进制比特位,波特率与比特位大小一致;
若有0V、2V、4V、6V分别表示二进制00,01,10,11,那么每个码元可表示四种状态。即两个二进制比特位,码元数是二进制比特位的一半,这时候的波特率为比特率的一半
常见通信中一个码元表示两种状态,所以我们常常直接以波特率表示比特率