admin管理员组

文章数量:1531762

2024年6月18日发(作者:)

不用USBASP芯片也可用USB,纯AVR实现USB通讯:AVRUSB

AVR的速度刚好可以跟得上USB1.0的通讯速度,所以可以模拟和USB通讯。USBASP

就是这么来的(不知道什么是USBASP?就是下载器)。

AVRUSB技术探讨

作者:邵子扬、王育强、吕益光

摘要

本文介绍了一种独特的AVR单片机和计算机进行USB通信的方法:AVRUSB。介绍

了AVRUSB技术的基本原理、特点、应用,同时还详细的介绍了AVRUSB系统的单片机

软件开发和计算机软件开发的方法。

关键字:

AVRUSB,LibUSB,LibUSB-Win32

正文

1 简介

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 Universal

Serial Bus (USB)》(软件USB)一文中。在这篇应用笔记里,详细的介绍了如何使用AVR

单片机的普通IO口来实现USB通信,同时介绍了计算机的驱动程序以及计算机上用户程

序的编程方法,并提供了全部源码。但是AVR309中介绍的单片机程序完全是使用汇编语

言编写的,不利于将程序移植到其他应用环境中,也不利于程序的维护(毕竟使用汇编语

言的人相对比较少,使用C语言编程是大部分人的选择),这使得其应用受到了很多限制。

后来,OBJECTIVE公司推出了AVRUSB。它以汇编语言实现USB通信的底层接口,

用C语言实现用户层的程序接口。用户接口被简化为很简单的几个函数(在最简化的情况

下,只需要三个函数,一个初始化函数、一个轮询函数和一个数据处理函数)和一个配置

文件,用户可以完全不会使用汇编语言编程。同时它还提供了一个稳定而成熟的用户程序

框架,用户可以在此框架的基础上,通过修改和扩展接口函数的功能来实现各种USB通信

功能和控制功能,实现各种带USB接口的应用系统。并且,AVRUSB支持目前最流行的

AVR GCC编译器和IAR C编译器,因此具有很强的实用性。

本文标签: 单片机使用函数实现用户