【delphi开源代码栏目提醒】:网学会员delphi开源代码为您提供AVRUSB技术探讨 - 产品手册参考,解决您在AVRUSB技术探讨 - 产品手册学习中工作中的难题,参考学习。
AVRUSB 技术探讨 作者:邵子扬、王育强、吕益光摘要 本文介绍了一种独特的 AVR 单片机和计算机进行 USB 通信的方法:AVRUSB。
介绍了AVRUSB 技术的基本原理、特点、应用,同时还详细的介绍了 AVRUSB 系统的单片机软件开发和计算机软件开发的方法。
关键字: AVRUSB,LibUSB,LibUSB-Win321 简介1.1 AVRUSB 是什么 AVRUSB 技术是利用高性能的 8 位 RISC 架构的 AVR 单片机,使用单片机的 IO 口来模拟USB 的通信端口,由软件来实现 USB 通信协议,将普通的 AVR 单片机模拟成一个 USB 低速设备,从而实现 AVR 单片机与计算机之间的通信和控制。
AVRUSB 技术的基本原理就是利用 AVR 单片机的普通 IO 端口来模拟 USB 的硬件端口进行通信。
因为低速 USB 设备的速度是 1.5M 位/秒,而 AVR 单片机是单指令周期的,在单片机使用 12MHz 的时钟频率时,正好是 1.5MHz 的 8 倍。
也就是说,单片机每 8 条指令就精确完成一个数据位的采集。
采用这种方法时,对单片机的时序要求非常严格,所以软件的核心部分代码完全由汇编语言实现。
1.2 AVRUSB 的历史 AVRUSB 技术最早的
文档可见于 AVR 的官方应用笔记《AVR309 Software UniversalSerial Bus USB》(软件 USB)一文中。
在这篇应用笔记里,详细的介绍了如何使用 AVR单片机的普通 IO 口来实现 USB 通信,同时介绍了计算机的驱动程序以及计算机上用户程序的编程方法,并提供了全部源码。
但是 AVR309 中介绍的单片机程序完全是使用汇编语言编写的,不利于将程序移植到其他应用环境中,也不利于程序的维护(毕竟使用汇编语言的人相对比较少,使用 C 语言编程是大部分人的选择),这使得其应用受到了很多限制。
后来,OBJECTIVE 公司推出了 AVRUSB。
它以汇编语言实现 USB 通信的底层接口,用 C语言实现用户层的程序接口。
用户接口被简化为很简单的几个函数(在最简化的情况下,只需要三个函数,一个初始化函数、一个轮询函数和一个数据处理函数)和一个配置文件,用 同户可以完全不会使用汇编语言编程。
时 它还提供了一个稳定而成熟的用户程序框架,用户可以在此框架的基础上,通过修改和扩展接口函数的功能来实现各种 USB 通信功能和控制功能,实现各种带 USB 接口的应用系统。
并且,AVRUSB 支持目前最流行的 AVR GCC 编译器和IAR C 编译器,因此具有很强的实用性。
1.3 AVRUSB 的特点1.3.1 低成本 传统的单片机与计算机进行 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 技术具有很高的实用价值。
1.3.2 资源丰富,容易开发 AVRUSB 提供了一个完整而又简单易用、成熟稳定的应用程序框架。
这个框架包括了底层(单片机部分)和上层(PC 部分),单片机可以使用 gcc(或者 IAR)编程;PC 上则可以使用各种通用编程软件,如 Windows 下使用 VC、VB、
Delphi、C Builder、BDS2006、GCC,Linux 下使用 GCC 等等。
用户可以在这个框架基础上添加和扩展各种功能,快速开发出适合于各种需求的单片机控制系统,而且 AVRUSB 支持 Windows、Linux、MacOS 等多种操作系统,具有很好的跨平台特性。
1.4 AVRUSB 的应用 AVR 单片机低成本、高性能的特性,使得 AVRUSB 非常适合于应用到 USB 加密狗、USB 低 这接口的系统控制、 速 USB 数据采集等, 样 构成的具有 USB 通信功能的单片机系统比很多使用专用芯片的系统简单、成本低。
目前,AVRUSB 已经成功应用到了很多产品上,比较有名的有:USBaspUSB 接口的 AVR编程器、AVRCDCUSB 转 RS232 串口、USB Bootlader(USB 接口的 Bootloader 软件)等。
在 http://www.obdev.at/products/avrusb/projects.html 中,还专门 列举 了很 多使用AVRUSB 的开源项目,这些项目提供了完整的单片机程序和计算机程序的代码和原理图。
我们在开发自己的 AVRUSB 应用时,可以参考这些资源,在这些开源项目的基础上进行修改, 本快速开发出适合于自己需求的