串行通信要传送信息的有效部分一般都是数字或字符之类内容。在传输线上,它们都变成0和1的组合,即高低电平的变化。尽管我们可以把数字或字符都编制成对应的代码(例如常用的AS II码),但是如果发送端只发送这些代码对应的0和1信号还是远远不够的。如图1-18(a)所示,在进行通信过程中,通信线上的信号波形只是一些高低电平信号。由于任何时候数据传输线传输的不是高电平就是低电平,我们在接收端如何知道数据是何时开始发送、何时结束的?或者,以低电平代表0,若出现一段时间的低电平,我们又如何判断它代表一个0还是连续的几个0? 可见,要想通信成功,预先制定严格而详细的通信协议或标准是一件极为重要的事情。这些标准或协议,至少包括信息传输的速率,传送字符的格式,发送和接收的起始与结束约定,以及信号电平的电压等。确定了通信标准或协议后,就可
以将信号线上的高低电平识别为确定的数据信息,如图1-18(b)所示。
1.串行数据按传送方向的分类:
根据数据在通信线路上的传送方向的复杂程度,串行通信可分为三种方式:单工方式、
半双工方式以及全双工方式,如图1-19所示。
(1)单工方式:单工( Simpex)方式是最简单的传送方式,在这种方式下,需要通信的两个设备中一方固定为发送方,另一方固定为接收方,只允许数据信息由发送方向接收方传送,因此只需要一条数据传输线,如图1-19(a)所示。
(2)半双工方式:在半双工( Half Du-plex)方式下,数据的传输可以是双向的,但任何时刻只能由一方发送数据,另一方接收数据,如图1-19(b)所示。此时通信双方都要有发送和接收信息的能力,双方之间也可以仅用条数据线,但数据线上的信息流动则是双向的(3)全双工方式全双工( Fun Duplex)是最完善的通信方式,通信双方也都要有发送和接收信息的能力。这种方式允许通信双方同时传送数据信息,因此需要两条数据传输线,如图1-19(c)所示。
2.串行通信的两种字符格式:
在串行通信中不仅需要传送有效的字符代码,还需要传送一些诸如起始/停止以及校验等方面的控制信息,因此需要规定通信字符的格式。串行通信根据双方工作是否同步,可以分为异步通信与同步通信两种方式。这两种方式使用的字符格式有所不同,下面分别介绍。
(1)异步通信的字符格式:异步通信( Asynchronous Communication)是单片机最常用的一种方式。在异步通信中,要传输的字符或数据除了必须包含字符数据本身的各位(bit)外,还应包括开始和结束等控制信息。这些信息的组合称为一“帧”( Frame),每一帧的数据格式如图1-20所示。
一个完整的帧格式由起始位、数据位、奇偶校验位和停止位四部分组成。
①起始位:规定为0(低电平),标志着发送字符的开始。
②数据位:数据位接在起始位后,规定发送顺序低位在前,高位在后,因字符编码方
式的不同,数据位可以是5~8位。
③奇偶校验位:类似于程序状态字PSW中的奇偶校验标志,用于对传送字符的正确性检査。若发送方发出的奇偶校验位与接收方核查的奇偶校验结果不同,则说明通信有误。奇偶校验位是可以选择的,可规定为奇校验、偶校验或无校验。无校验时,此位可略去。
④停止位:规定为1(高电平),表示字符传送结束。停止位可以是1位、1.5位或2位。接收端收到停止位后,知道字符已经发送完毕。
在停止位后就可以以“0”为起始位发送下一个字符。若不是紧接着传送下一个字符,则应使线路保持高电平“1”。这些“1”就形成若干个空闲位。
若我们传送字符使用ASC Ⅱ编码,它的数据位是7位,加上一个起始位、一个停止位和一个奇偶校验位,则一帧共有10位。例如字符“9”的ASC Ⅱ码是39H,即0111001,加上起始位0、奇偶校验位0和停止位1,整个一帧的信息就是0011100101。
可见在进行异步通信时,发送方以“帧”为单位发送字符或数据,接收方收到一个完整的“帧”信息后,去掉起始、结束等位,就得到有效字符数据。在实际异步通信过程中,所传输的各数据字符之间可以有一定的时间间隔,而且间隔的长短也是不固定的。例如用键盘输入字符时就是典型的例子。此时输入字符的速度可快可慢,而计算机都能够及时接收这些字符信息。
(2)同步通信的字符格式:在同步通信( Synchronous Communication)方式中,要传送的字符与字符之间没有间隙,也不用起始位和停止位,只是在传送数据开始时用1~2个同步字符(SYN,对应的ASCⅡ码是16H)来指示同步通信开始,接着就连续发送整个数据块的全部字符,数据块发送结束时再发送1~2个检验字符。同步通信的字符格式如图1-21所示。为保证接收正确无误,发送方除了发送数据外,还要将时钟信号发送给对方。
同步通信速度快、效率高,但硬件电
路比较复杂。
3.波特率:
波特率( Baud rate)即数据传送的速率,它表示每秒钟传送的二进制代码的位数,单位是bit/s(位/秒),即:
1波特率=1bit/s 。
它反映了串行通信的速率,也反映了对传输通道的要求。例如,若使用波特率为1200bit/s,异步通信字符格式为八个数据位、一个起始位和一个停止位,即10位/帧,那么每秒钟能够传送的字符数就是: 1200(bit/s)÷10(bit/字符)=120(字符/s) 。
显然,波特率越高,通信速度也越快,但波特率的提高要受到硬件条件的限制。异步通信的波特率是有标准规定的,一般在50~19200bit/s之间。
4.RS-232总线标准:
串行异步通信常常采用总线形式的标准接口,或称标准总线。常用的有RS-232C、RS422、RS423、RS485等标准总线,都是美国电子工业协会( Electronic Industries Alliance,EIA)公布和推荐的。各种标准总线中的每条线的功能、通信速率以及传输距离等都有具体规定。
下面简单介绍一下RS232C总线标准。
(1)RS-232C的引脚定义:RS-232C总线是目前全世界应用最广泛的串行通信标准。该标准定义了25条信号线,通信线两端都使用25引脚的D型插头和插座与通信设备连接,称为DB-25插接器,如图1-22(a)所示。9针RS-232C插座引脚信号线的定义见表1-7。其中许多信号是为通信业务或信息控制而定义的,一般串行通信中常用的信号线只有其中的9条,相应地可使用9引脚D型插接器DB-9,如图1-22(b)所示。实际上,最简单的全双工通信仅需要其中的3条线:
发送数据线TXD、接收数据线RXD以及信号地线SG。
(2)RS-232C的数据信号电平标准:RS-232C使用的信号电平与一般单片机不同。RS-232C规定数据信号采用负逻辑,即+5~+15V表示逻辑“0”,-5~-15V表示逻辑“1”。
因此RS232C的信号线不能直接连到单片机上,必须通过电平转换的接口电路,如MC1488、MC1489等。MC1488将单片机用的TTL电平(0~5V)转换为RS-232C电平;
MC1489则相反,将RS-232C电平转换为TTL电平。
(3)最大传输距离与传输速率:RS-232标准规定最大传输距离为15m,最高传输速率约为20kbit/s。对于大多数单片机和计算机来说,采用RS-232标准通信时,只用其中少数几条线就可以完成基本的通信工作。比较简单的情况如图1-23所示,两台单片机之间只用了数据发送接收和信号三条线。每台单片机的信号线经过电平转换电路转换成RS-232C标准电平,再经过RS-232C标准插接器(如DB-9)与通信线连接。此时,只要将甲方的发送端TXD与乙方的接收端RXD相连,甲方的RXD与乙方的TXD相连,再将信号地线连在一起即可进行通信。