基于MCS51的两片单片机之间的串行通信接口设计 联系客服

发布时间 : 星期二 文章基于MCS51的两片单片机之间的串行通信接口设计更新完毕开始阅读

基于MCS51的两片单片机之间的串行通信接口设计

第二章 串行通信的介绍

2.1串行通信与并行通信

串行通信使用的只是一根数据线,把数据一位一位地一次传输,其中每一位数据占据一个固定的时间长度。其只需要少数几条线就可以在系统间交换信息,特别试用于计算机和计算机、计算机和外部设备之间的远距离通信。数据在单条一位宽的传输线上,一比特接一比特地按顺序传送的方式称为串行通信。 在并行通信中,一个字节(8位)数据是在8条并行传输线上同时由源传到目的地;而在串行通信方式中,数据是在单条1位宽的传输线上一位接一位地顺序传送。这样一个字节的数据要分8次由低位到高位按顺序一位位地传送。

8位数据线0100 0100 1001源1001终点源终点(a)并行通信(b)串行通信

图2-1 串行通信与并行通信的对比

2.2同步通信与异步通信

异步通信是指通信的发送与接收设备使用各自的时钟控制数据的发送和接收过程。为使双方的收发协调,要求发送和接收设备的时钟尽可能一致。异步通信以字符(构成的帧)为单位进行传输,字符与字符之间的间隙(时间间隔)也是任意的,但每个字符中的各位是以固定的时间传送的。原理图如图2-2所示。

图2-2 异步通信原理图

3

基于MCS51的两片单片机之间的串行通信接口设计

同步通信时要建立发送方时钟对接收方时钟的直接控制,使双方达到完全同步。此时,传输数据的位之间的距离均为“位间隔”的整数倍,同时传送的字符间不留间隙,即保持位同步关系,也保持字符同步关系。发送方对接收方的同步可以通过外同步和自同步两种方法实现。以下为自同步原理图如图2-3所示。

图2-3 同步通信原理

A发送 数据 B接收 时钟信号 2.3 全双工方式与半双工方式

MCS_51单片机有一个全双工串行口。全双工的串行通讯只需要一根输出线和一根输入线。数据的输出我们把它称发送数据(TXD),数据输入时我们把它称接收数据(RXD)。串行通信中我们要解决两个技术问题,数据传送是一个、数据转换也是一个。数据传送我们需要解决送中的标准、传送中的格式和传送中的工作方式等问题。数据转换是指数据的串行和并行转换。具体说,在发送端,我们需要把并行传输的数据转换为串行传输的数据;但是在接收端,我们要把接收到的串行传输的数据转换为并行传输的数据,当数据发送及接收分流时,采用两根不同的传输数据线传送的时候,通信的双方都可以在同一时间进行发送和接收数据的操作,以这样的传送方式传送我们就称为全双工制式,在全双工方式中,通信系统中的每一端都设置了发送器及接收器,因此,能控制数据同时地在两个方向上传送。全双工方式是不需要进行方向切换的,所以,没有因为切换操作而产生时间上的延迟,这些对不能有时间上的延误的交互式应用非常有利。但是此种方式要求通信的双方都有发送器及接收器,而且,我们需要两根数据线来传送数据信号。,前一个字符的回送过程及后一个字符的输入过程是同时进行的,也就是工作于全双工方式。图2-4是收发的波特率相同的。

甲全双工乙发送器接收器接收器发送器甲乙

图2-4全双工制式

4

基于MCS51的两片单片机之间的串行通信接口设计

如果采用同一根传输数据线既要作接收又要作发送,虽然数据是可以在两个不同的方向上传送,但是通信的双方却不能同时进行数据的收发,这样传送的方式就称为半双工制,如图2-5所示。采用的是半双工制式的时候,通信系统中每一端发送器及接收器,是通过收和发的开关转接到通信线路上的,来进行的方向之间切换,所以,可能会产生时间上延迟。如图2-5。

甲半双工乙发收发收

图2-5半双工方式

2.4 串行异步通信

串行异步通信时,接收方不断地检测或监视串行输入线上的电平变化,当检测到有效起始位出现时,便知道接着是有效字符位的到来,并开始接收有效字符,当检测到停止位时,就知道传输的字符结束了。经过一段随机时间间隔之后,又进行下一个字符的传送过程。通常接收端的采样时钟周期要比传输字符的位周期短,常用的采样时钟频率为位频率的16倍,采取这种措施是为了提高抗干扰能力 ,在串行通信中,二进制数据以数字信号的信号形式出现,不论是发送还是接收,都必须有时钟信号对传送的数据进行定位。在TTL标准表示的二进制数中,传输线上高电平表示二进制1,低电平表示二进制0,且每一位持续时间是固定的,由发送时钟和接收时钟的频率决定。

2.5串行同步通信

同步通信指的是数据传送是以数据块做为单位的,字符和字符之间、字符内部的位和位之间都是同步的。同步串行通信的特点可以概括为:以数据块作为传送单位传送信息;在一个信息帧之内,字符和字符间没有间隔;因为每一次传输的数据块中包含的数据比较多,因而接收时钟和发送进钟是严格同步的,所以通常我们的单片机设计中要有同步时钟。同步串行通信的数据格式是每个数据块或信息帧由3部分组成:

①一个数据块为两个同步字符也就是信息帧,作为起始标志; ②n个连续传送的数据; ③2个字节循环冗余校验码(CRC)。

5

基于MCS51的两片单片机之间的串行通信接口设计

2.6 串口通信参数设置

串口通信最重要的参数是停止位和奇偶校验、波特率和数据位。要进行两个端口的通信,就必须配置这些参数:

波特率:这是一个通信速度衡量的参数。表示的是每一秒钟传送的bit个数。比如100波特是表示每一秒钟发送100个bit。如果我们说到的是时钟的周期,那么指的就是波特率,例如协议需要2400波特率,那么时钟是2400Hz。这就是说串口通信在数据线上的采样率为2400Hz。通常电话线的波特率为36600,28800和14400。但是波特率是可以远远大于这些值的,同时波特率与距离是成反比的。高的波特率常用于放置得很近的仪器间通信,其中GPIB设备的通信就是一个例子。

数据位:是一个衡量通信中的实际数据位的一个重要参数。如果单片机发送了一个信息包时,实际的数据不可能一定就是8位,标准的值可能是5位、7位和8位。要怎样设置决定于你想传送什么样的信息。列如,一般标准ASCII码采用的是0~127(7位)。扩展的ASCII码是0~255(8位)。如果数据使用标准 ASCII码,那么他的一个数据包就是用7位数据的。每个包就是指一个字节,其中包括开始位和停止位,数据位和奇偶校验位。基于实际的数据位取决于通信协议标准,术语“包”指任何通信的情况。 停止位:用于表示单个包的最后一位。典型的值为1,1.5和2位。由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。

奇偶校验位:在串口通信中一种简单的检错方式。有四种检错方式:偶、奇、高和低。当然没有校验位也是可以的。对于偶和奇校验的情况,串口会设置校验位(数据位后面的一位),用一个值确保传输的数据有偶个或者奇个逻辑高位。例如,如果数据是011,那么对于偶校验,校验位为0,保证逻辑高的位数是偶数个。如果是奇校验,校验位位1,这样就有3个逻辑高位。高位和低位不真正的检查数据,简单置位逻辑高或者逻辑低校验。这样使得接收设备能够知道一个位的状态,有机会判断是否有噪声干扰了通信或者是否传输和接收数据是否不同步。

6