1.1 串口简介
在串口中 用0和1表示高低电平
VCC供电 设备A给设备B供电 如果各自都有供电的模块就不需要连接这个线 GND的连线是为了获取相同的电压基准 因为有时候获得电压各自判断的标准不一样 可能获得不一样的电压 如果想A发送数据给B那么蓝线不需要连接 如果想B发送给A那么绿线不需要连接 下面的图是一个是一个实列 蓝牙和电脑连接(电脑只有USB接口)
数据帧
数据帧的概念
数据通过蓝线或者绿线进行传输 传输的数据就是0 1的高低组成
把传输的数据分为8个bit一个单位(就是一个字节)然后把这个基本的单位取出加入头和尾 就形成了数据帧
串口数据帧的格式
在串口中传输数据的单元就是数据帧
空闲状态
数据的传输 就是用高电平表示空闲 传完一个数据帧或多个数据帧就进入空闲状态 如图是示波器采集到的一个数据帧传输的过程 红色圈起来的就表示高电平(空闲状态)
数据位
起始位 一开始数据的接收方一直是高电平表示空闲状态 然后当开始传输数据传输方就向接收方传入一个低电平 表示数据传输的开始
在起始位和停止位中间就是数据位(可为8或者9位)
数据位的长度时刻变化的 图片上示波器的图片就是8位 数据帧传输就是从LSB传起 右侧的1 2 4 8表示的是权重 (2的几次方)叫先传数据最低有效位
校验位
校验位是位于数据位的最后一位 是接受方查看接收到的数据是否正确 可以为7位数据位 1位校验位 也可以为8位数据位1位校验位
校验的原理
如选择8位有效数据位一位校验位 如果要发送的数据是10101100 那么1的个数位4选择奇校验在校验位补上一个1 总共为5个1 然后如果在传输的过程中数据出现了错误 那么接收方的校验位就会多一个1或者少一个1从而知道自己接收到的数据出现了错误
停止位
高电平的长度可以表示停止位
一个数据传输的例子
当空闲时就是高电平 然后传输方向接收方传送一位低电平表示数据开始传输 数据位 要发送的数据是01011011但是数据的传输是从LSB开始传输(叫先传数据最低有效位)所以在数据位体现出来的就是11011010 然后校验为偶校验 数据位一共有5个1 在校验位补上一个1总共为6个1 传输数据 最后为一位高电平的停止位
连续发送数据的例子
在多个数据的发送中没有空闲
异步通信和波特率
同步通信
双方不仅需要一根数据线还有一根时钟线 以IIC为例子 当时钟变为低电平数据得以接受 有高电平变为低电平 然后时钟由低电平变为高电平就表示数据正在被采集 数据接收方正在采集这个传入的低电平
异步通信
串口就是异步通信 那么双方如何协调呢?
波特率
码元就是表示高低电平 如8位数据位就是8个码元
波特率越高就表示码元的宽度越窄
一开始数据接受方就开始不断采集电平 采集到高电平变为低电平就表示着数据的传输 然后先采集1.5个码元然后依次采集一个码元 接受完所有的数据
波特率相同表示数据发送方和数据接收方保持着相同的数据传输速度 然后相同的数据帧格式
流控的概念
其实就是表示数据的发送方发送数据太快导致接收方的接收信息处理不够快 导致数据的丢失 为了防止这种情况的发生 当传输完数据后需要接收方传回一个反馈信号表示数据采集完成 接着开始下一个数据的发送 依次保证数据的准确性 这个反馈的信号就叫做流控信号
串口流控的工作原理
接收方的RTS可以把流控信号传回给数据发送方 当RTS传输低电平表示数据可传输 高电平表示接受方正在采集处理信息