基于LUFA開源框架庫(kù)對(duì)AVR芯片進(jìn)行USB終端設(shè)備開發(fā)
同時(shí),處理器還有豐富的外部接口,如14個(gè)PWM通道,12路10位ADC,SPI,USART等。片內(nèi)集成了32KB的Flash程序儲(chǔ)存器(其中4KB可被引導(dǎo)程序使用),2.5KB片內(nèi)SRAM,1KB的片內(nèi)EEPROM,2個(gè)帶預(yù)分頻的8位定時(shí)/計(jì)數(shù)器,2個(gè)帶預(yù)分頻的16位定時(shí)/計(jì)數(shù)器,帶看門狗定時(shí)器等,還支持ISP和IAP編程,帶有符合IEEE 1149.1標(biāo)準(zhǔn)的JTAG接口。其USB接口,可工作在全速/低速設(shè)備模式下。對(duì)于控制傳輸方式,端點(diǎn)0最大能支持64b的數(shù)據(jù)包。對(duì)于塊傳輸、中斷傳輸和同步傳輸方式,有6個(gè)可編程端點(diǎn),最大能支持256b的數(shù)據(jù)包。
本文引用地址:http://www.ex-cimer.com/article/262220.htm 在啟動(dòng)階段,可以通過對(duì)熔絲位HWBE(上劃線)置0,并下拉HWB(上劃線)引腳,使得系統(tǒng)先進(jìn)入引導(dǎo)區(qū)程序,以方便固件更新。啟動(dòng)流程部分,請(qǐng)參考圖2。
● bootloader開發(fā)示例
對(duì)于AVR微處理器來說,出廠的時(shí)候都預(yù)先燒錄了Atmel DFU (Device Firmware Update)進(jìn)bootloader區(qū)。如果不需要進(jìn)行bootloader區(qū)編程,可以省卻外部編程器。當(dāng)需要更新固件程序時(shí),無需外部編程器的參與,只需使系統(tǒng)運(yùn)行在bootloader環(huán)境下,就可以利用USART、SPI或者USB接口,進(jìn)行固件更新燒錄。
在LUFA開源框架庫(kù)中,有好幾種不同的bootloader示例。如支持AVR109協(xié)議的自編程框架,支持USB DFU協(xié)議的自編程框架,或者其他。在開發(fā)過程中,作為開發(fā)者,只要能理解其相關(guān)原理,即可靈活運(yùn)用。
從示例中可以看出,整個(gè)軟件的工作流程如圖3所示。在啟動(dòng)過程中,系統(tǒng)先調(diào)用初始化程序?qū)ο嚓P(guān)的I/O口進(jìn)行輸入/輸出定義及參數(shù)初始化;接著,進(jìn)入bootloader循環(huán)。在bootloader循環(huán)中,系統(tǒng)不斷的檢測(cè)USB接口下的Endpoint,讀取數(shù)據(jù),返回指令信息等。直到收到結(jié)束通信的指令(AVR109和DFU協(xié)議均有相關(guān)指令),才退出bootloader應(yīng)用。最后斷開這次USB連接,程序指針跳轉(zhuǎn)到0x0000位置,也就是應(yīng)用程序的開始點(diǎn)。如圖3。
評(píng)論