- 1、本文档共15页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
AVR307使用USI做半双工UART.
精选AVR应用笔记
AVR307: 使用USI做半双工UART
翻译:邵子扬 2006年7月22日
shaoziyang@
特点:
半双工通信
使用14.75M晶体时通信速度可以达到230.4kbps
通信使用中断控制
8位数据位,1个停止位,无校验位
数据缓存
介绍
很多AVR单片机中(如ATtiny26、ATtiny2313、ATmega169等)内置了通用串行接口(USI)。USI模块的设计目的是用于TWI或SPI串行通信的,但是USI不仅仅只能用于这两种串行通信,它也可以用于UART串行通信。
使用USI进行UART通信,可以避免使用麻烦的软件UART。使用USI时,由中断来控制数据自动进行移位,这样减少了处理时间,单片机可以有更多时间处理其它的事情。
这篇应用笔记说明了怎样使用ATtiny26的USI进行UART通信,同时提供了接收和发送的源代码。只要很少的修改,代码也可以用于ATtiny2313和ATmega169。代码带有完整的接收和发送数据缓冲处理,如果需要优化资源也可以将这个特点删除。
理论
UART协议是异步串行通信标准,帧格式是一个起始位后紧跟5到9位数据位,一个校验位(可选)和1至2位停止位,数据发送是LSB(低位在前)。帧格式如图1 所示。
图1. UART通信帧格式
USI是一个基本的 8 位移位寄存器,连接到输入和输出引脚。当用于UART通信时,用一个定时器控制移入/移出数据,当一定数量的位移入/移出后产生USI计数中断。USI框图如图2。
图2 ATtiny26的USI接口
因为UART的帧格式总共是7到13位,典型是10位。USI移位寄存器的宽度小于它,不过可以使用利用USI模块回绕的特点来解决这个限制。
UART接收
接收的解决方法建议检测起始位,然后在合适时间里采样8个数据位(忽略停止位)。数据位的第一次采样位于一位的中间,然后用固定周期连续采样,采样间隔由波特率决定。因为移位寄存器只有8位,而起始位不用保存,最后一个数据位移入就完成。这个方法是从第一位数据开始采样的,因为定时器/计数器0容易使用,用来控制延时和位速率。更多关于位速率内容请参考“位速率”一节。
应当意思到AVR单片机硬件UART、软件UART通信和使用USI模块之间一个不同是输入数据是怎样采样的。硬件UART采用了三次采样多数决定,消除了噪声引起的数据错误。在大部分完全或部分软件UART中只对数据采样一次,这也是USI模块的方式,这样噪声引起数据错误的概率增加了。这也是使用校验位的重要原因之一,校验位没有在本文中探讨。另一种解决方法是使用CRC校验,它在应用笔记AVR350中信息说明。
UART发送
UART发送稍微复杂一点:帧需要分成两部分。USI移位寄存器的MSB直接连到USI的数据输出引脚,为了保证正确的时序,MSB需要保持高直到定时器开始移位数据。USI移位寄存器载入高,即起始位,以及数据的开始 6 位 LSB,然后初始化发送。当数据的前 5 位发送后重新载入移位寄存器,将数据的其余部分送入。载入/重载入 USI 寄存器(USIDR)的过程如图3 。
图3. 载入发送缓存USIDR
USI模式
USI可以选择不同的通信模式,或者叫“线模式“,但是USI是为了SPI和TWI通信设计的,没有UART通信模块。线模式可以选择为“三线“(SPI)或者“两线“(TWI),UART通信选择SPI模式,因为这种模式的数据收线发是分开的。
在两种线模式下,USI都可以产生称为起始条件中断。在SPI模式下起始条件中断由 SCK 引脚的改变触发,但是说明是从 DI(数据输入)唤醒,因此最好使用引脚改变中断。AVR 单片机在各种休眠模式下都可以被引脚改变中断唤醒,所以最好使用它来检测 UART 的起始位。然后在中断程序中处理 UART 接收。SCK 引脚没有使用,可以用于其它用途。
位速率
8位的定时器/计数器用来指定串行通信的位速率。对于 ATtiny26 使用定时器溢出来触发 USI 移位寄存器,对于 ATmega169 使用比较来触发移位寄存器。定时器种子(初值)由公式1决定。
图4. 公式1
如果定时器种子接近定时器的最大值,就要意识到取整后会引入较大的误差。取整误差应当越小越好,因为总的时间误差要小于2%才能保证通信正确-它包括了系统时钟的精度和UART定时误差。
当使用高速通信时,容易出现定时器种子接近定时器最大值。这时在中断之间只有很少的时钟周期,足以引起中断服务程序发生错误。推荐仔细安排定时器中断服务程序需要的周期数,特别要注意对于存在可能阻塞定时器中断的其它中断。此外,还要将中断潜伏作为重要的的参数来考虑,并根据它来修正定时器种子。
您可能关注的文档
最近下载
- 2023-2024学年人教版(新起点)四年级英语下册期末测试卷含答案.docx VIP
- 施乐 DocuPrint C5005d 5005d 彩色激光打印机中文维修手册.pdf
- 非煤矿山井巷工程施工组织设计标准 GB/T 51300-2018.docx VIP
- 2025广东江门市江海区银信资产管理有限公司招聘1人笔试备考题库及答案解析.docx VIP
- 2025广东江门市江海区金信资产管理有限公司招聘1人笔试模拟试题及答案解析.docx VIP
- 2000年《既有建筑地基基础加固技术规范》.pdf VIP
- 延安文艺专题研究知到智慧树期末考试答案题库2025年西安外国语大学.docx VIP
- 广东xx储能电站安全预评价报告.doc VIP
- 温州医科大学2022-2023学年第2学期《高等数学(下)》期末试卷(A卷)附标准答案.pdf
- 预应力张拉孔道灌浆记录表(市政).xls VIP
文档评论(0)