第五章 单片机串行通信技术
在实际工作中,计算机的CPU与外部设备之间常常要进行信息交换;一台计算机与外界的信息交换称为数据通信。
数据通信方式有两种,即并行数据通信和串行数据通信。并行数据通信中,数据的各位同时传送,其优点是传递速度快;缺点是数据有多少位,就需要多少根传送线;串行通信中,数据字节一位一位串行地顺序传送,通过串行接口实现。它的优点是只需一对传送线(利用电话线就可作为传送线),这样就大大降低了传送成本,特别适用于远距离通信;其缺点是传送速度较低。在应用时,可根据数据通信的距离决定采用哪种通信方式,例如,在PC机与外部设备(如打印机等)通信时,如果距离小于30m可采用并行数据通信方式;当距离大于30m时,则要采用串行数据通信方式。8051单片机具有并行和串行二种基本数据通信方式。图5-1(a)所示为8051单片机与外设间8位数据并行通信的连接方法。图5-1(b)所示为串行数据通信方式的连接方法。本章主要介绍单片机串行通信技术。
P1.0D0D1D2D3D4D5D6D7GNDP1.1P1.2P1.3P1.4P1.5微机或外部设备RxDTxD803180518751TxDRxD80518751微机或外部设备8031P1.6P1.7GNDGNDGND(a)(b) 图5-1 两种通信方式的示意图 (a)并行通信 (b)串行方式 第一节 串行通信基础
一、串行通信分类
按照串行数据的时钟控制方式,串行通信分为异步通信和同步通信两类。 1. 异步通信
在异步通信中,数据是以字符为单位组成字符帧传送的。发送端和接收端由各自独立的时钟来控制数据的发送和接收,这两个时钟彼此独立,互不同步。每一字符帧的数据格式如图5-2所示。
在帧格式中,一个字符由四个部分组成:起始位、数据位、奇偶校验位和停止位。 (1)起始位:位于字符帧开头,仅占一位,为逻辑低电平“0”,用来通知接收设备,发送端开始发送数据。线路上在不传送字符时应保持为“1”。接收端不断检测线路的状态 ,若连续为“1”以后又测到一个“0”,就知道发来一个新字符,应马上准备接收。
(2)数据位:数据位(D0~D7)紧接在起始位后面,通常为5~8位,依据数据位由低到高的顺序依次传送。
(3)奇偶校验位:奇偶校验位只占一位,紧接在数据位后面,用来表征串行通信中采用奇校验还是偶校验,也可用这一位(I/O)来确定这一帧中的字符所代表信息的性质(地址/数据等)。
(4)停止位:位于字符帧的最后,表征字符的结束,它一定是高电位(逻辑“1”)。停止位可以是1位、1.5位、或2位。接收端收到停止位后,知道上一字符已传送完毕,同时也为接收下一字符作好准备(只要再收到“0”就是新的字符的起始位)。若停止位以后不是紧接着传送下一个字符,则让线路上保持为“1”。图5-2(a)表示一个字符紧接一个字符传送的情况,上一个字符的停止位和下一个字符的起始位是紧相邻的;图5-2(b)则是两个字符间有空闲位的情况,空闲位为“1”,线路处于等待状态。存在空闲位正是异步通信的特征之一。
第n-1字符帧...0/11第n字符帧0D0D1D2D3D4D5D6D70/11第n+1字符帧0D0D1...起始位8位数据(a)奇偶停校验止位空闲位...110第n字符帧D0D1D2D3D4D5D6D70/18位数据11空闲位11第n+1字符帧0D0D1...起始位(b)奇偶停校验止位 图5-2 异步通信一帧数据格式 (a)无空闲位字符帧 (b)有空闲位字符帧
2.同步通信
同步通信时,字符与字符之间没有间隙,也不用起始位和停止位,仅在数据块开始时用同步字符SYNC来指示(常约定1~2个),然后是连续的数据块。同步字符的插入可以是单同步字符方式或双同步字符方式,如图5-3所示;同步字符可以由用户约定,也可以采用ASCII码中规定的SYN代码,即16H。通信时先发送同步字符,接收方检测到同步字符后,即准备接收数据。
在同步传输时,要求用时钟来实现发送端与接收端之间的同步。为了保证接收无误,发送方除了传送数据外,还要把时钟信号同时传送。
同步字 数据字数据字数据字?? 数据字CRC1 CRC2 符1 符1 符2 符3 符n (a) 同步字符1 同步字符2 数据字符1 数据字符2 ?? 数据字 符n CRC1 CRC2 (b)
图5-3 同步传送的数据格式
(a)单同步字符帧格式 (b)双同步字符帧格式
同步通信方式适合2400bps以上速率的数据传输,由于不必加起始位和停止位,传送效率较高,但实现起来比较复杂。
二、波特率
波特率,即数据传送速率,表示每秒钟传送二进制代码的位数,它的单位是位/秒(b/s),常用bps表示。波特率是异步通信的重要指标,表征数据传输的速度,波特率越高,数据传输速度越快, 在数据传送方式确定后,以多大的速率发送/接收数据,是实现串行通信必须解决的问题。
假设数据传送的速率是120字符/s,每个字符格式包含10个代码位(1个起始位、1个停止位、8个数据位),则通信波特率为:
120字符/s×10位/字符=1200b/s=1200波特 每一位的传输时间为波特率的倒数:
Td=1/1200=0.833ms
三、串行通信的制式
在串行通信中按照数据传送方向,串行通信可分为单工、半双工和全双工三种制式。 1.单工制式
在单工制式中,只允许数据向一个方向传送,通信的一端为发送器,另一端为接收器。 2.半双工制式
在半双工制式中,系统每个通信设备都由一个发送器和一个接收器组成,允许数据向两个方向中的任一方向传送,但每次只能有一个设备发送,即在同一时刻,只能进行一个方向传送,不能双向同时传输。
3.全双工制式
在全双工制式中,数据传送方式是双向配置,允许同时双向传送数据。 在实际应用中,异步通信通常采用半双工制式,这种用法简单、实用。
第二节 串行通信总线标准
在进行串行通信接口设计时,必须根据需要确定选择标准接口、传输介质及电平转换等问题。和并行传送一样,现在已经颁布了很多种串行标准总线,如RS-232C,RS-422、RS-485和20mA电流环等。采用标准接口后,能够方便地把单片机和外设、测量仪器等有机地连接起来,从而构成一个测控系统。
一、RS-232C总线标准与应用
RS-232C是使用得最早、最多的一种异步串行通信总线标准。它由美国电子工业协会 (Electronic Industries Association)于1962年公布,1969年最后一次修订而成。其中RS是
Recommended Sandard的缩写,232是该标准的标识,C表示此标准已修改了三次。
RS-232C主要用来定义计算机系统的一些数据终端设备(DTE)和数据通信设备(DCE) 之间接口的电气特性,目前已广泛用于计算机与终端或外设之间的近端连接,适合于短距离或带调制解调器的通信场合。
(一) RS-232C的电气特性
RS-232C标准早于TTL电路的产生,与TTL、MOS逻辑电平规定不同。该标准采用负逻辑:低电平表示逻辑1,电平值为-3V~-l5V;高电平表示逻辑0,电平值为+3V一+l5V。因此,RS-232C不能直接与TTL电路连接,使用时必须加上适当的电平转换电路,否则将使TTL电路烧毁。
(二)RS-232C引脚功能
RS-232C标准总线有25条信号线,引脚名称见表5-1。
RS-232C信号分为两类,一类是DTE与DCE交换的信息:TxD和RxD;另一类是为了正确无误地传输上述信息而设计的联络信号。下面介绍这两类信号。
1.数据发送与接收线
发送数据TxD:通过TxD线,终端将串行数据由发送端(DTE)向接收端(DCE)发送。按串行数据格式,先低位后高位的顺序发出。
接收数据RxD:通过RxD线,终端接收从发送端DTE (或调制解调器)输出的数据。 2.联络信号
这类信号共有6个:
请求传送信号RTS:用来表示DTE请求DCE发送数据,即当终端要发送数据时,该信号RTS=1。
清除发送信号CTS: 用来表示DCE准备好接收DTE发来的数据,是对请求发送信号RTS的响应信号。
数据准备就绪信号DSR: 这是DCE向DTE发出的联络信号。DSR将指出本地DCE的工作状态。当DSR=l时,表示DCE没有处于测试通话状态,这时DCE可以与远程DCE建立通道。
数据终端就绪信号DTR: 这是DTE向DCE发送的联络信号。DTR=l时,表示DTE处于就绪状态,本地DCE和远程DCE之间建立通信通道;而DTR=0时,将迫使DCE终止通信工作。
数据载波检测信号DCD:这是DCE向DTE发出的状态信息。当DCD=1时,表示本地DCE接收到远程DCE发送。
振铃指示信号RI:这是DCE向DTE发出的状态信息。RI=1时,表示本地DCE接收到远程DCE的振铃信号。
表5-1 RS232各引脚信号说明
插针 1* 2* 信号名 GND TXD 保护地 发送数据 功能说明 信号方向 对DTE × 出 对DCE 入 出