a一级爱做片免费观看欧美,久久国产一区二区,日本一二三区免费,久草视频手机在线观看

新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > 基于LUFA開源框架庫對AVR芯片進行USB終端設備開發

基于LUFA開源框架庫對AVR芯片進行USB終端設備開發

作者:陳哲川 時間:2014-08-26 來源:電子產品世界 收藏
編者按:  摘要:本文針對一般USB設備的開發過程過于困難、復雜、繁瑣等不利于快速開發的問題,引入了LUFA(Lightweight USB Framework for AVRs)開源框架庫,解決了基于AVR芯片的USB設備的快速開發問題。這種方法能實現快速開發并實現相關的產品,并且有穩定的性能表現,具有工程實踐意義。   概述   目前,USB控制器主要有兩種:一種是帶USB接口的單片機(MCU),另一種是純粹的USB接口芯片。前者的最大優勢在于,開發者對系統結構和指令集非常熟悉,開發工具簡單,容易進行功能

  從示例可以看出,在框架下,bootloader的開發有了極大的效率提升。開發者可以通過簡單地修改設備的描述頁信息,添加或修改相關的傳輸協議,即可快速開發出符合需求的bootloader模塊。

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

  ● 設備開發示例說明

  對于設備來說,首先進行枚舉設定(setup過程),然后如果沒錯誤,就可以開始USB設備的正常工作狀態了。既然已經為開發者做出了眾多可能的基本設置,開發者只需要知道個大概流程,大多數事情都可以留給來做了。

  首先,是0號端點(Endpoint 0)和控制傳輸模式。0號端點主要用于USB設備枚舉。在枚舉過程中,主機給設備分配相應的地址信息,同時也在讀取設備信息,如設備類型。主機通過發送相應的控制指令給設備,設備回復相關信息給主機,完成握手通信,最后完成相關的設置。LUFA基本上能全自動地完成所有的相關工作,開發者只需要知道該怎么設置而已。如圖4。

  接下來,是數據傳輸過程。當設定過程完成之后,數據傳輸過程的方向、可用端點的大小等基本信息已經確定下來了。這個時候,設備和主機之間就能進行正常的數據傳輸了。LUFA提供了多種不同的方式來接收數據包。通常來說,設備端點收到數據之后,會向主機返回“ACK”指令,以告知數據包已收到,但是最終的一個“ACK”指令包則不會自動回復,需要用戶在程序里面實現。不過,對于開發者來說,只需要認真研讀一下示例文件就可以理解,并得知實現方式。

  以Demo/Device/ClassDriver/Keyboard/這個項目為例。文件Descriptors.c里面,記錄了USB設備的描述值,包括傳輸過程中的設備描述值,和枚舉階段的配置描述值,還有返回設備描述值調用的一個函數。這些相應參數,可在工程實踐中,按需修改。文件Keyboard.c里面,包含了程序的主入口main()函數。

  main()函數中,SetupHardware()實現了基本的硬件初始化功能,值得注意的是USB_Init()函數。這個USB_Init()函數,是LUFA框架實現的一個函數。在這個函數中,它實現了USB接口相關的寄存器及I/O的初始化功能,調用了USB_ResetInterface()函數,以實現USB設備的相關設置。其中的一個功能是按照開發的需要,初始化USB設備,使其成為USB控制器或USB設備,在此示例中,初始化為USB設備,調用USB_Init_Device()函數。USB_Init_Device()函數又調用了一個需要自己按需實現的函數CALLBACK_USB_GetDescriptor(...)(在Descriptors.c文件中)。至此,完成USB設備的初始化過程。

  完成USB設備的初始化過程之后,就開始了一個不斷循環的函數體。如果是想實現USB設備的相關功能,就把相關的功能模塊寫入這個函數體內就可以了。以Demo/Device/ClassDriver/Keyboard/項目為例,這個循環體內包括兩個函數模塊:HID_Device_USBTask(&Keyboard_HID_Interface)和USB_USBTask()。前者,調用了一個函數CALLBACK_HID_Device_CreateHIDReport(...),以記錄測試哪個按鍵被按下或松開,并記錄下來。后者,純粹地把相應的按鍵信息按照USB協議的要求發送出去。實現相關的USB通信。

  因此,如果此時需要完成一個矩陣鍵盤,那么只需要在CALLBACK_HID_Device_CreateHIDReport(...)之內,插入相應的矩陣鍵盤掃描語句,延時消抖功能等,即可實現開發需求。其他的設備,如USB音頻設備,U盤,鼠標等,也是類似的實現方式。

  4 結語

  對于開發者而言,LUFA開源框架庫不僅能幫助快速完成相應的項目開發,如果能細讀其代碼,還可以大大地提高相應的編程水平。同時,LUFA開源框架庫的引入,大大地降低了在上開發USB設備的門檻,極大地提高開發效率,并且減少了開發過程中的調試測試時間,增加了系統的穩定性。其示例文檔豐富,入門容易,代碼優美穩定,邏輯架構完美。因此,無論是出于項目開發的需要,還是能力提升的需要,都可以好好研究或閱讀LUFA開源代碼,借鑒其開發經驗,做出更好更快更優質的工程項目。

  參考文獻:
  [1]Atmel.ATmega32u4 Datasheet[M]
  [2]Universal Serial Bus Revision 2.0 Specification[S]
  [3]LUFA Online Documents[R/OL].(2014-03).http://www.fourwalledcubicle.com/files/LUFA/Doc/140302/
  [4]Redecker C.USB Control Transfers with LUFA[R/OL].(2011-10).http://www.avrbeginners.net/new/wp-content/uploads/2011/10/avrbeginners_40_USB_Control_Transfers_with_LUFA_1.0.pdf
  [5]USB in a Nutshell[R/OL].(2014-04).http://www.beyondlogic.org/usbnutshell


上一頁 1 2 3 下一頁

關鍵詞: LUFA AVR USB MCU 單片機 201409

評論


相關推薦

技術專區

關閉