单片机之间的通信

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2013年7月30日修订

单片机之间的通信,在老师的强烈要求下,我们决定整理我们所学过的东西,在这里所展现的并不一定很全面,只能是简单的入门级别,对于通信,一直以来都是方便,但实现起来困难。硬件要求高,软件相对复杂点。这里,我们通过介绍资料、介绍硬件、介绍接线、软件应用举例、注意事项等来收集和整理了单片机与单片机、pc机与单片机通信的简单应用,仅供单片机实验室设备使用。

资料(摘自校内教材)

在通信领域内,有两种数据通信方式:并行通信和串行通信。

并行数据传输的特点:各数据位同时传输,传输速度快、效率高,多用在实时、快速的场合。并行传输的数据宽度可以是1~128位,甚至更宽,但是有多少数据位就需要多少根数据线,因此传输的成本较高,且只适用于近距离(相距数米)的通讯。

串行通信是指使用一条数据线,将数据一位一位地依次传输,每一位数据占据一个固定的时间长度。

串行数据传输的特点:

1)节省传输线,这是显而易见的。尤其是在远程通信时,此特点尤为重要。这也是串行通信的主要优点

2)数据传送效率低。与并行通信比,这也这是显而易见的。这也是串行通信的主要缺点。

2、串行通讯制式

根据信息的传送方向,串行通讯可以进一步分为单工、半双工和全双工三种。信息只能单向传送为单工;信息能双向传送但不能同时双向传送称为半双工;信息能够同时双向传送则称为全双工。

1)单工(Simplex)方式:通信双方设备中发送器与接收器分工明确,只能在由发送器向接收器的单一固定方向上传送数据。

图1.2 单工方式

2)半双式方式(half duplex):若使用同一根传输线既作接收又作发送,虽然数据可以在两个方向上传送,但通信双方不能同时收发数据,这样的传送方式就是半双工制。

图1.3半双工方式

3)全双工方式(full duplex):当数据的发送和接收分流,分别由两根不同的传输线传送时,通信双方都能在同一时刻进行发送和接收操作,这样的传送方式就是全双工制。

图1.4全双工方式

3、串行数据传输的分类

而按照串行数据的时钟控制方式,串行通信又可分为同步通信和异步通信两种。

异步通信:接收器和发送器有各自的时钟;

同步通信:发送器和接收器由同一个时钟源控制。

同步通信---Synchronous Communication

同步通信是一种连续串行传送数据的通信方式,一次通信只传送一帧信息。同步通信的缺点是要求发送时钟和接收时钟保持严格的同步。

数据数据数据……数据 CRC

同步字符

图1.5 同步通信的字符帧格式

异步通信---Asynchronous Communication

异步通信中,在异步通行中有两个比较重要的指标:字符帧格式和波特率。数据通常以字符或者字节为单位组成字符帧传送。字符帧由发送端逐帧发送,每一帧数据均是低位在前,高位在后,通过传输线被接收设备逐帧接收。发送端和接收端可以由各自的时钟来控制数据的发送和接收,这两个时钟源彼此独立,互不同步。

在异步通信中,接受端是依靠字符帧格式来判断发送端是何时开始发送,何时结束发送的。字符帧格式是异步通信的一个重要指标。

1) 字符帧(Character Frame)

字符帧也叫数据帧,由起始位、数据位、奇偶校验位和停止位等4部分组成,如图1.6所示。

(a)无空闲位字符帧

(b) 有空闲位字符帧

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

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

(2) 数据位:紧跟起始位之后,用户根据情况可取5位、6位、7位或8位,低位在前,高位在后。

(3) 奇偶校验位:位于数据位之后,仅占一位,用来表征串行通信中采用奇校验还是偶校验,由用户决定。

(4) 停止位:位于字符帧最后,为逻辑1,高电平。通常可取1位、1.5位、或2位,用于向接收端表示一帧字符信息已经发送完,也为下一帧发送做准备。

在串行通信中,两相邻字符帧之间可以没有空闲位,也可以有若干空闲位,这由用户来决定。图1.6(b)表示有3个空闲位的字符帧格式。

2)波特率(baud rate)

异步通信的另一个重要指标为波特率。

波特率为每秒钟传送二进制数码的位数,也叫比特数,单位b/s,即位/秒。波特率用于表征数据传输的速度,波特率越高数据传输速度越快。但波特率和字符的实际传输速率不同,字符的实际传输速率是每秒内所传字符帧的帧数,和字符帧格式有关。

通常,异步通信的波特率为50~9600b/s。

4、ATmega16单片机的串行口及相关寄存器

ATmega16单片机的串行口结构主要三个部分:时钟发生器,发送器和接收器。

1)数据缓冲器UDR

UDR数据缓冲器的格式图如图1.7所示:

图1.7 UDR数据缓冲器的格式图

ATmega16单片机USART 发送数据缓冲寄存器和USART 接收数据缓冲寄存器共享相同的I/O 地址,称为USART 数据寄存器或UDR。将数据写入UDR 时实际操作的是发送数据缓冲寄存器(TXB),读UDR 时实际返回的是接收数据缓冲寄存器(RXB) 的内容。

只有当UCSRA寄存器的UDRE标志置位后才可以对发送缓冲器进行写操作。如果UDRE没有置位,那么写入UDR 的数据会被USART 发送器忽略。当数据写入发送缓冲器后,若移位寄存器为空,发送器将把数据加载到发送移位寄存器。然后数据串行地从TxD 引脚输出。

2)控制状态寄存器UCSRA、UCSRB、UCSRC

(1)控制状态寄存器UCSRA格式图如图1.8所示:

图1.8控制状态寄存器UCSRA格式图

RXC: USART 接收结束

接收缓冲器中有未读出的数据时RXC 置位,否则清零。接收器禁止时,接收缓冲器被刷新,导致RXC 清零。RXC 标志可用来产生接收结束中断(见对RXCIE 位描述)。

TXC: USART 发送结束

发送移位缓冲器中的数据被送出,且当发送缓冲器 (UDR) 为空时TXC 置位。执行发送结束中断时TXC 标志自动清零,也可以通过写1 进行清除操作。TXC 标志可用来产生发送结束中断( 见对TXCIE 位的描述)。

UDRE: USART 数据寄存器空

UDRE标志指出发送缓冲器(UDR)是否准备好接收新数据。UDRE为1说明缓冲器为空,已准备好进行数据接收。UDRE标志可用来产生数据寄存器空中断(见对UDRIE位的描述)。复位后UDRE 置位,表明发送器已经就绪。

FE: 帧错误

如果接收缓冲器接收到的下一个字符有帧错误,即接收缓冲器中的下一个字符的第一个停止位为0,那么FE 置位。这一位一直有效直到接收缓冲器(UDR) 被读取。当接收到的停止位为1 时, FE 标志为0。对UCSRA 进行写入时,这一位要写0。

DOR: 数据溢出

数据溢出时DOR 置位。当接收缓冲器满( 包含了两个数据),接收移位寄存器又有数据,若此时检测到一个新的起始位,数据溢出就产生了。这一位一直有效直到接收缓冲器(UDR) 被读取。对UCSRA 进行写入时,这一位要写0。

PE: 奇偶校验错误

相关文档
最新文档