基于LUFA开源框架库对AVR芯片进行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接口。其USB接口,可工作在全速/低速设备模式下。对于控制传输方式,端点0最大能支持64b的数据包。对于块传输、中断传输和同步传输方式,有6个可编程端点,最大能支持256b的数据包。
本文引用地址:https://www.eepw.com.cn/article/262220.htm 在启动阶段,可以通过对熔丝位HWBE(上划线)置0,并下拉HWB(上划线)引脚,使得系统先进入引导区程序,以方便固件更新。启动流程部分,请参考图2。
● bootloader开发示例
对于AVR微处理器来说,出厂的时候都预先烧录了Atmel DFU (Device Firmware Update)进bootloader区。如果不需要进行bootloader区编程,可以省却外部编程器。当需要更新固件程序时,无需外部编程器的参与,只需使系统运行在bootloader环境下,就可以利用USART、SPI或者USB接口,进行固件更新烧录。
在LUFA开源框架库中,有好几种不同的bootloader示例。如支持AVR109协议的自编程框架,支持USB DFU协议的自编程框架,或者其他。在开发过程中,作为开发者,只要能理解其相关原理,即可灵活运用。
从示例中可以看出,整个软件的工作流程如图3所示。在启动过程中,系统先调用初始化程序对相关的I/O口进行输入/输出定义及参数初始化;接着,进入bootloader循环。在bootloader循环中,系统不断的检测USB接口下的Endpoint,读取数据,返回指令信息等。直到收到结束通信的指令(AVR109和DFU协议均有相关指令),才退出bootloader应用。最后断开这次USB连接,程序指针跳转到0x0000位置,也就是应用程序的开始点。如图3。
评论