极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 13234|回复: 2

AVR USB技术资料

[复制链接]
发表于 2012-6-7 20:45:26 | 显示全部楼层 |阅读模式
原文地址:http://www.laoguo.org/tag/usb

AVRUSB技术是利用高性能的8位RISC架构的AVR单片机,使用单片机的IO口来模拟USB的通信端口,由软件来实现USB通信协议,将普通的AVR单片机模拟成一个USB低速设备,从而实现AVR单片机与计算机之间的通信和控制。

AVRUSB技术的基本原理就是利用AVR单片机的普通IO端口来模拟USB的硬件端口进行通信。因为低速USB设备的速度是1.5M位/秒,而AVR单片机是单指令周期的,在单片机使用12MHz的时钟频率时,正好是1.5MHz的8倍。也就是说,单片机每8条指令就精确完成一个数据位的采集。采用这种方法时,对单片机的时序要求非常严格,所以软件的核心部分代码完全由汇编语言实现。

构成一个AVRUSB系统的硬件结构非常简单,只需要一个普通的AVR单片机(大部分型号都可以),再加上少量的外部元件(晶体、几个电阻以及可选的稳压二极管等),就组成了一个基本的AVRUSB系统。

一个基本的AVRUSB硬件接口:


图中的单片机以ATmega8为例。数据线D-上的上拉电阻R4用来通知计算机这是一个低速USB设备(这是在USB规范中定义的,更多内容请参考AVR309以及USB的官方文档)。12MHz晶体和两个22p的电容C2和C3组成单片机运行所必须的时钟。D+ 和D- 数据线可使用单片机的任意IO端口,但是必须使用相同的IO端口。在这里D+ 连接到PB1,D- 连接到PB0。此外数据线D+还需要连接到INT0上,这是为了在不同的AVR单片机中使用AVRUSB时有更好的适应性和兼容性,无需修改底层核心部分程序的代码。如果D-连接到端口D上(就是和INT0同一端口中),同时D+只连接到INT0,还可以节省出一个端口来。

电阻R2、R3起到限流和保护作用,防止在意外情况下损坏计算机的USB端口或单片机的端口。单片机所需的电源Vcc可由USB的5V输出电源直接提供,或者由USB的5V电源转换得到(如LDO、稳压二极管等),或者通过电池等其他外部电源来供电。

D+和D-上的3.6V稳压二极管D1和D2起到限制数据线上的电平的作用。因为在USB规范中规定数据线D+和D-上的电平范围是3.0V至3.6V,而AVR单片机的输出电平是Vcc。如果单片机的Vcc是5V,在没有D1和D2的情况下将造成电平不匹配,会造成在很多计算机中无法正确识别出USB设备。如果用户系统的Vcc在3.0V至3.6V之间,就可以省略这两个稳压二极管。从这里也可以看出用户系统的Vcc必须高于3V。

上面硬件就组成了一个最小的AVRUSB系统,它能够和计算机进行USB通信。在上面最小系统的基础上,如果添加一个红外传感器,就可以接收发送红外信号,就是一个USB红外控制器;如果添加一个MAX202,就是一个带缓冲的USB <-> RS232串口转换器;如果加入ADC转换功能,就是USB的数据采集器;如果加入ADC和电源控制,就能够实现一个简单实用的USB充电器……各种功能的AVRUSB系统都是在这个最小系统的基础上,添加不同功能的外围模块或接口来实现的。

传统的单片机与计算机进行USB通信,需要使用专用的接口芯片进行USB协议转换,如CP2101、FT232、CH342、PDIUSBD12、SL811等。象CP2101、FT232这样的芯片使用起来虽然简单,但是功能比较单一;而PDIUSBD12、SL811功能较强,但是使用复杂。并且这些专用芯片的价格都相对较高,增加了系统的成本。而AVRUSB简单易用,成本低廉,只需要一个普通的低成本AVR单片机以及很少的几个外部元件,就可以组成一个USB系统。

AVRUSB的代码为AVR GCC编译器做了高度优化,同时也完全兼容于更专业的IAR C编译器。程序编译后在最小情况下还不到2KB,因此绝大部分的AVR单片机都可以使用AVRUSB(只要支持外部中断INT0,Flash容量不小于2KB就可以实现AVRUSB的功能)。这样在很多低成本的小容量AVR单片机上也可以使用AVRUSB,如ATtiny2313、ATmega45、ATmega48等,因此AVRUSB技术具有很高的实用价值。

AVRUSB提供了一个完整而又简单易用、成熟稳定的应用程序框架。这个框架包括了底层(单片机部分)和上层(PC部分),单片机可以使用gcc(或者IAR)编程;PC上则可以使用各种通用编程软件,如Windows下使用VC、VB、Delphi、C++ Builder、BDS2006、GCC,Linux下使用GCC等等。用户可以在这个框架基础上添加和扩展各种功能,快速开发出适合于各种需求的单片机控制系统,而且AVRUSB支持Windows、Linux、MacOS等多种操作系统,具有很好的跨平台特性。

AVR单片机低成本、高性能的特性,使得AVRUSB非常适合于应用到USB加密狗、USB接口的系统控制、低速USB数据采集等,这样构成的具有USB通信功能的单片机系统比很多使用专用芯片的系统简单、成本低。目前,AVRUSB已经成功应用到了很多产品上,比较有名的有:USBasp(USB接口的AVR编程器)、AVRCDC(USB转RS232串口)、USB Bootlader(USB接口的Bootloader软件)等.

详细资料下载:
1:USB协议(中文)
2:USB Class Codes
3:AVRUSB技术文档(简介,硬件,开发应用等)
3:AVR-CDC(AVR仿USB-CDC类源代码2007-07-07)
4:AVR-CDC(AVR仿USB-CDC类源代码2008-08-25)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2013-5-11 11:22:36 | 显示全部楼层
这么好的东西一定得顶
回复 支持 反对

使用道具 举报

发表于 2014-1-15 10:25:02 | 显示全部楼层
感谢楼主 最近正在研究usb com通信
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-3-28 18:36 , Processed in 0.058034 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表