Atmega16L与PC机的串行通信通用串行接口USART的主要特征ATMEAGl6L带有一个全双工的通用异步收发器(USART),其特征如下:1.全双工操作(独立的串行接收和发送寄存器)2.异步或同步操作、3.主机或从机提供时钟的同步操作、4.高精度的波特率发生器、5.支持5、6、7、8或9个数据位和1个或2个停止位、6.硬件支持的奇偶校验操作、7,数据过速检测、8.帧错误检测、9.噪声滤波,包括错误的起始位检测,以及数字低通滤波器、10.三个独立的中断(发送结束中断、发送数据寄存器空中断、以及接收结束中断)、11.多处理器通讯模式、12.倍速异步通讯模式。
USART的主要寄存器及设置1.USARTI/0数据寄存器-UDF:
USART发送数据缓冲寄存器和USART接收数据缓冲寄存器共享相同的I/0地址,称为USART数据音存器或UDR。特教捉写入UDR时实际操作的是发送数据缓冲器存器(TXB),读U-DR时实际返回的是接收数据缓冲寄存器(RXB)的内容。
在5、6、7比特字长模式下,未使用的高位被发送器忽略,而接收器则将它们设置为0。只有当UCSRA寄存器的UDRE标志置位后才可以对发送缓冲器进行写操作。如果UDRE没有置位,那么写入UDR的数据会被USART发送器忽略。当数据写入发送缓冲器后,若移位寄存器为空,发送器将把数据加载到发送移位寄存器。然后数据串行地从TXD引脚输出。
接收缓冲器包括一个两级FIFO,一旦接收缓冲器被寻址FIFO就会改变它的状态。因此不要对这一存储单元使用读-修改-写指令(SBI和CBI)。使用位查询指令(SBIC和SBISI时也要小心)因为这也有可能改变FIFO的状态。
2.USART控制和状态寄存器A-UCSRA:
Bit7-RXC:USART接收结束,接收缓冲器中有未读出的数据时RXC置位,否则清零。接收器禁止时,接收缓冲器被刷新,导致RXC清零。RXC标志可用来产生接收结束中断。
Bit6-TXC:USART发送结束,发送移位缓冲器中的数据被送出,且当发送缓冲器(UDR)为空时TXC置位。执行发送结束中断时TXC标志自动清零,也可以通过写1进行清除操作。
TXC标志可用来产生发送结束中断。
Bit5-UDRE:USART数据昔存器空,UDRE标志指出发送缓冲器(UDR)是否准备好接收新数据。UDRE为1说明缓冲器为空,已准备好进行数据接收。UDRE标志可用来产生数据寄存器空中断。复位后UDRE置位,表明发送器已经就绪。
Bit4-FE:帧错误,如果接收缓冲器接收到的下一个字符有帧错误,即接收缓冲器中的下一个字符的第一个停止位为0,那么FE置位。这一位一直有效直到接收缓冲器(UDR)被读取。当接收到的停止位为1时,FE标志为O。对UCSRA进行写入时,这一位要写0。
Bit3-DOR:数据溢出,数据溢出时DOR置位。当接收缓冲器满(包含了两个数据),接收移位寄存器又有数据,若此时检测到一个新起始位,数据溢出就产生了。这一位一直有效直到接收缓冲器(UDR)被读取。对UCSRA进行写入时,这一位要写O。
Bit2-PE:奇偶校验错误,当奇偶校验使能(UPM1=1),且接收缓冲器中所接收到的下一个字符有奇偶校验错误时UPE置位。这一位一直有效直到接收缓冲器(UDR)被读取。对UC-SRA进行写入时,这一位要写0。
Bit1-U2X:倍速发送,这一位仅对异步操作有影响。使用同步操作时将此位清零。此位置1可将波特率分频因子从16降到8,从而有效的将异步通信模式的传输速率加倍。
Bit0-MPCM:多处理器通信模式,设置此位将启动多处理器通信模式。MPCM置位后,USART接收器接收到那些不包含地址信息输入帧都将被忽略。发送器不受MPCM设置的影响。
3.USART控制和状态寄存器B-UCSRB:
Bit7-RXCIE:接收结束中断使能,置位后使能RXC中断。
当RXCIE为1,全局中断标志位SREG置位,UCSRA寄存器的RXC亦为1时可以产生USART接收结束中断。
Bit6-TXCIE:发送结束中断使能,置位后使能TXC中断。
当TXCIE为1,全局中断标志位SREG置位,UCSRA寄存器的的RXC亦为1时可以产生USART发送结束中断Bti5-USART数据寄存器空中断使能,置位后使能UDRE中断。当UDRIE为1,全局中断标志位SREG置位,UCSRA寄存器的UDRE亦为1时可以产生USART数据寄存器空中断。
Bit4-RXEN:接收使能,置位后将启动USART接收器。
RxD引脚的通用端口功能被USART功能所取代。禁止按收器将刷新接收缓冲器,并使FE、DOR及PE标志无效。
Bit3-TXEN:发送使能,置位后将启动将启动USART发送器。TXD引脚的通用端口功能被USART功能所取代。TXEN清零后,只有等到所有的数据发送完成后发送器才能够真正禁止,即发送移位寄存器与发送缓冲寄存器中没有要传送的数据。
发送器禁止后,TXD引脚恢复其通用I/0功能。
Bit2-UCSZ2:字符长度,UCSZ2与UCSRC寄存器的UCSZ1:0结合在一起可以设置数据帧所包含的数据位数(字符长度)。
Bit1-RXB8:接收数据位8,对9位串行帧进行操作时,RXB8是第9个数据位。读取UDR包含的低位数据之前首先要读取RXB8。
Bit0-TXB8:发送数据位8,对9位串行帧进行操作时,TXB8是笫9个数据位。写UDR之前首先要对它进行写操作。
UMSEL | 模式 |
0 | 异步操作 |
1 | 同步操作 |
UPM 1 | UPMO | 奇偶模式 |
0 | 0 | 禁止 |
0 | 1 | 保留 |
1 | 0 | 偶校验 |
1 | 1 | 奇校验 |
USBS | 停止位位数 |
0 | 1 |
1 | 2 |
UCSZ2 | UCSZ 1 | UCSZ 0 | 字符长度 |
0 | 0 | 0 | 5位 |
0 | 0 | 1 | 6位 |
0 | 1 | 0 | 7位 |
0 | 1 | 1 | 8位 |
1 | 0 | 0 | 保留 |
1 | 0 | 1 | 保留 |
1 | 1 | 0 | 保留 |
1 | 1 | 1 | 9位 |
UCPOL | 发送数据的改变(TXD 引脚的输出) | 接收数据的采样RXD 引脚的输入) |
0 | XCK上升沿 | XCK下降沿 |
1 | XCK下降洽 | XCK上升沿 |