首页 理论教育 异步数据接收:AVR单片机开发入门与实例

异步数据接收:AVR单片机开发入门与实例

时间:2023-10-17 理论教育 版权反馈
【摘要】:USART有一个时钟恢复单元和数据恢复单元用来处理异步数据接收。图10-10 数据及奇偶位的采样确定接收到的数据位的逻辑电平的方法为多数表决法。表决对象即为三个在数据位中心获得的采样。对起始位的及早检测将影响接收器的工作范围。

异步数据接收:AVR单片机开发入门与实例

USART有一个时钟恢复单元和数据恢复单元用来处理异步数据接收。时钟恢复逻辑用于同步从RxD引脚输入的异步串行数据和内部的波特率时钟。数据恢复逻辑采集数据,并通过一低通滤波器过滤所输入的每一位数据,从而提高接收器的抗干扰性能。异步接收的工作范围依赖于内部波特率时钟的精度、帧输入的速率及一帧所包含的位数。

1.恢复异步时钟

时钟恢复逻辑将输入的串行数据帧与内部时钟同步起来。图10-9展示了对输入数据帧起始位的采样过程。普通工作模式下采样率是波特率的16倍,倍速工作模式下则为波特率的8倍。水平箭头表示由于采样而造成的同步的变化。使用倍速模式(U2X=1)时同步变化时间更长。RxD线空闲(即没有任何通信活动)时,采样值为0。

978-7-111-35161-0-Chapter10-56.jpg

图10-9 输入数据帧起始位的采样过程

当时钟恢复电路检测到RxD线上一个由高(空闲)到低(开始)的电平跳变时,起始位检测序列即被启动。我们用采样1表示第一个0采样。然后,时钟恢复逻辑用采样8、9、10(普通模式),或采样4、5、6(倍速模式),来判断是否接收到一个正确的起始位。如果这三个采样中的两个或更多个是逻辑高电平(多数表决),起始位会被视为毛刺噪声而被拒绝接受,接收器等待下一个由高到低的电平转换。如果检测到一个有效的起始位,时钟恢复逻辑即被同步并开始接收数据。每一个起始位都会引发同样的同步过程。

2.恢复异步数据

接收时钟与起始位同步之后,数据恢复工作可开始了。数据恢复单元使用一个状态机来接收每一个数据位。这个状态机在普通模式下具有16个状态,在倍速模式下具有8个状态。图10-10演示了对数据位和奇偶位的采样。每个采样点都被赋予了一个数字,这个数字等于数据恢复单元当前的状态序号

978-7-111-35161-0-Chapter10-57.jpg

图10-10 数据及奇偶位的采样

确定接收到的数据位的逻辑电平的方法为多数表决法。表决对象即为三个在数据位中心获得的采样。为了强调这些采样,图中采样序号被包含小方框中。多数表决是这样工作的:如果有2个或所有3个采样值都是高电平,那么接收位就为逻辑1。如果2个或所有3个采样值都是低电平,那么接收位就为逻辑0。对从RxD引脚输入的信号来说,多数表决的作用就像是一个低通滤波。数据恢复过程重复进行,直到接收到一个完整的数据帧。其中也包含了第一个停止位。接收器将忽略其他的停止位。图10-11说明了停止位的采样,以及下一帧信号起始位最早可能出现的情况。

978-7-111-35161-0-Chapter10-58.jpg

图10-11 停止位及下一个起始位采样

多数表决对停止位同样有效。若停止位为逻辑0,那么帧错误标志FE置位。如果电平再一次出现了从高到低的跳变,说明紧接着上一个数据帧来了新的数据帧。在普通模式中,第一个低电平的采样点可以发生在图10-11的A点。在倍速工作模式下第一个低电平采样点必须延迟到B点,C点则为完整停止位的结束位置。对起始位的及早检测将影响接收器的工作范围。

3.异步工作范围

接收器的工作范围取决于接收到的数据速率及内部波特率之间的不匹配程度。如果发送器以过快或过慢的波特率传输数据帧,或者接收器内部产生的波特率没有相同的频率(见Table61),那么接收器就无法与起始位同步。

下面的公式可用来计算数据输入速率与内部接收器波特率的比值。

978-7-111-35161-0-Chapter10-59.jpg

符号说明:

●D是字符长度及奇偶位长度的总和(D=5到10位)。

●S是每一位的采样数。普通模式下S=16,倍速模式下S=8。

●SF用于多数表决的第一个采样序号。普通模式下SF=8,倍速模式下SF=4。

●SM用于多数表决的中间采样序号。普通模式下SM=9,倍速模式下SM=5。(www.xing528.com)

●Rslow是可接受的、最慢的数据输入速率与接收器波特率的比值;Rfast是可接受的、最快的数据输入速率与接收器波特率的比值。

表10-7和表10-8列出了容许的最大接收器波特率误差。需要注意的是,普通模式下波特率允许有更大的变化范围。

表10-7 普通模式下推荐的最大接收器波特率误差范围(U2X=0)

978-7-111-35161-0-Chapter10-60.jpg

表10-8 倍速率模式下推荐的最大接收器波特率误差范围(U2X=1)

978-7-111-35161-0-Chapter10-61.jpg

上述推荐的最大接收波特率误差是在假定接收器和发送器对最大总误差具有同等贡献的前提下得出的。产生接收器波特率误差的可能原因有两个。首先,接收器系统时钟(XTAL)的稳定性与电压范围及工作温度有关。使用晶振来产生系统时钟时一般不会有此问题,但对于谐振器而言,根据谐振器不同的误差容限,系统时钟可能有超过2%的偏差。第二个误差的原因就好控制多了。波特率发生器不一定能够通过对系统时钟的分频得到恰好的波特率。此时可以调整UBRR值,使得误差低至可以接受。

4.多处理器通信模式置位

UCSRA的多处理器通信模式位MPCM可以对USART接收器接收到的数据帧进行过滤。那些没有地址信息的帧将被忽略,也不会存入接收缓冲器。在一个多处理器系统中,处理器通过同样的串行总线进行通信,这种过滤有效地减少了需要CPU处理的数据帧的数量。MPCM位的设置不影响发送器的工作,但在使用多处理器通信模式的系统中,它的使用方法会有所不同。

如果接收器所接收的数据帧长度为5~8位,那么第一个停止位表示这一帧包含的是数据还是地址信息。如果接收器所接收的数据帧长度为9位,那么由第9位RXB8来确定是数据还是地址信息。如果确定帧类型的位(第一个停止位或第9个数据位)为1,那么这是地址帧,否则为数据帧。

在多处理器通信模式下,多个从处理器可以从一个主处理器接收数据。首先要通过解码地址帧来确定所寻址的是哪一个处理器。如果寻址到某一个处理器,它将正常接收后续的数据,而其他的从处理器会忽略这些帧直到接收到另一个地址帧。

5.使用MPCM

对于一个作为主机的处理器来说,它可以使用9位数据帧格式(UCSZ=7)。如果传输的是一个地址帧(TXB8=1)就将第9位TXB8置1,如果是一个数据帧(TXB=0)就将它清零。在这种帧格式下,从处理器必须工作于9位数据帧格式。

下面即为在多处理器通信模式下进行数据交换的步骤:

1)所有从处理器都工作在多处理器通信模式(UCSRA寄存器的MPCM置位)。

2)主处理器发送地址帧后,所有从处理器都会接收并读取此帧。从处理器UCSRA寄存器的RXC正常置位。

3)每一个从处理器都会读取UDR寄存器的内容以确定自己是否被选中。如果选中,就清零UCSRA的MPCM位,否则它将等待下一个地址字节的到来,并保持MPCM为1。

4)被寻址的从处理器将接收所有的数据帧,直到收到一个新的地址帧。而那些保持MPCM位为1的从处理器将忽略这些数据。

5)被寻址的处理器接收到最后一个数据帧后,它将置位MPCM,并等待主处理器发送下一个地址帧。然后按第2步之后的步骤重复进行。

使用5~8位的帧格式是可以的,但是不实际,因为接收器必须在使用n和n+1帧格式之间进行切换。由于接收器和发送器使用相同的字符长度设置,这种设置使得全双工操作变得很困难。如果使用5~8位的帧格式,发送器应该设置两个停止位(USBS=1),其中的第一个停止位被用于判断帧类型。

不要使用读-修改-写指令(SBI和CBI)来操作MPCM位。MPCM和TXC标志使用相同的I/O单元,使用SBI或CBI指令可能会不小心将它清零。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈