Presentation is loading. Please wait.

Presentation is loading. Please wait.

项目一 双机通信应用系统 授课教师:刘旭东.

Similar presentations


Presentation on theme: "项目一 双机通信应用系统 授课教师:刘旭东."— Presentation transcript:

1 项目一 双机通信应用系统 授课教师:刘旭东

2 【项目功能】 1、通过编写程序,当检测到BC7281键盘有键按下时,将键值显示在本单片机系统对应的数码管上,同时对方单片机系统对应的数码管显示和本机同样的按键值。 2、通过完成项目,掌握串口通信的基本原理,并能合理运用于实际项目中。

3 【项目知识点与技能点】 1.通信基础知识。 2.异步串行通讯协议。 3.ATmega16单片机的串行接口及相关寄存器的配置。

4 【项目知识准备】 1、通信知识概述 在通信领域,有两种数据通信方式:并行通信、串行通信。 图1.1 并行、串行通信示意图

5 2、串行通讯制式 根据信息的传送方向,串行通讯可以进一步分为:单工、半双工和全双工三种。 1)单工(Simplex)方式:
2)半双式方式(half duplex): 3)全双工方式(full duplex):

6 3、串行数据传输的分类 图1.5 同步通信的字符帧格式 按照串行数据的时钟控制方式,串行通信又可分为同步通信和异步通信两种。
同步通信---Synchronous Communication:发送器和接收器由同一个时钟源控制。 图1.5 同步通信的字符帧格式

7 异步通信---Asynchronous Communication
异步通信中,在异步通行中有两个比较重要的指标:字符帧格式和波特率。 1) 字符帧(Character Frame) 字符帧也叫数据帧,由起始位、数据位、奇偶校验位和停止位等4部分组成,如图1.6所示。 (a)无空闲位字符帧 (b) 有空闲位字符帧 图1.6 异步通信的字符帧格式

8 2)波特率(baud rate) 异步通信的另一个重要指标为波特率。 波特率为每秒钟传送二进制数码的位数,也叫比特数,单位b/s,即位/秒。波特率用于表征数据传输的速度, 波特率越高数据传输速度越快。但波特率和字符的实际传输速率不同,字符的实际传输速率是每秒内所传字符帧的帧数,和字符帧格式有关。 通常,异步通信的波特率为50~9600b/s。

9 4、ATmega16单片机的串行口及相关寄存器
ATmega16单片机的串行口结构主要三个部分:时钟发生器,发送器和接收器。控制寄存器由三个单元共享。时钟发生器包含同步逻辑,通过它将波特率发生器及为从机同步操作所使用的外部输入时钟同步起来。XCK ( 发送器时钟) 引脚只用于同步传输模式。发送器包括一个写缓冲器,串行移位寄存器,奇偶发生器以及处理不同的帧格式所需的控制逻辑。写缓冲器可以保持连续发送数据而不会在数据帧之间引入延迟。由于接收器具有时钟和数据恢复单元,所以它是USART 模块中最复杂的。恢复单元用于异步数据的接收。除了恢复单元,接收器还包括奇偶校验,控制逻辑,移位寄存器和一个两级接收缓冲器UDR。接收器支持与发送器相同的帧格式,而且可以检测帧错误,数据过速和奇偶校验错误

10 与ATmega16单片机串行口通信有关的特殊功能寄存器有数据缓冲器UDR,控制和状态寄存器UCSRA、UCSRB、UCSRC,波特率寄存器UBRRL、UBRRH。下面对它们分别作简单的介绍。

11

12 1)数据缓冲器UDR UDR数据缓冲器的格式图如图1.7所示:
ATmega16单片机USART 发送数据缓冲寄存器和USART 接收数据缓冲寄存器共享相同的I/O 地址,称为USART 数据寄存器或UDR。将数据写入UDR 时实际操作的是发送数据缓冲器存器(TXB),读UDR 时实际返回的是接收数据缓冲寄存器(RXB) 的内容。 只有当UCSRA寄存器的UDRE标志置位后才可以对发送缓冲器进行写操作。如果UDRE没有置位,那么写入UDR 的数据会被USART 发送器忽略。当数据写入发送缓冲器后,若移位寄存器为空,发送器将把数据加载到发送移位寄存器。然后数据串行地从TxD 引脚输出。

13 2)控制状态寄存器UCSRA、UCSRB、UCSRC (1)控制状态寄存器UCSRA格式图如图1.8所示:
RXC: USART 接收结束 接收缓冲器中有未读出的数据时RXC 置位,否则清零。接收器禁止时,接收缓冲器被刷新,导致RXC 清零。RXC 标志可用来产生接收结束中断( 见对RXCIE 位的描述)。 TXC: USART 发送结束 发送移位缓冲器中的数据被送出,且当发送缓冲器 (UDR) 为空时TXC 置位。执行发送结束中断时TXC 标志自动清零,也可以通过写1 进行清除操作。TXC 标志可用来产生发送结束中断( 见对TXCIE 位的描述)。 UDRE: USART 数据寄存器空

14 TXC: USART 发送结束 发送移位缓冲器中的数据被送出,且当发送缓冲器 (UDR) 为空时TXC 置位。执行发送结束中断时TXC 标志自动清零,也可以通过写1 进行清除操作。TXC 标志可用来产生发送结束中断( 见对TXCIE 位的描述)。 UDRE: USART 数据寄存器空 UDRE标志指出发送缓冲器(UDR)是否准备好接收新数据。UDRE为1说明缓冲器为空,已准备好进行数据接收。UDRE标志可用来产生数据寄存器空中断(见对UDRIE位的描述)。复位后UDRE 置位,表明发送器已经就绪。

15 FE: 帧错误 如果接收缓冲器接收到的下一个字符有帧错误,即接收缓冲器中的下一个字符的第一个停止位为0,那么FE 置位。这一位一直有效直到接收缓冲器(UDR) 被读取。当接收到的停止位为1 时, FE 标志为0。对UCSRA 进行写入时,这一位要写0。 DOR: 数据溢出 数据溢出时DOR 置位。当接收缓冲器满( 包含了两个数据),接收移位寄存器又有数据,若此时检测到一个新的起始位,数据溢出就产生了。这一位一直有效直到接收缓冲器(UDR) 被读取。对UCSRA 进行写入时,这一位要写0。

16 这一位仅对异步操作有影响。使用同步操作时将此位清零。此位置1 可将波特率分频因子从16 降到8,从而有效的将异步通信模式的传输速率加倍。
PE: 奇偶校验错误 当奇偶校验使能(UPM1 = 1),且接收缓冲器中所接收到的下一个字符有奇偶校验错误时UPE 置位。这一位一直有效直到接收缓冲器 (UDR) 被读取。对UCSRA 进行写入时,这一位要写0。 U2X: 倍速发送 这一位仅对异步操作有影响。使用同步操作时将此位清零。此位置1 可将波特率分频因子从16 降到8,从而有效的将异步通信模式的传输速率加倍。 MPCM: 多处理器通信模式 设置此位将启动多处理器通信模式。MPCM 置位后, USART 接收器接收到的那些不包含地址信息的输入帧都将被忽略。发送器不受MPCM设置的影响。

17 (2)控制状态寄存器UCSRB格式图如图1.9所示:
RXCIE: 接收结束中断使能 置位后使能RXC 中断。当RXCIE 为1,全局中断标志位SREG 置位, UCSRA 寄存器的RXC 亦为1 时可以产生USART 接收结束中断。 TXCIE: 发送结束中断使能 置位后使能TXC 中断。当TXCIE 为1,全局中断标志位SREG 置位,UCSRA 寄存器的TXC 亦为1 时可以产生USART 发送结束中断。

18 UDRIE: USART 数据寄存器空中断使能
UDRIE: USART 数据寄存器空中断使能.置位后使能UDRE 中断。当UDRIE 为1,全局中断标志位SREG 置位,UCSRA 寄存器的UDRE 亦为1 时可以产生USART 数据寄存器空中断。 RXEN: 接收使能.置位后将启动USART 接收器。RxD 引脚的通用端口功能被USART 功能所取代。禁止接收器将刷新接收缓冲器,并使 FE、DOR 及PE 标志无效。 TXEN: 发送使能置.位后将启动将启动USART 发送器。TxD 引脚的通用端口功能被USART 功能所取代。TXEN 清零后,只有等到所有的数据发送完成后发送器才能够真正禁止,即发送移位寄存器与发送缓冲寄存器中没有要传送的数据。发送器禁止后,TxD引脚恢复其通用I/O功能。

19 UCSZ2: 字符长度 UCSZ2与UCSRC寄存器的UCSZ1:0结合在一起可以设置数据帧所包含的数据位数(字符长度)。 RXB8: 接收数据位 8 对9 位串行帧进行操作时,RXB8 是第9 个数据位。读取UDR 包含的低位数据之前首先要读取RXB8。 TXB8: 发送数据位8 对9 位串行帧进行操作时,TXB8 是第9 个数据位。写UDR 之前首先要对它进行写操作。

20 (3)控制状态寄存器UCSRC格式图如图1.10所示:
在ATmega16单片机中,UCSRC寄存器与UBRRH寄存器共用相同的I/O地址。对控制寄存器UCSRC的各位介绍如下: URSEL: 寄存器选择 通过该位选择访问UCSRC 寄存器或UBRRH 寄存器。当读UCSRC 时,该位为1 ;当写UCSRC 时, URSEL 为1。 UMSEL: USART 模式选择 当UMSEL位为0时,串行口工作于异步操作模式;当UMSEL位为1时,串行口工作于同步操作模式。

21 UPM1:0: 奇偶校验模式.这两位设置奇偶校验的模式并使能奇偶校验。如果使能了奇偶校验,那么在发送数据,发送器都会自动产生并发送奇偶校验位。对每一个接收到的数据,接收器都会产生一奇偶值,并与UPM0 所设置的值进行比较。如果不匹配,那么就将UCSRA 中的PE 置位。ATmgega16单片机串行口工作时,UPM1:0的设置如表1.1所示: USBS: 停止位选择通过这一位可以设置停止位的位数。接收器忽略这一位的设置。当USBS位为0时,停止位位数为 1;当USBS位为1时,停止位位数为 2。

22 UCSZ1:0: 字符长度.UCSZ1:0与UCSRB寄存器的 UCSZ2结合在一起可以设置数据帧包含的数据位数(字符长度)。其具体设置如表1.2所示:
UCPOL: 时钟极性.这一位仅用于同步工作模式。使用异步模式时,将这一位清零。UCPOL 设置了输出数据的改变和输入数据采样,以及同步时钟XCK 之间的关系。

23 3)波特率设置寄存器 波特率寄存器UBRRL、UBRRH格式如图1.11所示:
URSEL: 寄存器选择通过该位选择访问UCSRC 寄存器或UBRRH 寄存器。当读UBRRH 时,该位为0 ;当写UBRRH 时, URSEL 为0。 Bit 14:12 – 保留位 这些位是为以后的使用而保留的。为了与以后的器件兼容,写UBRRH 时将这些位清零。 Bit 11:0 – UBRR11:0: USART 波特率寄存器.这个12 位的寄存器包含了USART 的波特率信息。其中UBRRH 包含了USART 波特率高4 位,UBRRL 包含了低8 位。波特率的改变将造成正在进行的数据传输受到破坏。写UBRRL 将立即更新波特率分频器。

24 4)时钟的产生-波特率发生器 信号说明: txclk 发送器时钟 ( 内部信号 ) rxclk 接收器基础时钟 ( 内部信号 );
xcki XCK 引脚输入 ( 内部信号 ),用于同步从机操作; xcko 输出到 XCK 引脚的时钟 ( 内部信号 ),用于同步主机操作; foscXTAL 频率 ( 系统时钟 )

25 图1.13给出了计算波特率(位/秒)以及计算每一种使用内部时钟源工作模式的UBRR值的公式。
说明 波特率定义为每秒的位传输速度 (bps) BAUD 波特率 ( bps) fOSC 系统时钟频率 UBRR UBRRH 与 UBRRL 的数值 (0-4095)

26 【硬件电路】 图1.14 硬件连线参考图

27 项目二 异步串行多机通信 MPCM: 多处理器通信模式 设置此位将启动多处理器通信模式。MPCM 置位后, USART 接收器接收到的那些不包含地址信息的输入帧都将被忽略。发送器不受MPCM设置的影响。

28 项目二 异步串行多机通信 RXB8: 接收数据位 8
对9 位串行帧进行操作时,RXB8 是第9 个数据位。读取UDR 包含的低位数据之前首先要读取RXB8。 在多机通信中,如果接收器被设置为接收5~8个数据位的数据帧,第一个停止位则表征该帧包含的是数据信息还是地址信息。如果接收器被设置为接收9个数据位的帧结构,则第9位(RXB8)被用作表征该帧是地址帧还是数据帧。当帧类型表征位为“1”时,表示该帧数据为一个地址帧;当帧类型表征位为“0”时,表示这个帧为一个数据帧。

29 项目二 异步串行多机通信  对于在多机通信系统中的主机MCU,可以设置使用9位数据帧结构(UCSZ=7)。当发送地址帧时,置第9位为“1”;发送数据帧时,置第9位为“0”。在这种情况下,从机也必须设置成接收9位数据帧结构。

30 项目二 异步串行多机通信 多机通信方式的数据交换过程如下: 1.设置所有从机工作在多机通信模式(MPCM=1)。
2.主机发送一个地址帧,所有从机接收和读取该地址帧。所有从机的MCU中,RXC标志位被置位,表示接收到地址帧。 3.每一个从机MCU读取UDR寄存器,并判断自己是否被主机寻址。如果被寻址,清UCSAR寄存器中的MPCM位,等待接收数据;否则保持MPCM为“1”,等待下一个地址帧的接收(该步应由用户软件处理实现)。 4.被寻址的从机MCU接收所有主机下发的数据帧之后,接收直到下一个地址帧为止。其他从机MCU忽略这些数据帧。


Download ppt "项目一 双机通信应用系统 授课教师:刘旭东."

Similar presentations


Ads by Google