




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
精选AVR应用笔记AVR305: 紧凑的半双工软件串口翻译:邵子扬 2006年5月18日特点l 只有32字代码l 在1MHz时钟下波特率可以达到 38.4kl 可以在任何 AVR 单片机上使用l 只需要两个端口l 不使用任何定时器1 介绍在许多应用中使用了串口通信,软件处理通信不用作为后台任务。这篇应用笔记说明了怎样轮询软件UART,在AT90S1200上的处理速度可以高达 614,400 bps。这里的目的是为了需要更小代码的应用,所有的位延时是软件延时,所以不需要定时器。在接收或发送数据时单片机不能处理其它任务,但是接收或发送完成后单片机可以执行其它的功能。2 理论在异步串行通信中,没有传送时钟信号。数据串行发送,一次一位。在空闲状态下,数据线保持在逻辑 “1”。当数据发送时,第一位称为起始位,通常用符号 S 表示。起始位总是 “0”,引起一个 “1” 到 “0” 变化。这可以被计数器检测出来,通知开始数据传送。后面传送的位是数据位,LSB 在前。在就是1个或多个停止位,停止位总是逻辑 “1”,释放信号线成为空闲状态。至少需要1个停止位,这样接收器才能检测到 “1” 到 “0”的跳变,也就是起始位。图2-1显示了8个数据位和1个停止位。有时,在数据位和停止位之间还包括了校验位,以及多个停止位。图2-1. 帧格式接收器必须在每位的中间对数据进行采样,这样才能得到正确得数据。所有数据位的宽度都相等,这样接收器才可以知道什么时候开始采样。接收器和发生器通过起始位的下降沿同步,接收器必须通过内部的定时器进行正确的采样。发生器和接收器的位宽度必须相等,在习惯上定义了一些标准波特率。3 执行3.1 位延时 - UART_delay位之间的延时由调用延时子程序两次产生(因为子程序产生半位延时)。如果需要非常短的延时(当以很高速度发送和接收数据时),延时必须在 putchar 和 getchar 子程序内部执行。延时时间可以由下面公式来计算:这里 C 是以时钟周期为单位的位宽度,fCLCL 是时钟频率。putchar 和 getchar 都使用了9个 CPU 周期发送或接收一个位,所以在每位之间要产生 c - 9 个周期的延时。rcall 和 ret 指令需要总共7个周期,如果子程序调用两次来产生延时,就需要延时 d 个周期:如果产生下面的延时,总的运行时间是 3b 周期减去 7 个周期的 rcall 和 ret。rcall UART_delayUART_delay: ldi temp,bUART_delay1: dec tempbrne UART_delay1ret参数 b 由下面公式计算:调用延时程序两次后,实际产生的延时是:从这里可以看出,最小和最大的延时是:dmin = 29 和 dmax = 1,559 周期。表3-1. “UART_delay” 子程序的性能参数数字代码大小4(字)执行周期最小:7 最大:772(包括 ret)使用寄存器低寄存器: 无高寄存器: 无全局: 1表3-2. “UART_delay” 使用寄存器寄存器输入局部输出R17-“temp” 计数变量-3.2 发送数据 - putcharputchar 子程序发送 Txbyte 寄存器的内容。数据位移位到 Carry 位。最简单的产生停止位的方法是使0移位到发送的字节并解释成1。如果数据字节在移位前翻转,在 Carry 中 ”0” 就成为 “1”,”1” 就成为 “0”。当0移位到数据字节,它们就处理成为了1。利用这个方法,任何位数的停止位都可以通过重复发送产生。起始位由设置 carry 位产生。表3-3. “putchar” 子程序性能参数数字代码大小14个字执行周期与波特率有关使用寄存器低寄存器: 无高寄存器: 无全局: 2表3-4. “putchar” 使用寄存器寄存器输入局部输出R16-“bitcnt” 位计数-R18Txbyte 发送的数据-发送数据的算法如图3-1所示。图3-1. putchar 子程序3.3 接收数据 - getchar首先,子程序等待逻辑 ”0” (不转换)。当检测到起始位,先延时1.5位。这由调用延时子程序3次产生,然后采样起始位1个周期。Carry 按照RxD的逻辑值设置或清除,如果接收到的数据位不到8个,Carry 右移后继续接收,否则就返回 Rxbyte。子程序在最后一位数据和停止位中间延时1位时间,这是为了防止在刚接收完上一次数据后立即再次调用接收时检测起始位失败。表3-5. “getchar” 子程序性能参数数字代码大小14个字执行周期等待直到完成数据接收使用寄存器低寄存器: 无高寄存器: 无全局: 2表3-6. “getchar” 使用寄存器寄存器输入局部输出R16-“bitcnt” 接收位计数-R18-“Rxbyte” 接收的数据接收算法如图3-2。图3-2. getchar 子程序4 例子这个例子程序用 getchar 接收一个字符并用 putchar 将它返回。表4-1. 总性能参数数字代码大小32个字 只 UART 接收40个字 完整程序使用寄存器低寄存器: 无高寄存器: 4全局: 无使用中断无使用外设端口D0和D1(可以使用任意的IO口)表4-2. 波特率表波特率周期b值误差2400768124039600192280.514400128182.31920096121.0288006471.6576003229.4115200-1 MHz 1.8432 MHz 2 MHz波特率周期b值误差24008331350.04800417660.69600208310.314400139191.419200104142.7288006982.2576003520.8115200-波特率周期b值误差2400417660.64800208310.39600104142.7144006982.2192005251.8288003520.857600-115200-2.4576 MHz 3.276 MHz 3.6864 MHz波特率周期b值误差240013652240.148006831100.09600341530.114400228340.219200171251.428800114150.7576005763.71152002812.0波特率周期b值误差240015362520.148007681240.19600384600.314400256390.419200192280.528800128182.3576006471.61152003229.4波特率周期b值误差24001024167069600256390.414400171251.419200128182.32880085102.7576004333.9115200-波特率周期b值误差240030725080480015362520.196007681240.114400512820.619200384600.328800256390.457600128182.31152006471.64 MHz 4.608 MHz 7.3728 MHz波特率周期b值误差240019203160.148009601560.19600480760.214400320500.919200240360.428800160230.65760080103.81152004032.5波特率周期b值误差240016672740480083313509600417660.614400278421.019200208310.328800139191.4576006982.21152003520.88 MHz 9.216 MHz 11.059 MHz波特率周期b值误差240046087640480023043800960011521880.1144007681240.119200576920.228800384600.357600192280.511520096121.0波特率周期b值误差240038406360480019203160.196009601560.1144006401030.219200480760.228800320500.957600160230.611520080103.8波特率周期b值误差2400333355204800166727409600833135014400556890.319200417660.628800278421.057600139191.41152006982.214.746 MHz 16 MHz波特率周期b值误差24006667110704800333355209600166727401440011111810.219200833135028800556890.357600278421.0115200139191.4波特率周期b值误
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 46129-2025核电厂智能运维系统通用要求
- 桉树买卖合同(标准版)
- 教育产品供货合同(标准版)
- 木耳合同(标准版)
- 供暖制冷bot合同范本
- 收购蜂蜜的合同范本
- 协议合同范本文件
- 地摊土建租赁合同范本
- 废旧聚氨酯出售合同范本
- 成人服装租赁合同范本
- 临床提升急诊患者院内转运安全措施落实率品管圈
- 《全面质量管理》习题集(含答案)
- 海天集团在线测评题
- 第一单元 少年有梦 单元思考与行动 教案-2024-2025学年统编版道德与法治七年级上册
- 《不忘初心》课件
- 统编版(部编版)语文二年级上册 作业设计《小蝌蚪找妈妈》(含答案)
- 《乌鲁木齐市国土空间总体规划(2021-2035年)》
- 2024年新版七年级上册道德与法治第一课 开启初中生活1.1 奏响中学序曲 课件
- 2024年物业经理(初级)职业鉴定考试题库(含答案)
- 炼焦厂推焦车司机岗位技术操作规程
- 儿科急危重症抢救预案及流程
评论
0/150
提交评论