购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.2.2 单片机串行数据通信的同步方式

数据在传输线路上以串行方式进行通信时,为了保证发送端发送的信号能够被接收端正确无误地接收,接收端必须与发送端同步。也就是说,接收端不但要知道一组二进制位的开始与结束,还需要知道每位的持续时间,这样才能做到用合适的采样频率适时采样所接收到的数据。通常接收器在每位的中心进行采样。如果发送端和接收端的时钟不同步,即使只有极小的误差,随着时间的增加,误差逐渐积累,终究会造成收发之间的失步。由于发送端和接收端的时钟信号不可能绝对一致,因此必须采取一定的同步手段,使接收端能根据发送数据的起止时间和时钟频率来校正自己的时间基准与时钟频率。这个过程称为位同步或码元同步。在传送由多个码元组成的字符以及由许多字符组成的数据块时,通信双方也要就信息的起止时间取得一致。实际上,同步技术直接影响着通信的质量,质量不好的同步将会使通信系统不能正常工作。

常用的同步方式有两种:异步通信和同步通信。异步通信是一种利用字符的再同步技术的通信方式;同步通信是通过同步字符的识别来实现数据的发送和接收的。

1)异步通信

在异步通信(asynchronous communication)中,数据通常是以字符(或字节)为单位组成字符帧传送的。异步通信也称群同步。所谓的“群”,一般是以字符为单位的。在每个字符前面有起始位,在每个字符后面有终止位,从而组成一个字符序列“群”。

在异步通信中,字符帧由发送端一帧一帧地发送,通过传输线为接收设备一帧一帧地接收。发送端和接收端可以有各自的时钟来控制数据的发送和接收,这两个时钟源彼此独立。互不同步。在异步通信中,两个字符之间的传输间隔是任意的。因此,每个字符的前后都要用一些数位来作为分隔位。

发送端和接收端依靠字符帧格式来协调数据的发送和接收,在通信线路空闲时,发送线为高电平(逻辑1),每当接收端检测到传输线上发送过来的低电平(逻辑0,字符帧中的起始位)时,就知道发送端已开始发送;每当接收端接收到字符帧中停止位时,就知道一帧字符信息已发送完毕。

在异步通信中,字符帧格式和波特率是两个重要指标。用户可根据实际情况来选定。

(1)字符帧

字符帧(Character Frame)也称数据帧,由起始位、数据位、奇偶校验位及停止位4 个部分组成。现对各部分结构和功能分述如下:

①起始位

位于字符帧开头,只占一位,始终为逻辑0(低电平),用于向接收设备表示发送端开始发送一帧信息。

②数据位

紧跟起始位之后,用户根据情况可取5 位、6 位、7 位或8 位,低位在前,高位在后(即先发送数据的最低位)。若所传数据为ASCII字符,则常取7 位。

③奇偶校验位

位于数据位后,仅占一位,用于表征串行通信中采用的是奇校验还是偶校验。用户可根据需要决定采取何种校验方式。

④停止位

位于字符帧末尾,为逻辑1(高电平),通常可取1 位、1.5 位或2 位,用于向接收端表示一帧字符信息已发送完毕,也为发送下一帧字符作准备。

在串行通信中,发送端一帧一帧发送信息,接收端一帧一帧接收信息。两相邻字符帧之间可无空闲位,也可有若干空闲位。用户可根据需要决定。如图2.5( b)所示为有3 个空闲位时的字符帧格式。

(2)单片机异步通信的传输速率

在用异步通信方式进行通信时,发送端需要用时钟来决定每一位对应的时间长度,接收端需要用一个时钟来测定每一位的时间长度。前一个时钟称为发送时钟;后一个时钟称为接收时钟。这两个时钟的频率可以是位传输率的16 倍、32 倍或64 倍。这个倍数称为波特率因子,而位传输率称为波特率。波特率越高,数据传输速度越快,但与字符的实际传输速率不同。字符的实际传输速率是指每秒内所传字符帧的帧数,与字符帧格式有关。例如,波特率为1200 bit/ s的通信系统,若采用如图2.5(a)所示的字符帧(每一字符帧包,含数据11 位),则字符的实际传输速率为1200 /11 = 109.09 帧/ s;若采用如图2.5(b)所示的字符帧(每一字符帧包含数据14 位),则字符的实际传输速率为1200 /14 = 85.71 帧/ s。

图2.5 异步通信的字符帧格式

每位的传输时间定义为波特率的倒数。例如,波特率为9600 bit/ s的通信系统,其每位的传输时间为

通常异步通信的波特率为50~9600 bit/ s。波特率不同于发送时钟和接收时钟,通常是时钟频率的1 /16 或1 /64。

当波特率因子为16,通信时,接收端在检测到电平由高到低变化以后,便开始计数,计数时钟就是接收时钟。当计到第8 个时钟以后,就对输入信号进行采样,如仍为低电平,则确认这是起始位,而不是干扰信号。此后,接收端每隔16 个时钟脉冲对输入线进行一次采样。直到各个信息位以及停止位都输入以后,采样才停止。当下一次出现由1 到0 的跳变时,接收端重新开始采样。正因为如此,在异步通信时,发送端可在字符之间插入不等长的时间间隔,即空闲位。

虽然接收端和发送端的时钟没有直接的联系,但由于接收端总是在每个字符的起始位处进行一次重新定位,因此必须要保证每次采样对应一个数据位。只有当接收时钟和发送时钟的频率相差太大而在起始位之后刚采样几次就造成错位时,才出现采样造成的接收错误。如果遇到这种情况,就会出现停止位(按规定停止位应为高电平)为低电平(此情况下,未必每个停止位都是低电平),引起信息帧格式错误。对这类错误,大多数串行接口都是有能力检测出来的。也就是说,大多数可编程的串行接口都可检测出奇偶校验错误和信息帧格式错误。

异步通信的优点是不需要传送同步脉冲,字符帧长度也不受限制,故所需设备简单。其缺点是字符帧中因包含有起始位和停止位而降低了有效数据的传输速率。

2)同步通信

同步通信(synchronous communication)是一种连续串行传送数据的通信方式。一次通信只传送一帧信息。同步通信也称位同步(synchronous),是指接收端对每一位数据都要和发送端保持同步。同步通信有外同步法和自同步法两种。

①外同步法是指接收端的同步信号是先由发送端发过来的,而不是自己产生的,也不是从信号中提取出来的。

②自同步法能从数据信号中提取同步信号的方法。典型的自同步法是曼彻斯特编码信号的接收。

同步通信的信息帧和异步通信中的字符帧不同,通常含有若干个数据字符。根据控制规程,可分为面向字符和面向比特两种。

(1)面向字符型的数据格式

面向字符型的同步通信数据格式可采用单同步、双同步和外同步3 种数据格式,如图2.6所示。

图2.6 面向字符型同步通信数据格式

单同步和双同步均由同步字符、数据字符和校验字符CRC 3 个部分组成。单同步是指在传送数据之前先传送一个同步字符SYNC,双同步则先传送两个同步字符SYNC。其中,同步字符位于帧结构开头,用于确认数据字符的开始(接收端不断对传输线采样,并把采样到的字符和双方约定的同步字符比较,只有比较成功后才会把后面接收到的字符加以存储);数据字符在同步字符之后,个数不受限制,由所需传输的数据块长度决定;校验字符有1 到2 个,位于帧结构末尾,用于接收端对接收到的数据字符的正确性校验。外同步通信的数据格式中没有同步字符,而是用一条专用控制线来传送同步字符,使接收端及发送端实现同步。当每一帧信息结束时均用两个字节的循环控制码CRC结束。

在同步通信中,同步字符可采用统一标准格式,也可由用户约定。在单同步字符帧结构中,同步字符常采用ASCII码中规定的SYN(即16H)代码。在双同步字符帧结构中,同步字符一般采用国际通用标准代码EB90H。

(2)面向比特型的数据格式

根据同步数据链路控制规程(SDLC),面向比特型的数据一帧为单位传输,每帧由6 部分组成:第1 部分是开始标志“7EH”;第2 部分是1 字节的地址场;第3 部分是1 字节的控制场;第4 部分是需要传送的数据,数据都是位(bit)的集合;第5 部分是2 字节的循环控制码CRC;第6 部分又是“7EH”,作为结束标志。面向比特型同步通信数据格式如图2.7 所示。

图2.7 面向比特型同步通信数据格式

在SDLC中不允许在数据段和CRC段中出现6 个“1”,否则会误认为是结束标志。因此,要求在发送端进行检验。当连续出现5 个“1”时,则立即插入一个“0”,到接收端要将这个插入的“0”去掉,恢复原来的数据,保证通信的正常进行。

同步通信的数据传输速率较高,通常可达56000 bit/ s或更高,因此适用于传送信息量大、要求传送速率很高的系统中。同步通信的缺点是要求发送时钟和接收时钟保持严格同步,故发送时钟除应与发送波特率保持一致外,还要求把它同时传送至接收端。 x6aoGq1aPVmEoB/jX/6cHt8vFUZhscL71QpFZImZhg8+VfAgrDWO70sSsQ4UN16q

点击中间区域
呼出菜单
上一章
目录
下一章
×