- 1、本文档共122页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ATmega单片机的串行通信接口99~133解读
5.3 USART 描述 通用同步和异步串行接收器和转发器(USART) 是一个高度灵活的串行通讯设备。 5.3.1 USART主要特点 全双工操作( 独立的串行接收和发送寄存器) ? 异步或同步操作 ? 主机或从机提供时钟的同步操作 ? 高精度的波特率发生器 ? 支持5, 6, 7, 8, 或9个数据位和1个或2个停止位 ? 硬件支持的奇偶校验操作 ? 数据过速检测 ? 帧错误检测 ? 多处理器通讯模式 ? 倍速异步通讯模式 ? 噪声滤波,包括错误的起始位检测,以及数字低通滤波器 ? 三个独立的中断:发送结束中断,发送数据寄存器空中断,以及接收结束中断 5.3.3 时钟 时钟产生逻辑为发送器和接收器产生基础时钟。 1、USART 支持4 种模式的时钟: 正常的异步模式 倍速的异步模式 主机同步模式 从机同步模式 3、内部时钟用于异步模式与同步主机模式 USART的波特率寄存器(UBRR)和降序计数器相连接,一起构成可编程的预分频器或波特率发生器。降序计数器对系统时钟计数,当其计数到零或UBRRL寄存器被写时,会自动装入UBRR 寄存器的值。 当计数到零时产生一个时钟,该时钟作为波特率发生器的输出时钟,其频率为fosc/(UBRR+1)。发生器对波特率发生器的输出时钟进行2、8或16 的分频,具体情况取决于工作模式。 4、倍速工作模式 (U2X): 通过设定UCSRA 寄存器的U2X 可以使传输速率加倍,该位只对异步工作模式有效,当工作在同步模式时,设置该位为“0”。 设置该位把波特率分频器的分频值从16 降到8,使异步通信的传输速率加倍,在该模式下需要更精确的系统时钟与更精确的波特率设置。 5、外部时钟 输入到XCK 引脚的外部时钟由同步寄存器进行采样,用以提高稳定性。因此外部XCK 的最大时钟频率由以下公式限制: 6、同步时钟操作 使用同步模式时(UMSEL = 1),XCK 引脚被用于时钟输入( 从机模式) 或时钟输出(主机模式)。时钟的边沿、数据的采样与数据的变化之间的关系的基本规律是:在改变数据输出端TxD 的XCK 时钟的相反边沿对数据输入端RxD 进行采样。 UCRSC寄存器的UCPOL位确定使用XCK的哪个边沿。 5.3.4 帧格式 串行数据帧由数据字加上同步位( 开始位与停止位) 以及用于纠错的奇偶校验位构成。 1、帧格式的构成 ? 1个起始位 ? 5、 6、 7、 8 或9个数据位 ?无校验位、奇校验或偶校验位 ? 1或2个停止位 5.3.5 USART 的初始化 通信之前首先要对USART 进行初始化。初始化过程通常包括: 波特率的设定 帧结构的设定 使能接收器或发送器。 为使用中断驱动的USART,将全局中断标志位(全局中断被屏蔽) 清零。 重新改变USART 的设置应该在没有数据传输的情况下进行 例5.4 USART 初始化程序实例,程序采用了轮询(中断被禁用) 的异步操作,帧结构是固定的,波特率作为函数参数给出。 void USAT_Init(unsigned int baud) { UBRRH=(unsigned char)(baud8); UBRRL=(unsigned char)baud;//设置波特率 P141 UCSRB=(1RXEN)|(1TXEN);//接收器与发送器使能 P139 UCSRC=(1URSEL)|(1USBS)|(3UCSZ0); //写UCSRC,2停止位,8数据位,P140 } 5.3.6 数据发送 – USART 发送器 置位UCSRB 寄存器的发送允许位TXEN 将使能USART 的数据发送。 使能后TxD 引脚的通用I/O 功能即被USART功能所取代,成为发送器的串行输出引脚。 发送数据之前要设置好波特率、工作模式与帧结构。如果使用同步发送模式, XCK 引脚上的时钟信号即为数据发送的时钟。 1、 发送5 到8 位数据位的帧 将需要发送的数据加载到发送缓存器,加载过程为CPU 对UDR 寄存器的写操作。 当移位寄存器可以发送新一帧数据时,缓冲的数据将转移到移位寄存器。 当移位寄存器处于空闲状态(没有正在进行的数据传输),或前一帧数据的最后一个停止位传送结束,它将加载新的数据。 viod USART_Transmit(unsigned char data) { while(!(UCSRA(1UDRE)));//等待发送器为空 UDR=data; } 2、发送9 位数据位的帧 如果发送9位数据的数据帧(UCSZ = 7),应先将数据的第9位写入寄存器UCSRB 的TXB8,然后再将低8位数据写入发送数据寄存器UDR。以下程序给出发送9位数据的
文档评论(0)