AVR软USB接口在数据采集系统中应用_第1页
AVR软USB接口在数据采集系统中应用_第2页
AVR软USB接口在数据采集系统中应用_第3页
AVR软USB接口在数据采集系统中应用_第4页
AVR软USB接口在数据采集系统中应用_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、avr软usb接口在数据采集系统中应用【摘要】利用avr单片机atmega8软usb虚拟rs232接口技术,通过单 片机内置a/d转换器对模拟量数据采集,取代以rs232标准接口模拟量数据采 集器。利用现有软件资源,实现usb软接口多点模拟量数据采集功能。硕件电 路简单、性能稳定可靠。解决了传统的rs232接口数据采集器诸多问题。在设 计avr软usb接口 |古|件(atmega8单片机程序)时,usb接口参数配置按usb-isp (同样是avr软usb虚拟rs232接口)卜载线设置;并在pc机系统中安装其 虚拟串驱动程序。能支持pc机win7和xp等操作系统。【关键词】usb;接口; a/d

2、转换;数据采集1 引言在电力生产和电气测试工作中经常需要用便携式pc机通过接口采集和处理 数据。常用的带rs232串口的数据采集器,不允许带电(热)拔插,使用很不 方便。而且现在大部分的pc机不带rs232接口,尤其是便携式机。取而代之的 是usb接口。目前avr单片机usb软接口技术应用的很普遍,最旱是atmel 公司在avr309 software universal serial bus一文中,详细介绍了使用avr 单片机的普通io 口來实现usb接口功能;同时介绍了 atmegas程序(固件) 的编程方法,并提供全部汇编程序源代码。在源码的基础上,笔者通过参阅和分 析不同作者各种版本的

3、usb软接口|占i件(原程序)进行优化组合,更改和删除 一部份程序后,性能有很大的提高。cpu占用率比源码程序低得多。avr单片 机atmegas具备avr高档单片机性能和特点,而价格仅与低档单片机相当。其 内置多路a/d转换器满足模拟数据采集需要。2. atmega8单片机atmega8是atmel公司avr系列单片机。采用低功耗cmos工艺生产的 基于avr risc结构的8位单片机,大多数指令执行时间为单个周期。内有10 位精度的逐次逼近型adco adc与一个8通道的模拟多路复用器连接,能对来 自端口 c的8路单端输入电压进行采样。单端电压输入以0v (gnd)为基准。 adc包括一个

4、采样保持电路,以确保在转换过程中输入到adc的电压保持恒定。 adc ftl avcc引脚单独提供电源。avcc与vcc之间的偏差不能超过±0.3v。 器件之内有标称值为2.56v和avcc基准电压。基准电压可以通过在aref引 脚上加一个电容进行解耦,以更好地抑制噪声。avr单片机的系统内可编程特 性,无需购买昂贵的仿真器和编程器也可进行单片机嵌入式系统的设计和开发; 同时也为单片机的初学者提供了非常方便和简捷的学习开发环境。而且在省电性 能、稳定性、抗干扰性以及灵活性方面考虑得更加周全和完善。atmegas单片 机与其它单片机比较而言,简便易用、费用低,相对进入avr系列单片机开

5、发 的门槛也低,软件资源丰富,程序容易开发。由于atmegas单片机是常用芯片, 本文对其特性、内部结构、引脚说明等不做介绍。3. 硬件电路基于atmega8的usb软接口数据采集硕件电路非常简单。以atmega8单 片机为核心,加上少量的外部元件构成(如图1所示)。图1 usb软接i i数据采集电路图图1中usb数据线d上的上拉电阻r3用于主机识别低速usb设备(usb 规范屮定义)o 12mhz晶体和两个20p的电容组成单-片机运行所必须的时钟(usb 一个数据位有8个时钟周期)。d+连接到pd2,同时也是into引脚。d连接到pd3o电阻rl、r2起到限 流和保护作用,防止在意外情况下损

6、坏计算机的usb端口或单片机的端口。单 片机所需的电源vcc由usb 口输出5v电源直接供电。因为在usb规范屮规定 数据线d+和d上的电平范围是3.0v至3.6v, d1和d2是3.6v稳压二极管, 用于限制数据线上的电平。图中led1和r4为电源指示电路。ledal-leda6. ral-ra6为a/d传换通道指示电路。li、c3、c4按atmega8产品说明手册a/d 转换精度要求设置。rilri6、cil-ci6为模拟信号采样输入设置,其电路和参数 根据不同输入要求而改变。图屮j2是模拟信号采样输入端,可接入单端0-2.56v. 0-5v输入模拟信号。测量交流电参数需要对交流屯信号处理

7、后输入;如要测量 差动模拟信号需要改变输入采样电路。并将单片机atmegas改用atmegal6, atmegal6的a/d转换可单端输入也可差分输入;述冇2路可选增益为10倍与 200倍的差分输入通道;就是多了儿个引脚,电路图有所变化;单片机软件可兼 容和移植,并增加几条有关a/d转换差动输入和数据处理的指令。如需要请参 阅atmegal6产品说明手册(atmel公司网站可下载)。4. atmega8单片机程序(固件)木程序基于单片机atmegas以纯软件完成usb协议接收、发送和解码,以 实现usb接口数据通信功能;通过指令操作单片机内置a/d转换实现模拟量数 据采集功能。usb协议定义低

8、速usb设备通信速率是1.5m位/秒。如单片机使 用12mhz的时钟频率,主频是1.5mhz的8倍。也就是说,单片机每8个周期 就要精确完成一个(对普通10端口)数据位的采集或发送。这种情况对单片机的时序要求严格,为此单片机的软件核心部分代码必须由 汇编语言编写。atmegas芯片是atmel (爱特梅尔)公司的avr系列单片机。 atmel公司网站捉供avr studio集成环境(ide)开发软件免费下载。安装后 直接支持汇编语言。本固件程序以此开发软件汇编编译并烧写(烧写用usbisp 下载线)。程序以模块化结构编写,为了各模块相互运行协调和高效,usb接i做如 下设置约定。状态代码二1:

9、表示收到控制端口 setup令牌包(屮断内收到令牌包后设置)状态代码=2:表示收到控制端口 in包(屮断内收到令牌包后设置)状态代 码=3:表示收到控制端口 out包(中断内收到令牌包后设置)状态代码二5:表示收到数据端口 out包(中断内收到令牌包后设置)状态代码=6:表示收更改地址(主循环内设置)操作标志二2:表示收到控制端口 setup包数据(屮断内收到数据包后设置)操作标志=3:表示发送完控制端口 in数据包(中断内发送完in数据包后 设置)操作标志二4:表示准备好控制端口 in数据包(主循环内设置)端i i号=0:控制端口端口号=1:数据in端口端口号二2:数据out端口端口号二3:

10、串口状态in端口(usb虚拟rs232接口,cdc类规范要求)4主程序程序从系统复位开始初始化系统(设置堆栈地址、存储器及寄存器初始化、 a/d传换器初始化)和设置软usb接口初始值后,进入主程序不断检测usb复 位信号(两条数据线保持10-20ms低电平)。如果出现复位信号就重新进行软usb 接口初始化设置;无usb复位信号就不断检查usb接口状态代码和操作标志, 并调用相应的程序处理。之后是对a/d转换器操作和数据加工及数据传送处理。 主程序是闭合循环体,主程序流程如图2所示。图2主程序流程图主程序在循环运行中主要操作如下:当出现usb接口操作标志=2,表示收到usb接口 setup数据包

11、,是usb 设备描述符请求。程序检查请求类型:如是usb标准请求,准备usb设备请求参数配置枚举 数据回答(有关回答参数配置数据组成和结构按usb协议规范耍求,请参阅 usb2.0规范)。如是设备商请求,准备冇关cdc类参数配置请求内容回答(usb 虚拟rs232接口,请参阅usb通信设备类规范)。然后设置操作标志=4,表示 准备好控制端口 in回应包。再返冋主程序循环体。当出现usb操作标志=3,表示耍继续准备上次未准备完的控制端口 in数据 冋应包。然后设置操作标志=4,表示准备好控制端口 in冋应包。再返冋主程序 循环体。主程序通过读取usb接i i数据端i i的缓冲区数据(在中断程序中

12、接收的数 据端口包out数据)进行分析,按主机a/d数据采集软件接口通信|办议(命令 格式)规定,执行相应的a/d操作指令。如选择a/d通道和选择基准电压等操 作。相对应的启动a/d转换、检查a/d转换是否完成、读取a/d转换数据等操 作指令配合执行。主程序完成a/d数据采集处理后按主机软件数据通信协议格式组成数据包 后,再按usb规范(有效载荷)数据包最前一个字节是数据包标识码,接着是 1到8字节数据(口前软usb最多只能8字节数据),最后增加两字节的crc 校验码(crc校验码用查表法获取,减少占用cpu时间)。此数据包不含nrzi 编码和填充位的内容(nrzi编码和填充位在中断程序发送数

13、据位时同步完成), 是4到11整字节的数据包。装入usb数据端点in数据包缓冲区,由屮断程序 发送到主机。4.2中断(into)程序本程序(固件)设置1个(into)屮断源,屮断程序是固件的主要部分。 程序功能是usb接口数据接收和发送。程序处理流程如图3所示。图3中断程序处理流程图程序首先由usb总线从空闲态转到k态时,usb主机开始发送同步字节, into引脚电平上升沿触发外部中断0 (into), cpu进入中断程序,检查并等待 同步字节(nrzi码)结束信号,开始接收数据位。在接收过程屮对nrzi编码 进行还原和移去填充位(在8个周期内完成nrzi数据流位解码和查找填充位并 移去)后送

14、缓冲区保存;同时检测包eop结束信号单端零(seo)o接收完成一 个数据包(不含同步字节),程序对数据包长度少于3字节,丢弃,退出屮断; 2度大于3字节的以收到(有效载荷)数据包处理。长度等于3字节的可能是令 牌包(第1字节令牌包类型、第2字节低7位是usb地址、第2字节最高1位 和第3字节低3位是端口号、第3字节高5位是令牌包crc校验码);检查地址 确认是木设备后,分析令牌包类型。1)令牌包处理:第1字节=0x2d,是setup令牌包,设状态代码=1 (表示接下收到数据包 按setup数据包处理),退出中断。笫1字节=0xel,是out令牌包,检查端口号。端口号=0是控制端口 out令牌包,设置状态代码=3 (表示接下收到数据包 按控制端口 out数据包处理),退出屮断。端口号不等0,是数据端口 out令牌包。设置状态代码=5 (表示接下收到 数据包按数据端口数据包处理,也就是前介绍的主机a/d数据采集命令数据), 退出中断。笫1字节=0x69,是in令牌包,检查端口号。端口号二0,是控制端口 in令牌包,检查操作标志。如操作标志不等4,表示未准备好控制端口 in数据包,发送nak,退出屮 断。如操作标志=4,表示已准备好控制端口 in数据包,发送控制端口 in数据 包。检查状态代码是否等于地址变动代码,是转改变usb地址处理后,中断返 回。usb地

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论