微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > AVR学习心得(四)

AVR学习心得(四)

时间:11-10 来源:互联网 点击:
AVR mega128简单的串行通讯原理

单片机同PC通讯是用的都是UART进行通讯,其实各种单片机的串行通讯原理是完全相同的,而不同的仅仅是器控制的寄存器不同。对于mega128来说比51功能强大些,完全不用占用任何别的资源。只要控制好相应的寄存器就好了。

ATmega128具有两个USART:USART0和USART1,这两个USART的具体功能将在下面描述。USART0和USART1使用不同的IO寄存器注意:在ATmega103兼容模式中USART1.UBRR0H和UCRS0C无效.这意味ATmega128仅可以使用USART0以异步方式工作

USARTn 数据寄存器-UDRn:接受和发送数据寄存器

只有当UCSRA寄存器的UDRE标志置位后才可以对发送缓冲器进行写操作。如果UDRE没有置位,那么写入UDR 的数据会被USART 发送器忽略。当数据写入发送缓冲器后,若移位寄存器为空,发送器将把数据加载到发送移位寄存器。然后数据串行地从TxD 引脚输出。
接收缓冲器包括一个两级FIFO,一旦接收缓冲器被寻址FIFO 就会改变它的状态。因此不要对这一存储单元使用读- 修改- 写指令(SBI 和CBI)。使用位查询指令(SBIC 和SBIS)时也要小心,因为这也有可能改变FIFO 的状态。

USARTn 控制和状态寄存器A -UCSRnA:

&8226;Bit 7 – RXCn: USART 接收结束
接收缓冲器中有未读出的数据时RXCn 置位,否则清零。接收器禁止时,接收缓冲器被刷新,导致RXCn 清零。RXCn 标志可用来产生接收结束中断( 见对RXCIEn 位的描述)。
&8226; Bit 6 – TXCn: USART 发送结束
发送移位缓冲器中的数据被送出,且当发送缓冲器 (UDRn) 为空时TXCn 置位。执行发送结束中断时TXCn 标志自动清零,也可以通过写1 进行清除操作。TXCn 标志可用来产生发送结束中断( 见对TXCIEn 位的描述)。
&8226; Bit 5 – UDREn: USART 数据寄存器空
UDREn 标志指出发送缓冲器(UDRn) 是否准备好接收新数据。UDREn 为1 说明缓冲器为空,已准备好进行数据接收。UDREn 标志可用来产生数据寄存器空中断( 见对UDRIEn位的描述)。复位后UDREn 置位,表明发送器已经就绪。
&8226; Bit 4 – FEn: 帧错误
如果接收缓冲器接收到的下一个字符有帧错误,即接收缓冲器中的下一个字符的第一个停止位为0,那么FEn 置位。这一位一直有效直到接收缓冲器(UDRn) 被读取。当接收到的停止位为1 时, FEn 标志为0。对UCSRnA 进行写入时,这一位要写0。
&8226; Bit 3 – DORn: 数据过速
数据过速时DORn 置位。当接收缓冲器满( 包含了两个数据),接收移位寄存器又有数据,若此时检测到一个新的起始位,数据溢出就产生了。这一位一直有效直到接收缓冲器(UDRn) 被读取。对UCSRnA 进行写入时,这一位要写0。
&8226; Bit 2 – UPEn: 奇偶校验错误

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

USARTn 控制和状态寄存器B -UCSRnB:

&8226; Bit 7 – RXCIEn: 接收结束中断使能
置位后使能RXCn 中断。当RXCIEn 为1,全局中断标志位SREG 置位,UCSRnA 寄存器的RXCn 亦为1 时可以产生USARTn 接收结束中断。
&8226; Bit 6 – TXCIE: 发送结束中断使能
置位后使能TXCn 中断。当TXCIEn 为1,全局中断标志位SREG 置位, UCSRnA 寄存器的TXCn 亦为1 时可以产生USARTn 发送结束中断。
&8226; Bit 5 – UDRIEn: USART 数据寄存器空中断使能
置位后使能UDREn 中断。当UDRIEn 为1,全局中断标志位SREG 置位, UCSRnA 寄存器的UDREn 亦为1 时可以产生USARTn 数据寄存器空中断。
&8226; Bit 4 – RXENn: 接收使能
置位后将启动USARTn 接收器。RxDn 引脚的通用端口功能被USARTn 功能所取代。禁止接收器将刷新接收缓冲器,并使 FEn、DORn 及UPEn 标志无效。
&8226; Bit 3 – TXENn: 发送使能
置位后将启动将启动USARTn 发送器。TxDn 引脚的通用端口功能被USARTn 功能所取代。TXENn 清零后,只有等到所有的数据发送完成后发送器才能够真正禁止,即发送移位寄存器与发送缓冲寄存器中没有要传送的数据。发送器禁止后,TxDn 引脚恢复其通用I/O 功能。
&8226; Bit 2 – UCSZn2: 字符长度
UCSZn2与UCSRnC寄存器的UCSZn1:0结合在一起可以设置数据帧所包含的数据位数(字符长度)。
&8226; Bit 1 – RXB8n: 接收数据位8
对9 位串行帧进行操作时,RXB8n 是第9 个数据位。读取UDRn 包含的低位数据之前首先要读取RXB8n。
&8226; Bit 0 – TXB8n: 发送数据位8
对9位串行帧进行操作时,TXB8n是第9个数据位。写UDRn之前首先要对它进行写操作。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top