首页 理论教育 AVR单片机开发与实例:时钟产生与同步模式

AVR单片机开发与实例:时钟产生与同步模式

时间:2023-10-17 理论教育 版权反馈
【摘要】:使用同步模式时,XCK的数据方向寄存器决定时钟源是由内部产生还是由外部产生。图10-6为时钟产生逻辑的框图。图10-6 USART时钟产生逻辑框图1.片内时钟产生——波特率发生器内部时钟用于异步模式与同步主机模式,如图10-6所示。数据恢复单元使用了一个有2、8或16个状态的状态机,具体状态数由UMSEL、U2X与DDR_XCK位设定的工作模式决定。表10-6给出了在某些系统时钟频率下对应的UBRR数值。输入到XCK引脚的外部时钟由同步寄存器进行采样,用以提高稳定性。

AVR单片机开发与实例:时钟产生与同步模式

时钟产生逻辑为发送器和接收器产生基础时钟。USART支持4种模式的时钟:正常的异步模式、倍速的异步模式、主机同步模式,以及从机同步模式。USART控制位UMSEL和状态寄存器C(UCSRC)用于选择异步模式和同步模式。倍速模式(只适用于异步模式)受控于UCSRA寄存器的U2X。使用同步模式(UMSEL=1)时,XCK的数据方向寄存器(DDR_XCK)决定时钟源是由内部产生(主机模式)还是由外部产生(从机模式)。仅在同步模式下XCK有效。

图10-6为时钟产生逻辑的框图。

●Txclk:发送器时钟(内部信号)。

●rxclk:接收器基础时钟(内部信号)。

●xcki:XCK引脚输入(内部信号),用于同步从机操作。

●xcko:输出到XCK引脚的时钟(内部信号),用于同步主机操作。

●fosc:XTAL频率(系统时钟)。

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

图10-6 USART时钟产生逻辑框图

1.片内时钟产生——波特率发生器

内部时钟用于异步模式与同步主机模式,如图10-6所示。USART的波特率寄存器UBRR和降序计数器相连接,一起构成可编程的预分频器或波特率发生器。降序计数器对系统时钟计数,当其计数到零或UBRRL寄存器被写时,会自动装入UBRR寄存器的值。当计数到零时产生一个时钟,该时钟作为波特率发生器的输出时钟,输出时钟的频率为fosc/(UBRR+1)。发生器对波特率发生器的输出时钟进行2、8或16的分频,具体情况取决于工作模式。波特率发生器的输出被直接用于接收器与数据恢复单元。数据恢复单元使用了一个有2、8或16个状态的状态机,具体状态数由UMSEL、U2X与DDR_XCK位设定的工作模式决定。

表10-5给出了计算波特率(bit/s)以及计算每一种使用内部时钟源工作模式的UBRR值的公式。

表10-5 波特率计算公式

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

注意:波特率定义为每秒的位传输速度(bit/s)

表中符号定义如下:

●波特率(bit/s)。

●fosc系统时钟频率。

●UBRR、UBRRH与UBRRL的数值(0~4095)。

表10-6给出了在某些系统时钟频率下对应的UBRR数值。

表10-6 钟频率和对应的UBRR数值

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

(续)

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

2.倍速工作模式(U2X)

通过设定UCSRA寄存器的U2X可以使传输速率加倍。该位只对异步工作模式有效。当工作在同步模式时,设置该位为“0”。设置该位把波特率分频器的分频值从16降到8,使异步通信的传输速率加倍。此时接收器只使用一半的采样数对数据进行采样及时钟恢复,因此在该模式下需要更精确的系统时钟与更精确的波特率设置。发送器则没有这个要求。

3.外部时钟

同步从机操作模式由外部时钟驱动,如图10-6所示。输入到XCK引脚的外部时钟由同步寄存器进行采样,用以提高稳定性。同步寄存器的输出通过一个边沿检测器,然后应用于发送器与接收器。这一过程引入了两个CPU时钟周期的延时,因此外部XCK的最大时钟频率由以下公式限制:

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

要注意fosc由系统时钟的稳定性决定,为了防止因频率漂移而丢失数据,建议保留足够的裕量。

4.同步时钟操作(www.xing528.com)

使用同步模式时(UMSEL=1)XCK引脚被用于时钟输入(从机模式)或时钟输出(主机模式)。时钟的边沿、数据的采样与数据的变化之间的关系的基本规律是:在改变数据输出端TxD的XCK时钟的相反边沿对数据输入端RxD进行采样。

UCRSC寄存器的UCPOL位确定使用XCK时钟的哪个边沿对数据进行采样和改变输出数据。如图10-7所示,当UCPOL=0时,在XCK的上升沿改变输出数据,在XCK的下降沿进行数据采样;当UCPOL=1时,在XCK的下降沿改变输出数据,在XCK的上升沿进行数据采样。

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

图10-7 同步模式时的XCK时序

5.帧格式

串行数据帧由数据字加上同步位(开始位与停止位)以及用于纠错的奇偶校验位构成。USART接受以下30种组合的数据帧格式:

●1个起始位。

●5~9个数据位。

●无校验位、奇校验或偶校验位。

●1或2个停止位。

数据帧以起始位开始;紧接着是数据字的最低位,数据字最多可以有9个数据位,以数据的最高位结束。如果使能了校验位,校验位将紧接着数据位,最后是结束位。当一个完整的数据帧传输后,可以立即传输下一个新的数据帧,或使传输线处于空闲状态。

图10-8所示为可能的数据帧结构组合。括号中的位是可选的。

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

图10-8 数据帧格式

符号说明:

●St起始位,总是为低电平。

●(n)数据位(0~8)。

●P校验位,可以为奇校验或偶校验。

●Sp停止位,总是为高电平

●IDLE通信线上没有数据传输(RxD或TxD),线路空闲时必须为高电平。

数据帧的结构由UCSRB和UCSRC寄存器中的UCSZ[2∶0]、UPM[1∶0]、USBS设定。接收与发送使用相同的设置。设置的任何改变都可能破坏正在进行的数据传送与接收。

USART的字长位UCSZ[2∶0]确定了数据帧的数据位数;校验模式位UPM[1∶0]用于使能与决定校验的类型;USBS位设置帧有一位或两位结束位。接收器忽略第二个停止位,因此帧错误(FE)只在第一个结束位为“0”时被检测到。

6.校验位的计算

校验位的计算是对数据的各个位进行异或运算。如果选择了奇校验,则异或结果还需要取反。校验位与数据位的关系如下:

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

●Peven偶校验结果。

●Podd奇校验位结果。

●dn第n个数据位。

校验位处于最后一个数据位与第一个停止位之间。

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

我要反馈