1.1 串口通信概述
1.1.1 串口通信的基本概念
什么是通信?简单地说,通信就是两个人之间的沟通,也可以说是两个设备之间的数据交换。人类的通信使用了诸如电话、书信等工具进行;而设备之间的通信则使用电信号。
在计算机内部,所有的数据都是使用位来存储的,每一位都是电位的一个状态(在计算机中以0、1表示);计算机内部使用组合在一起的8位代表一般所使用的字符、数字及一些符号,例如 01000001就表示一个字符。一般来说,必须传递这些字符、数字或符号才能算是数据交换。
1.并行通信与串行通信
终端与其他设备(如其他终端、计算机和外部设备)通过数据传输进行通信。数据传输可以通过两种方式进行:并行通信和串行通信。
1)并行通信
在计算机和终端之间的数据传输通常是靠电缆或信道上的电流或电压变化实现的。如果一组数据的各数据位在多条线上同时被传送,这种传输被称为并行通信,如图1-1所示。
图1-1 并行通信
并行数据传送的特点是:各数据位同时传送,传送速度快、效率高,多用在实时、快速的场合。
并行传送的数据宽度可以是1位~128位,甚至更宽,但是有多少数据位就需要多少根数据线,因此传送的成本高。在集成电路芯片的内部、同一插件板上各部件之间、同一机箱内各插件板之间的数据传送都是并行的。
并行数据传送只适用于近距离的通信,通常小于30 m。
2)串行通信
串行通信是指通信的发送端和接收端之间数据信息的传输是在单根数据线上,以每次一个二进制的0、1为最小单位逐位进行传输,如图1-2所示。
图1-2 串行通信
串行数据传送的特点是:数据传送按位顺序进行,最少只需要一根传输线即可完成,节省传输线。与并行通信相比,串行通信还有较为显著的优点:传输距离长,可以从几米到几千米;在长距离内串行数据传送速率会比并行数据传送速率快;串行通信的通信时钟频率容易提高;串行通信的抗干扰能力十分强,其信号间的互相干扰完全可以忽略。
正是由于串行通信的接线少、成本低,因此它在数据采集和控制系统中得到了广泛的应用,产品也多种多样。计算机和单片机间通常都采用串行通信方式。
2.串行通信工作模式
通过单线传输信息是串行数据通信的基础。数据通常是在二个站(点对点)之间进行传送,按照数据流的方向可分成三种传送模式:单工、半双工、全双工。
1)单工模式
单工模式的数据传送是单向的。通信双方中,一方固定为发送端,另一方则固定为接收端。信息只能沿一个方向传送,使用一根传输线,如图1-3所示。
图1-3 单工模式
单工模式一般用在只向一个方向传送数据的场合,例如计算机与打印机之间的通信是单工模式,因为只有计算机向打印机传送数据,而没有相反的数据传送。还有在某些通信信道中,如单工无线发送等。
2)半双工模式
半双工通信使用同一根传输线,既可发送数据又可接收数据,但不能同时发送和接收。在任何时刻只能由其中的一方发送数据,另一方接收数据。因此半双工模式既可以使用一条数据线,也可以使用两条数据线,如图1-4所示。
图1-4 半双工模式
半双工通信中每端需有一个收/发切换电子开关,通过切换来决定数据向哪个方向传输。因为有切换,所以会产生时间延迟,信息传输效率低些。
3)全双工模式
全双工数据通信分别由两根可以在两个不同的站点同时发送和接收的传输线进行传送,通信双方都能在同一时刻进行发送和接收操作,如图1-5所示。
图1-5 全双工模式
在全双工模式中,每一端都有发送器和接收器,有两条传送线,可在交互式应用和远程监控系统中使用,信息传输效率较高。
3.异步传输与同步传输
串行传输中,数据是一位一位按照到达的顺序依次传输的,每位数据的发送和接收都需要时钟来控制。发送端通过发送时钟确定数据位的开始和结束,接收端需要在适当的时间间隔对数据流进行采样来正确的识别数据。接收端和发送端必须保持步调一致,否则就会数据传输出现差错。为了解决以上问题,串行传输可采用以下两种方法:异步传输和同步传输。
1)异步传输
异步传输方式中,字符是数据传输单位。在通信的数据流中,字符间异步,字符内部各位间同步。异步通信方式的“异步”主要体现在字符与字符之间通信没有严格的定时要求。异步传送中,字符可以是连续地、一个个地发送,也可以是不连续地、随机地进行单独发送。在一个字符格式的停止位之后,立即发送下一个字符的起始位,开始一个新的字符的传输,这叫做连续的串行数据发送,即帧与帧之间是连续的。断续的串行数据传送是指在一帧结束之后维持数据线的“空闲”状态,新的起始位可在任何时刻开始。一旦传送开始,组成这个字符的各个数据位将被连续发送,并且每个数据位持续的时间是相等的。接收端根据这个特点与数据发送端保持同步,从而正确地恢复数据。收/发双方则以预先约定的传输速率,在时钟的作用下,传送这个字符中的每一位。
在串行通信中,数据是以帧为单位传输的,帧有大帧和小帧之分,小帧包含一个字符,大帧含有多个字符。
异步通信采用小帧传输,一帧中有10~12个二进制数据位。每一帧有一个起始位、7~8个数据位、1个奇偶校验位(可以没有)和停止位(1位或两位)组成。被传送的一组数据相邻两个字符停顿时间不一致,如图1-6所示。
图1-6 串行异步传输数据
2)同步传输
在同步传输方式中,比特块以稳定的比特流的形式传输,数据被封装成更大的传输单位,称为帧。每个帧中含有多个字符代码,而且字符代码与字符代码之间没有间隙以及起始位和停止位。和异步传输相比,数据传输单位的加长容易引起时钟漂移。为了保证接收端能够正确地区分数据流中的每个数据位,收发双方必须通过某种方法建立起同步的时钟。可以在发送器和接收器之间提供一条独立的时钟线路,由线路的一端(发送器或者接收器)定期地在每个比特时间中向线路发送一个短脉冲信号,另一端则将这些有规律的脉冲作为时钟。这种技术在短距离传输时表现良好,但在长距离传输中,定时脉冲可能会和信息信号一样受到破坏,从而出现定时误差。另一种方法是通过采用嵌有时钟信息的数据编码位向接收端提供同步信息。
同步通信采用大帧传输数据。同步传输的多种格式中,常用的为HDLC(高级数据链路控制)帧格式,其每一帧中有 1个字节的起始标志位、2个字节的收发方地址位、2个字节的通信状态位、多个字符的数据位和2个字节的循环冗余校验位,如图1-7所示。
图1-7 串行同步传输数据
4.串行通信的基本参数
串行端口的通信方式是将字节拆分成一个接着一个的位再传送出去,接到此电位信号的一方再将此一个一个的位组合成原来的字节,如此形成一个字节的完整传送,在数据传送时,应在通信端口的初始化时设置几个通信参数。
1)波特率
串行通信的传输受到通信双方配备性能及通信线路的特性所左右,收/发双方必须按照同样的速率进行串行通信,即收/发双方采用同样的波特率。我们通常将传输速度称为波特率,指的是串行通信中每秒所传送的数据位数,单位是bps。我们经常可以看到仪器或Modem的规格书上都写着 19200bps、38400bps,……所指的就是传输速度。例如,在某异步串行通信中,每传送一个字符需要 8位,如果采用波特率 4800bps 进行传送,则每秒可以传送 600个字符。
2)数据位
当接收设备收到起始位后,紧接着就会收到数据位,数据位的个数可以是5、6、7或8位数据。在字符数据传送的过程中,数据位从最低有效位开始传送。
3)起始位
在通信线上,没有数据传送时处于逻辑“1”状态。当发送设备要发送一个字符数据时,首先发出一个逻辑“0”信号,这个逻辑低电平就是起始位。起始位通过通信线传向接收设备,当接收设备检测到这个逻辑低电平后,就开始准备接收数据位信号。因此,起始位所起的作用就是表示字符传送的开始。
4)停止位
在奇偶校验位或者数据位(无奇偶校验位时)之后是停止位,它可以是1位、1.5位或2位,停止位是一个字符数据的结束标志。
5)奇偶校验位
数据位发送完之后,就可以发送奇偶校验位。奇偶校验用于有限差错检验,通信双方在通信时约定一致的奇偶校验方式。就数据传送而言,奇偶校验位是冗余位,但它表示数据的一种性质,这种性质用于检错,虽然有限但很容易实现。