油封厂家
免费服务热线

Free service

hotline

010-00000000
油封厂家
热门搜索:
行业资讯
当前位置:首页 > 行业资讯

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

发布时间:2020-07-01 01:47:59 阅读: 来源:油封厂家

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

本文引用地址:概述

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

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

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的项目主页(英文)在。该项目的源码版本管理托管在github上,相关地址在。更多详情,可以在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的性能,运行速度比普通单片机高得多。

菏泽订做职业装

菏泽订做职业装

滨州定做防静电工服

石家庄防静电工服订制