《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于STM32的USB OTG數據通信的實現
基于STM32的USB OTG數據通信的實現
來源:微型機與應用2011年第10期
龔躍玲,汪玲彥
(武漢理工大學 自動化學院, 湖北 武漢430070)
摘要: 針對一般USB裝置只能在PC機周圍進行數據通信的限制,提出了基于USB OTG接口與STM32微控制器相結合的智能通信的設計方法。該方法是在基于Cortex內核的32 bit RAM芯片STM32F107上集成USB OTG接口上實現,它利用了STM32集成度高、成本低、功耗低、開發方便、性能可靠和USB OTG雙角色特性等優點,解決了無PC機時USB從設備之間數據傳送難的問題。并在金牛開發板上實現它與PC機以及U盤之間的通信,完成了USB嵌入式設備之間數據的傳輸。
Abstract:
Key words :

摘   要: 針對一般USB裝置只能在PC機周圍進行數據通信的限制,提出了基于USB OTG接口與STM32微控制器相結合的智能通信的設計方法。該方法是在基于Cortex內核的32 bit RAM芯片STM32F107上集成USB OTG接口上實現,它利用了STM32集成度高、成本低、功耗低、開發方便、性能可靠和USB OTG雙角色特性等優點,解決了無PC機時USB從設備之間數據傳送難的問題。并在金牛開發板上實現它與PC機以及U盤之間的通信,完成了USB嵌入式設備之間數據的傳輸。
關鍵詞: USB OTG; STM32F107; U盤

    移動數據的交換和存儲, 是近年來IT行業的熱點。隨著USB技術的產生,USB技術已逐漸應用在移動數據領域中。目前使用的USB移動設備都只能通過PC機進行相互的文件和數據交換。隨著USB技術的逐漸成熟,人們希望通過移動設備直接與USB外設通信, 使得USB能應用在沒有PC的領域中。
    USB OTG(On The Go)[1]可滿足這些要求,即一個擁有OTG 功能的設備既可以扮演主機的角色操縱其他USB從設備,同時又可以擔當從設備的角色接受主機的支配。例如,照相機可以直接連到USB打印機上打印數據。當今USB主機的嵌入式應用就成了USB領域新的研究焦點。該技術對于便攜式設備、野外作業設備間的數據傳輸將是一個重要突破?;?a class="innerlink" href="http://www.cowatch.cn/tags/Cortex-M3" title="Cortex-M3" target="_blank">Cortex-M3內核的STM32系列的ARM嵌入式處理器因其高的性價比而正被廣泛應用。將USB與ARM相結合是進行數據采集、處理與傳輸的理想解決方案。本文重點討論基于STM32的USB OTG的數據通信。
1 USB OTG規范    
    USB OTG規范是USB 2.0規范的補充,它完全遵守USB 2.0規范的外圍設備。在USB OTG規范之下, 任意兩個符合規范的USB產品都可以互相連接進行通信, 而不是必須通過PC機才能通信, 從而實現了各類USB產品完全脫離電腦進行數據傳輸的功能。
    雙重角色設備必須具備有限的主機能力,同時還需要一個OTG目標列表,即包括與之通信的設備信息、設備類型、制造商等。它支持會話請求協議SRP和主機交換協議HNP。SRP協議用于B設備向A設備請求開始USB會話, HNP協議用于USB會話過程中在A設備和B設備之間傳遞主機地位[2]。
2 STM32的USB OTG全速控制器
    ST公司在基于ARM公司的Cortex-M3架構上研發出32 bit STM32處理器后,憑借其豐富的外圍模塊、高速指令執行速度、低功耗、低價格而備受市場青睞。2009年又推出了STM32F107互聯型系列微控制器,它集成了USB OTG接口,配合了USB HOST和SPI功能,讓微控制器可以讀取USB大容量外存、MP3播放器、SD記憶卡等文件。STM32F107芯片內集成了USB OTG模塊功能圖如圖1所示。

 

 

    USB OTG全速控制器從復位和時鐘控制模塊(RCC)中獲得時鐘,微控制器內核(CPU)通過AHB外設總線訪問OTG全速控制器的寄存器,USB事件由單獨的USB OTG中斷控制線通知微控制器內核[3]。
    每個發送FIFO都配置了一個PUSH寄存器,微控制器以向PUSH寄存器寫32 bit數據的方式向USB控制器傳輸數據,每一個OUT端點或IN通道都有一個POP寄存器,微控制器通過讀POP寄存器獲得來自USB總線的32 bit數據,這些數據自動從共享的接收FIFO中載入,接收FIFO位于總共1.25 KB的USB數據RAM區。
    USB協議層由串行接口控制器(SIE)驅動,并連接到由內置物理層(PHY)支持的USB全速/低速收發模塊。OTG PHY由OTG全速控制器控制,并通過UTMI+總線(UTMIFS)的全速子集來收發控制和數據信號。它包括了上拉/下拉電阻的ECN電路。內置了ID線的上拉電阻,用于區分是主機狀態還是設備狀態,若ID線浮空,內置的上拉電阻將檢測到ID線的高電平,此時控制器處于默認的設備模式下。若ID線接地。自動切換到主機模式,并需要軟件初始化主機模式。
    DP/DM線內置了上拉和下拉電阻[4],在設備模式下,當VBUS線上出現了有效的電平,控制器使能DP線的上拉電阻,向主機通告接入一個USB全速設備。在主機模式下,控制器同時使能DP和DM線的下拉電阻。上拉和下拉電阻可以在控制器通過主機協商協議(HNP)切換角色類型時動態地切換。
3 USB OTG軟件設計
    STM32F107芯片集成了USB OTG功能,USB OTG固件程序的設計可以完成數據傳輸的所有操作及功能。其結構圖如圖2所示。其中驅動程序棧包括主機驅動程序棧、從機驅動程序棧、USB OTG驅動程序棧。當完成固定程序設計后,系統軟件會根據硬件的連接檢查ID線的狀態來選擇工作模式是設備模式還是主機模式。程序流程圖如圖3所示。

    如果工作于主機模式下,則進行相應初始化、檢測端口,在檢測到有設備接入時復位總線、枚舉并配置從機設備,在完成對從機識別后,可通過查詢從機的OTG性能描述符判斷是否支持HNP協議(即是否為兩用OTG設備)。當工作在從機狀態時則等待主機對其完成枚舉。本文是在STM32開發工具RealView MDK的基于STM32固件庫上進行開發,實現與U盤、PC機間的通信。
3.1 U盤讀寫的實現
    U盤屬于USB 大容量存儲設備,它具有容量大、可移動、數據交互方便等優點,因而實現與U盤的讀寫具有很強的應用價值和市場前景。要實現U盤讀寫,USB 主機必須具有相應的驅動[5],對各種讀寫指令進行封裝、解釋和執行。
    在系統進入主機模式前應先給開發板提供5 V供電,開啟系統時鐘、USB OTG時鐘,然后調用void HOST_Init (USB_OTG_CORE_DEVICE *pdev)函數將USB OTG初始化為主機模式,接著調用HOST_ChannelInit(USB_OTG_CORE_DEVICE *pdev,USB_OTG_HC *pHost
Channel)初始化傳輸通道,其中包括總傳輸長度、期望接收到的數據包數、設備端點傳輸類型、速度、方向的配置。最后根據主機傳輸協議在初始化通道內進行傳輸,可以調用下列函數uint32_t HOST_StartXfer (USB_OTG_CORE_DEVICE *pdev, USB_OTG_HC *pHostChannel)進行通信。
    U盤是大容量存儲設備,支持Bulk-Only 傳輸協議,USB主機在能夠正確操縱U盤之前必須先完成USB總線的枚舉,在控制傳輸階段先獲取從設備的信息,然后根據這些信息對從設備進行重配置后, 才能建立主從通信。此外, 程序中還要實現標準Mass Storge 類協議中的磁盤操作命令UFI, 它能完成讀、寫、格式化磁盤等。最后建立了FATFS 文件系統,它兼容了FAT16、FAT32文件系統,它是UFI 與移動盤上文件數據連接的橋梁, UFI命令的所有數據流只有按照FATFS 標準協議傳輸, 才能順利實現文件讀、寫等功能。
    程序中實現U盤的BOT傳輸,除了規定控制傳輸端點0之外,還定義了輸入、輸出端點,BOT狀態機的5個狀態,兩個狀態寄存器CBW、CSW。端點輸出中斷程序完成寫U盤,端點輸入完成讀U盤操作。其流程圖分別如圖4、圖5所示。

3.2 與PC機之間通信
    與PC機進行通信,系統作為USB從設備時, 要應答PC主機的標準請求、處理USB總線事務和用戶功能[6]。首先調用void USB_OTG_USBD_Init ()將USB OTG工作模式配置成從機模式,接著調用底層驅動API函數USB_OTG_USBD_EP_Open ()來激活端點進行數據傳輸,USB OTG定義了三個端點, 程序中定義端點0在控制傳輸中應答設備枚舉,端點1的功能為向PC機發送數據, 端點2的功能為接受PC機發送的數據。PC主機枚舉系統設備時, 必須先獲得USB OTG端點的配置參數。最后通過調用如下的PCD層API函數完成SETUP包、IN包、OUT包的傳輸。
    uint32_t USB_OTG_USBD_EP_Read();
    uint32_t USB_OTG_USBD_EP_Write();
    uint32_t USB_OTG_USBD_EP_Stall();
    uint32_t USB_OTG_USBD_EP_ClrStall();
    uint32_t USB_OTG_USBD_EP_Flush();
    本文采用意法半導體公司互聯型控制芯片STMF107集成的USB OTG接口, 在基于金牛開發板上實現了從設備和主機的數據傳輸,作為從設備, PC機端的應用程序可以通過USB OTG 開發板的SDRAM進行數據的讀寫,可穩定在500 kb/s;作為主機, 可以枚舉連接到USB OTG 接口上的U盤實現了對U盤的讀寫,最高讀寫速率可達800 kb/s。
    本文利用了STM32F107芯片高度集成的USB OTG接口,其開發系統性能好、可靠性高、開發方便,開發者只需在軟件上編程實現數據傳輸。同時STM32芯片提供了相關固件庫,在此基礎上進行開發提高了效率。本文的創新點就在于充分結合和利用了STM32處理器低成本、低功耗、高可靠性與USB OTG技術的優點,對于已經編程實現的主機、從機棧程序有很好的移植性, 對于以后數據傳輸的開發具有很好的參考性。將USB與STM32相結合實現USB嵌入式設備之間的數據傳輸,將會在移動數據傳輸領域具有很好的應用前景。
參考文獻
[1] On The Go Supplement to the USB2.0 Specification,Rev1.0[S].www.usb.org,2001.
[2] 周立功.USB 2.0與OTG規范及開發指南[M].北京:北京航空航天大學出版社, 2004.   
[3] 王永虹,徐煒,郝立平.STM32 系列ARM Cortex-M3微控制器原理與實踐[M]. 北京:北京航空航天大學出版社,2008.
[4] ST Microelectronics. STM32 Reference manual[Z].2009.
[5] 宋宇寧,周兆英,趙煥軍. USB OTG 擴展子板的實現[J].電子技術應用,2006,32(5):2-3.
[6] 張洪波,江海河,賈先德. USB OTG 技術在數據采集系統的應用[J]. 微計算機信息,2006,(22):2-3.

此內容為AET網站原創,未經授權禁止轉載。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          欧美视频国产精品| 影音先锋亚洲精品| 1000精品久久久久久久久| 国产精品伦子伦免费视频| 久久免费观看视频| 亚洲国产一区二区三区高清| 欧美日韩国产小视频| 国产精品国产三级国产专播品爱网| 久久综合网色—综合色88| 久久久精品国产一区二区三区| 国产婷婷色一区二区三区在线| 国产精品99久久久久久久女警| 亚洲综合另类| 欧美精品一区二区久久婷婷| 欧美久久一级| 亚洲国产精品黑人久久久| 一区二区三区精品久久久| 欧美激情精品久久久久久| 国产九九精品| 91久久精品国产| 韩日成人av| 伊人影院久久| 欧美1区2区| 国产精品va在线播放| 久久视频精品在线| 老牛嫩草一区二区三区日本| 免费永久网站黄欧美| 久久精品视频va| 久久久久久久久伊人| 美女黄网久久| 国产精品播放| 国产乱码精品一区二区三| 欧美日韩亚洲三区| 国产精品免费区二区三区观看| 亚洲一区二区三区在线看| 亚洲电影中文字幕| 快射av在线播放一区| 国产精品v欧美精品v日韩精品| 国产精品扒开腿做爽爽爽视频| 国产日韩欧美一区在线| 午夜精品福利一区二区三区av| 欧美色道久久88综合亚洲精品| 国产精品无码永久免费888| 国产一区二区三区在线观看免费| 红桃视频国产精品| 伊人色综合久久天天五月婷| 国产精品久久久亚洲一区| 国产午夜精品视频| 国产精品99久久久久久久女警| 欧美88av| 免费高清在线一区| 亚洲综合日韩在线| 欧美一区二区| 亚洲美女福利视频网站| 久久九九热免费视频| 国产精品久久久久久久久| 在线观看不卡| 久久久精品国产一区二区三区| 黑人巨大精品欧美一区二区| 国产在线国偷精品产拍免费yy| 91久久综合亚洲鲁鲁五月天| 久久99在线观看| 一区二区成人精品| 玖玖国产精品视频| 久久久久久高潮国产精品视| 欧美日韩国产一区二区| 久久久美女艺术照精彩视频福利播放| 欧美精品乱人伦久久久久久| 国产精品久久一级| 国产精品综合网站| 国内精品久久久久久久影视蜜臀| 欧美日韩国产一区精品一区| 麻豆freexxxx性91精品| 欧美亚洲日本国产| 亚洲美女在线观看| 欧美激情一区在线| 亚洲成人资源| 18成人免费观看视频| 国产精品乱码妇女bbbb| 久久精品人人做人人爽电影蜜月| 久久综合电影| 亚洲一区在线免费| 1024欧美极品| 欧美在线观看视频在线| 欧美色视频日本高清在线观看| 欧美日韩国产在线播放网站| 久久尤物电影视频在线观看| 国产精品久久久久久久久久免费| 欧美成人国产一区二区| 国产午夜精品美女毛片视频| 91久久在线视频| 美女国内精品自产拍在线播放| 一区二区三区视频在线观看| 国产日韩在线看| 欧美三级午夜理伦三级中文幕| 久久精品国产亚洲精品| 国产精品实拍| 欧美一区二区啪啪| 欧美视频网址| 亚洲天堂成人| 亚洲精品国精品久久99热| 欧美日韩亚洲一区二区三区在线观看| 欧美成人午夜剧场免费观看| 亚洲私拍自拍| 国产精品久久久久久模特| 国产日产欧产精品推荐色| 欧美视频一区二区三区四区| 国产精品第三页| 欧美亚洲午夜视频在线观看| 欧美精品一区二区在线观看| 欧美日韩在线一区| 欧美一区二区在线视频| 亚洲素人一区二区| 亚洲欧美电影院| 国产精品综合av一区二区国产馆| 国产视频不卡| 欧美成人午夜激情| 亚洲免费精品| 在线成人av网站| 久久影院午夜片一区| 欧美精品一区二区三区蜜桃| 国产乱码精品一区二区三| 国产欧美日本一区视频| 国产精品高清一区二区三区| 亚洲精品久久久久久久久久久久久| 国产精品久久久久久久久久久久久久| 91久久午夜| 免费一级欧美片在线观看| 国产综合一区二区| 久久av一区| 欧美激情精品久久久久久| av成人免费| 欧美日韩dvd在线观看| 久久偷看各类wc女厕嘘嘘偷窃| 国产麻豆综合| 国产精品看片资源| 欧美久久婷婷综合色| 欧美在线观看你懂的| 久久精品国产99国产精品澳门| 亚洲一区二区三区国产| 狠狠色丁香婷婷综合久久片| 欧美激情乱人伦| 一区二区日韩免费看| 在线观看亚洲精品视频| 亚洲黄色在线视频| 午夜精品福利电影| 欧美激情综合五月色丁香小说| 国产亚洲精品成人av久久ww| 国产在线不卡精品| 亚洲看片一区| 欧美激情第五页| 亚洲欧美高清| 国产一区二区久久精品| 1024亚洲| 欧美日韩在线三级| 亚洲日本一区二区三区| 亚洲视频1区2区| 亚洲最黄网站| 亚洲字幕在线观看| 欧美成人精品激情在线观看| 国外精品视频| 亚洲一区二区三区四区中文| 亚洲乱码视频| 欧美成人亚洲| 国产精品免费在线| 国产精品国产三级国产aⅴ9色| 最近中文字幕mv在线一区二区三区四区| 亚洲欧美高清| 销魂美女一区二区三区视频在线| 亚洲美女电影在线| 亚洲人成毛片在线播放| 亚洲国产高清一区二区三区| 亚洲毛片在线看| 亚洲成人在线| 欧美在线视频日韩| 亚洲精选在线观看| 久久亚洲不卡| 欧美电影免费观看| 国产一区二区在线观看免费播放| 亚洲国产成人在线| 欧美极品色图| 亚洲午夜小视频| 久久精品女人天堂| 99ri日韩精品视频| 欧美激情亚洲自拍| 亚洲午夜精品久久久久久app| 国产精品女人久久久久久| 宅男精品导航| 一区二区欧美日韩视频| 亚洲系列中文字幕| 亚洲欧洲精品一区二区三区波多野1战4| 欧美成人精品三级在线观看| 久久青草久久| 亚洲精品一区二区三区婷婷月| 久久午夜精品| 国产一区二区三区精品欧美日韩一区二区三区| 欧美理论视频| 亚洲人成在线播放网站岛国| 欧美国产在线电影| 亚洲欧美综合| 国精品一区二区| 亚洲调教视频在线观看| 国产综合久久| 国产精品午夜国产小视频| 欧美大胆人体视频| 国产精品草草| 日韩亚洲欧美中文三级| 欧美日韩国产三级| 一区二区在线观看视频| 欧美www视频在线观看| 欧美日韩综合另类| 亚洲欧美另类中文字幕| 日韩一级欧洲| 欧美日韩午夜视频在线观看| 免费中文字幕日韩欧美| 国产欧美视频在线观看| 一本色道久久99精品综合| 欧美一站二站| 国产精品成人久久久久| 欧美日韩亚洲另类| 一本色道久久加勒比88综合| 久久成人免费电影| 国产亚洲精久久久久久| 国产精品系列在线| 国产精品永久免费| 亚洲国产一区二区精品专区| 免费观看国产成人| 欧美精品激情在线观看| 欧美精品国产一区二区| 欧美激情二区三区| 国产目拍亚洲精品99久久精品| 欧美1区2区视频| 一本大道久久a久久精品综合| 亚洲综合日本| 国产一区二区三区免费在线观看| 韩国av一区二区三区四区| 久久激情网站| 久久在线免费观看| 久久成人综合视频| 久久久噜噜噜久久狠狠50岁| 亚洲精品一二三| 国产亚洲欧美另类一区二区三区| 免费看精品久久片| 韩国美女久久| 亚洲自拍都市欧美小说| 一区二区动漫| 亚洲国产精品久久久久秋霞不卡| 欧美大胆成人| 亚洲专区一区二区三区| 中文在线不卡| 欧美视频一区二区在线观看| 亚洲精品婷婷| 国产精品久久久久久影视| 国产精品免费一区豆花| 老司机精品福利视频| 亚洲综合清纯丝袜自拍| 欧美日韩精品中文字幕| 激情视频一区| 99视频热这里只有精品免费| 最新中文字幕亚洲| 欧美日韩国产麻豆| 欧美日韩亚洲综合一区| 欧美区一区二| 国产手机视频精品| 亚洲神马久久| 亚洲午夜精品一区二区| 亚洲电影免费观看高清| 免费人成网站在线观看欧美高清| 国产精品午夜国产小视频| 国产亚洲欧美一级| 久久中文字幕一区| 亚洲综合国产| 先锋资源久久| 国产日产高清欧美一区二区三区| 亚洲社区在线观看| 欧美日韩国产不卡在线看| 亚洲激情视频在线| 一本久道久久综合中文字幕| 亚洲精品国产精品乱码不99| 午夜精品福利一区二区三区av| 亚洲线精品一区二区三区八戒| 欧美国产日韩在线观看| 久久亚洲欧洲| 中文在线资源观看网站视频免费不卡| 99国产精品久久久久久久久久| 欧美母乳在线| 亚洲永久免费av| 亚洲理论在线观看| 久久一区激情| 亚洲免费一区二区| 欧美区视频在线观看| 国产精品视频1区| 欧美日韩国产a| 亚洲淫片在线视频| 在线视频观看日韩| 欧美视频成人| 1204国产成人精品视频| 在线播放国产一区中文字幕剧情欧美| 亚洲第一福利视频| 亚洲一区二区三区精品在线观看| 国产精品日韩欧美一区二区| 国产精品久久国产精品99gif| 性欧美精品高清| 欧美激情视频在线播放| 国产精品久久国产三级国电话系列| 国产美女精品一区二区三区| 欧美日韩国产bt| 午夜精品短视频| 在线视频观看日韩| 亚洲盗摄视频| 亚洲精品久久久久久久久久久久| 亚洲一区二区四区| 欧美女同视频| 一本一本久久a久久精品牛牛影视| 最新日韩精品| 国产精品久久久久99| 午夜亚洲视频| 国产精品香蕉在线观看| 亚洲精品在线视频| 亚洲免费在线观看视频| 精品1区2区| 久久久久久久精| 蜜臀久久久99精品久久久久久| 亚洲日本无吗高清不卡| 欧美亚洲一区在线| 国产精品v欧美精品v日韩精品| 久久久一区二区| 国产精品久久久久9999高清|