数据通信方式
分为并行通信和串行通信。并行通信:利用多条数据线将各位同时发送,特点是传输块,适于短距离通信;串行通信:利用一条线路将数据一位一位的顺序发送,特点是线路简单成本低,适于远距离通信。
串行通信数据传送方式
串行通信分为同步和异步两种。
进行异步通信的单片机的时钟相互独立,其频率可以不同,在通信时不需要有同步时钟信号。由于异步通信时逐帧进行传输,各位之间的时间间隔必须相同,所以保证两片单片机有相同的传输波特率。当传输波特率误差超过5%,就不能正常通信。帧与帧之间的时间间隔是任意的,间隙为高电平。由于异步通信每传送一帧有固定格式,双方按照约定格式来发送和接收,硬件结构比同步通信简单,还能利用校验位检测错误。单片机中广泛采用异步通信方式。
同步通信要建立发送方时钟对接收方时钟的直接控制,使双方达到完全同步。此外传输数据的位之间的间距均为“位间隔”的整数倍,同时发送的字符间不留间隙,即保持位同步也保持字符同步。
串行通信的传输方向
- 单双工:数据始终是A发送到B;
- 半双工:既能从A发送到B,也能从B发送到A,但任何时候不能在两个方向同时传送,即每次只能一个设备发送,另一个设备接收;
- 全双工:允许通信双方同时进行发送和接收。
串行通信的传输速率
是指数据传送的速度,用b/s或bps(比特/秒)表示,简称比特率。在二进制下,比特率与波特率数值相等,因而在单片机的通信中常称为波特率。
数据通信协议
通信双方约定的一些规则。
异步通信数据格式:空闲位、起始位、奇偶校验位、停止位。
异步串行通信协议
1位起始位--8位数据位--1位校验位-1位停止位
- 起始位:先发一个逻辑“0”信号,表示传输的开始
- 数据位:紧接着起始位,从低位开始传动,发送速率靠时钟确定
- 停止位:数据位加上这一为使得“1”的位数为偶数(偶校验)或奇数(奇校验),以此来校验数据的正确性
- 停止位:一个字符数据的结束标
- 空闲位:处于逻辑“1”状态,表示当前线路没有数据传输。
RS-232
RS-232接线方式有全串口接线、3线接线(RXD、TXD、GND)
RS-232能够可靠进行数据传输的最大距离为15米,传输速度一般可达到115200bps甚至更高,标准接口能够提供的传输速度主要有以下波特率:1200、2400、4800、9600 、19200 、38400 、57600 、115200 。
UART原理
- 发送时:CPU将并行数据写入UART,UART按照一定的格式在一根线上串行发送数据;
- 接收时:UART检测另一根线上的信号,收集串行数据放在缓冲区中,CPU即可读取UART获取这些数据。
发送数据前UART之间要约定好波特率、数据传输格式。UART使用标准的TTL/CMOS逻辑电平来表示数据,为了增强数据的抗干扰能力,提高数据传输距离,通常将TTL/CMOS转换成RS-232逻辑电平。
数据传输流程
- 平时数据处于“空闲”状态(1状态);
- 当要发送数据时,UART改变TXD数据线的状态(变为0状态)并维持1位时间(开始位),接收方检测到开始位后,一位一位检测数据线的状态得到传输的数据;
- UART一帧中可以有5、 6 、7 或者8位数据,发送方按位改变数据线的状态将数据发送出去,首先发送最低位;
- 如果用校验位,UART在发送完数据位后,还要发送1位校验位再发送停止位,数据线恢复到“空闲”状态(1状态)。
UART驱动程序设计
串口初始化 数据发送功能 数据接收功能
初始化
- 1、设置UART通道管脚
- 2、设置波特率
- 3、设置数据传输格式
- 4、选择通道工作模式