新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于LUFA开源框架库对AVR芯片进行USB终端设备开发

基于LUFA开源框架库对AVR芯片进行USB终端设备开发

作者:陈哲川时间:2014-08-26来源:电子产品世界收藏
编者按:  摘要:本文针对一般USB设备的开发过程过于困难、复杂、繁琐等不利于快速开发的问题,引入了LUFA(Lightweight USB Framework for AVRs)开源框架库,解决了基于AVR芯片的USB设备的快速开发问题。这种方法能实现快速开发并实现相关的产品,并且有稳定的性能表现,具有工程实践意义。   概述   目前,USB控制器主要有两种:一种是带USB接口的单片机(MCU),另一种是纯粹的USB接口芯片。前者的最大优势在于,开发者对系统结构和指令集非常熟悉,开发工具简单,容易进行功能

  摘要:本文针对一般设备的开发过程过于困难、复杂、繁琐等不利于快速开发的问题,引入了(Lightweight Framework for s)开源框架库,解决了基于芯片的设备的快速开发问题。这种方法能实现快速开发并实现相关的产品,并且有稳定的性能表现,具有工程实践意义。

本文引用地址:http://www.eepw.com.cn/article/262220.htm

  概述

  目前,USB控制器主要有两种:一种是带USB接口的(),另一种是纯粹的USB接口芯片。前者的最大优势在于,开发者对系统结构和指令集非常熟悉,开发工具简单,容易进行功能拓展,但其成本相对较高;后者的最大特点是,价格便宜,接口方便,可靠性高,但其硬件架构相对复杂,软件部分限制相对较大。

  在工程实践中,有时需要快速可靠地开发出相应的USB终端设备,或者针对特定领域开发出专用产品。此时,如果有一个成熟可靠的软件框架,可以事半功倍地满足相应的需求。本文针对的部分带USB接口的,如:AT90USB系列,ATmega8U系列,ATmega16U系列,AT32UC3系列的部分型号,ATXmega系列的部分型号等,介绍开源框架,以实现快速开发USB终端设备,或者针对特定领域开发专用产品。

  1 USB协议概述

  USB是一种串行接口协议,应用日益广泛。但是,要熟悉其协议内容并不简单,其协议文档繁杂罗嗦,Linux uhci驱动作者之一Alan Stern曾经就说过:

  The USB documentation is downright evil. Most of it is just crap, written by a committee. You're better off ignoring most of it.

  他同时还对软件开发者指出,开发者最需要注意的是两点:一、底层协议(非常简单,但很多小细节要注意),二、其他。

  简而言之,USB协议,在硬件上,靠D+,D-两条数据线进行差分传输,以及NRZI的编码方式。在通信上,依靠封包(package)格式进行数据传输。封包由若干个域(Package Field)构成,每个域由若干位组成(具体的位数由具体的域决定)。其细节部分繁多复杂,上手困难,也极其容易出错。

  2 开源框架

  LUFA(Lightweight USB Framework for AVRs),由澳大利亚人Dean Camera开发,是一个基于MIT协议分发的开源框架。针对带USB接口的Atmel AVR8和部分AVR32单片机系列,LUFA实现了一个完全符合USB通信协议的开源框架库。基于这个框架,不仅能开发出合适的终端设备,也能在部分设备上开发出合适的主控制端。

  该框架库经过多年的测试改进,现已处于稳定版本。其针对AVR-GCC编译器进行了优化设计,使用了部分GCC特有的拓展方式,使得这个库的相关API能更稳定流畅地运行。相关的编译器AVR-GCC,能在Atmel网站下载到相应系统的版本。在LUFA源码库里面,有多达三四十种不同应用的示例版本。

  ● 支持的芯片类型

  LUFA是针对带USB接口的Atmel AVR 8/32位单片机进行开发的,所以只要是带USB接口的Atmel AVR单片机,均可使用LUFA开源框架库。例如:AT90USB系列,ATmega8U系列,ATmega16U系列,AT32UC3系列,ATXmega系列等。详情可查看LUFA的相关文档。

  ● 源码下载

  LUFA的项目主页(英文)在http://www.fourwalledcubicle.com/LUFA.php。该项目的源码版本管理托管在github上,相关地址在http://github.com/abcminiuser/lufa。更多详情,可以在LUFA的项目主页上查看。

  ● 开发环境搭建

  Atmel提供了相关的工具链,使得开发者可以简单方便地进行开发,包括Linux平台和Windows平台。除了Atmel提供的工具链之外,还可以使用第三方工具链,按照自己的需要来进行开发。同时,LUFA已经成为Atmel Studio 6.1及后续版本的原生插件之一。无论是编译固件,还是固件上传,LUFA文档都提供了详细的说明。详情请参阅LUFA文档部分:LUFA Library -> Getting Started。

  3 设备开发示例说明

  在本示例中,本文以ATmega32U4制作一个可编程键盘为示例,演示LUFA开源框架库的开发流程方式。该示例分成两大部分:一、制作bootloader,以便对设备进行编程烧录;二、实现矩阵键盘功能。

  ● ATmega32U4微处理器

  ATmega32U4是一款采用低功耗CMOS工艺生产的基于AVR RISC(精简指令集)接口的高性能、低功耗8位单片机。处理器具有可控制的上电复位延时电路和可编程的前沿检测电路,带有双周期乘法器,以及32个8位通用工作寄存器,内部和外部共计13个中断源,加上丰富的的指令集,使得大部分的指令执行时仅为一个时钟周期。因此可达到1MIPS/MHz的性能,运行速度比普通单片机高得多。


上一页 1 2 3 下一页

关键词: LUFA AVR USB MCU 单片机 201409

评论


相关推荐

技术专区

关闭