一、通信协议
是指通信双方的一种约定,包括对于同步方式、数据格式、传送速度、传送步骤、检纠错方式、控制字符的定义等,做出统一的规定,需要通信双方的共同遵守;也叫做通信控制规程、传输控制规程,它属于ISO(International Organization for Standardization,国际标准化组织)的OSI(Open System Interconnect,开放式系统互连)七层参考模型中的数据链路层。串行通信协议分为两类:同步协议、异步协议。同步协议有3种:面向字符Character、面向比特Bit、面向字节计数。常用的异步协议有:起止式异步协议,实例介绍如下。
首先,规定了3种功能位的电平:起始位(0)、停止位(1)、空闲位(1);停止位、空闲位均为高电平,这就保证了在起始位的开始处有一个下降沿。字符帧,又称做数据帧,由起始位(1位)、数据位(5-9位,D0居前)、奇偶校验位(0、1位)、停止位(1、1.5、2位)依次组成;该格式是依靠起始位、停止位来实现字符(数据)的界定、同步的,故称为起止式协议。起始位是作为联络信号而附加进来的,在接收方,它的到来,表明紧接着要来数据位了,现在需要做好数据位等的接收准备。
示意图如下,
二、流控
这里讲到的“流”,当然指的是数据流。数据在两个串口之间传输时,常常会出现丢失数据的现象,或者两台计算机的处理速度不同,如台式机与单片机之间的通讯,接收端数据缓冲区已满,则此时继续发送来的数据就会丢失。现在我们在网络上通过modem进行数据传输,这个问题就尤为突出。流控制能解决这个问题,当接收端数据处理不过来时,就发出“不再接收”的信号,发送端就停止发送,直到收到“可以继续发送”的信号再发送数据。因此流控制可以控制数据传输的进程,防止数据的丢失。 pc机中常用的两种流控制是硬件流控制(包括rts/cts、dtr/cts等)和软件流控制xon/xoff(继续/停止)。
参考:http://book.51cto.com/art/201211/365354.htm
https://blog.youkuaiyun.com/lijia11080117/article/details/51371893