- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
同步-异步通信接口USART
* * 第十三、十四章 同步/异步通信接口USART AVR的异步传输接口USART USART特点: 全双工操作:独立的接收和发送数据寄存器 支持同步和异步传输 同步操作时可由主机或从机同步 独立的高精度波特率发生器 扩展的,支持5~9位数据位和1~2位停止位的数据帧格式 硬件支持的奇偶校验 3个独立的中断源:发送完成,接收完成和发送数据寄存器空 支持多机通信模式 支持倍速异步通信模式 AVR的异步传输接口USART 串行时钟发生器:支持四种时钟模式 普通异步模式 双倍速异步模式:只能用于异步通信 主机同步模式 从机同步模式 AVR的异步传输接口USART 波特率发生器: 通信双方必须采用相同的波特率 定义为每秒钟传输的二进制位数,一般为1200的整数倍 波特率由UBRR寄存器的值决定,计算公式见pp.373,表13-1 AVR的异步传输接口USART 数据帧格式: 除波特率外,通信双方还必须采用相同的数据帧格式 1位起始位:0 5~8或9位数据位 1位可选的无校验/奇校验/偶校验位 1~2位停止位:1 USART相关的寄存器 USART数据寄存器UDR TXB[7:0] RXB[7:0] UDR实际上由两个物理上分离的寄存器RXB和TXB组成,它们采用相同的I/O地址。 写UDR实际是写TXB 读UDR实际是读RXB 如果数据寄存器不为空,写入的数据将被忽略 USART相关的寄存器 USART控制和状态寄存器A—UCSRA RXC:USART接收完成,置1产生接收完成中断请求 TXC:USART发送完成,置1产生发送完成中断请求 UDRE:USART发送数据寄存器空,置1产生中断请求 FE:接收帧出错,例如接收到停止位为0 DOR:接收数据溢出出错 PE:校验错误 U2X:USART传输速率倍速,只在异步模式下有效 MPCM:多机通信模式允许,数据帧若不包含地址信息将被忽略 MPCM U2X PE DOR FE UDRE TXC RXC USART相关的寄存器 USART控制和状态寄存器B—UCSRB RXCIE:接收完成中断允许 TXCIE:发送完成中断允许 UDRE:发送数据寄存器空中断允许 RXEN:数据接收允许 TXEN:数据发送允许 UCSZ2:数据字位数大小,与UCSZ[1:0]一起使用 RXB8:接收数据的第8位,为第9位数据,读URD之前读取 TXB8:发送数据的第8位,为第9位数据,写URD之前写入 TXB8 RXB8 UCSZ2 TXEN RXEN UDRIE TXCIE RXCIE USART相关的寄存器 USART控制和状态寄存器C—UCSRC URSEL:UCSRC/UBRRH选择,写UCSRC该位必须写入1 UMSEL:USART工作模式选择,1同步,0异步 UPM[1:0]:校验方式,0:无校验,1:保留,2:偶校验,3:奇校验 USBS:停止位选择,0:1位停止位,1:2位停止位 UCSZ[1:0]:字符长度,与USCZ2一起使用,见表13-5 UCPOL:时钟极性选择,同步模式下有效,见表13-6 UCPOL UCSZ0 UCSZ1 USBS UPM0 UPM1 UMSEL URSEL USART相关的寄存器 波特率寄存器UBRRL和UBRRH URSEL:UCSRC/UBRRH选择,写UBRRH该位必须写入0 UBRR[11:0]:USART波特率设置寄存器 UBRR[7:0] UBRR[11:8] - - - URSEL USART相关的寄存器 对寄存器UCSRC/UBRRH的操作 写操作:URSEL写1,写入UCSRC;写0,写入UBRRH 读操作:第一次读的是UBRRH,连续第二次读的是UCSRC unsigned char ucsrc ucsrc=UBRRH ucsrc=UCSRC return ucsrc 波特率的设置和偏差 pp.380-383,表13-7~13-10给出相应与常用频率的晶体,UBRR的设定值。误差小于±0.5%。 USART的基本操作 USART初始化 波特率设定 数据帧结构设定 发送和接收使能 Void USART_Init(unsigned int baud) { UBRRH=(unsigned char baud8); UBRRL=(unsigned char baud); UCSRB=(1RXEN)|(1TXEN); UCSRC=(1URSEL)|(1USBS)|(3UCSZ0) } USART的基本操作 数据发送:5~8位 循环检测数据寄存器空标志UDRE,为1数据可写入UDR Void USART_Transmit(unsigned char data) { while(!(UCSRA (1UD
文档评论(0)