新闻中心

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

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

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

  同时,处理器还有丰富的外部接口,如14个PWM通道,12路10位ADC,SPI,USART等。片内集成了32KB的Flash程序储存器(其中4KB可被引导程序使用),2.5KB片内SRAM,1KB的片内EEPROM,2个带预分频的8位定时/计数器,2个带预分频的16位定时/计数器,带看门狗定时器等,还支持ISP和IAP编程,带有符合IEEE 1149.1标准的JTAG接口。其接口,可工作在全速/低速设备模式下。对于控制传输方式,端点0最大能支持64b的数据包。对于块传输、中断传输和同步传输方式,有6个可编程端点,最大能支持256b的数据包。

本文引用地址://m.amcfsurvey.com/article/262220.htm

  在启动阶段,可以通过对熔丝位HWBE(上划线)置0,并下拉HWB(上划线)引脚,使得系统先进入引导区程序,以方便固件更新。启动流程部分,请参考图2。

  ● bootloader开发示例

  对于微处理器来说,出厂的时候都预先烧录了Atmel DFU (Device Firmware Update)进bootloader区。如果不需要进行bootloader区编程,可以省却外部编程器。当需要更新固件程序时,无需外部编程器的参与,只需使系统运行在bootloader环境下,就可以利用USART、SPI或者接口,进行固件更新烧录。

  在开源框架库中,有好几种不同的bootloader示例。如支持109协议的自编程框架,支持DFU协议的自编程框架,或者其他。在开发过程中,作为开发者,只要能理解其相关原理,即可灵活运用。

  从示例中可以看出,整个软件的工作流程如图3所示。在启动过程中,系统先调用初始化程序对相关的I/O口进行输入/输出定义及参数初始化;接着,进入bootloader循环。在bootloader循环中,系统不断的检测USB接口下的Endpoint,读取数据,返回指令信息等。直到收到结束通信的指令(109和DFU协议均有相关指令),才退出bootloader应用。最后断开这次USB连接,程序指针跳转到0x0000位置,也就是应用程序的开始点。如图3。



评论


相关推荐

技术专区

关闭