标签:
AVR USB 软件模拟
刚毕业就失业,真是悲哀。不过在家里也不能闲着,找点事做。
一个玩友让我帮忙做一个玩飞行游戏用的脚跎,电路简单,主要是编程他不行,让我帮忙。反正没什么事,而且自己也是飞行游戏爱好者,所以就答应了。
自学单片机有一段时间了,但第一次搞USB,下载了不少资料,花了四天时间才初见成效——也真够慢的。本着GNU的精神,所自己的经验写出来,希望对各位有帮助。
对于使用AVR软件模拟USB,最早的代码可能是Atmel的AVR Application Notes AVR309-Software Universal Serial Bus (USB)文档,文中介绍了使用软件模拟方式构建的USB to RS232电路。由于AVR单片机本身计算能力和USB规范中对时序的限制,AVR单片机软件模拟USB方式仅支持1.5Mb/s的低速工作模式(Low Speed)。而实际上,软件USB的最大传输速率可能远低于此(大概几百Kb/s)。然而,这对于简单的USB应该已经足够了——至少已经比串口的速度快,而在许多方面上可以省略驱动程序的编写。
AVR309中提供的代码是基于AVR汇编的,使用起来较为困难。Objective Development公司开发了使用C接口的函数库AVR-USB,大大方便了构建软件模拟usb设备的工作。然而,根据Objective Development为AVR-USB的用户提供四种许可证协议(http://www.obdev.at/products/avrusb/license.html):
GNU General Public License Version 2 (GPL):用户可以免费使用avrusb软件,但必须遵循GPL2v协议并将自己设计制作的电路的电路图、固件软件、主机软件都公开。
Hobby License:付费协议(9.90 EUR),但用户可以得到自己独有的VID/PID,而使用此协议,用户只能以非商业形式制造最多5件此协议的设备。
Entry Level License:付费协议(199.00EUR),用户以自己独有的VID/PID,最多生产150件设备
Professional License: 付费协议 (500.00 EUR),用户可以得到两对独有的VID/PID,在100,000件以下时可以任意生产。
在avrusb的官方网站上提供了许多使用avr-usb软件构建的项目。其中,PowerSwitch和HID Keys两个项目被官方网站认为是学习使用AVR-USB的入门项目,特别是PowerSwitch是最简单的。不过,使用PowerSwitch软件,还必须编写PC端的相应驱动才可以使用;而HID Keys使用了PC上(Windows)上通用的HID(Human Interface Device)驱动,所以应该说更容易使用一些。
待续。。。
系统分类:
单片机 | 用户分类:
AVR | 来源:
原创 | 【推荐给朋友】 | 【添加到收藏夹】