基于STM32的USB OTG數(shù)據(jù)通信的實(shí)現(xiàn)
摘 要: 針對(duì)一般USB裝置只能在PC機(jī)周圍進(jìn)行數(shù)據(jù)通信的限制,提出了基于USB OTG接口與STM32微控制器相結(jié)合的智能通信的設(shè)計(jì)方法。該方法是在基于Cortex內(nèi)核的32 bit RAM芯片STM32F107上集成USB OTG接口上實(shí)現(xiàn),它利用了STM32集成度高、成本低、功耗低、開發(fā)方便、性能可靠和USB OTG雙角色特性等優(yōu)點(diǎn),解決了無(wú)PC機(jī)時(shí)USB從設(shè)備之間數(shù)據(jù)傳送難的問(wèn)題。并在金牛開發(fā)板上實(shí)現(xiàn)它與PC機(jī)以及U盤之間的通信,完成了USB嵌入式設(shè)備之間數(shù)據(jù)的傳輸。
關(guān)鍵詞: USB OTG; STM32F107; U盤
移動(dòng)數(shù)據(jù)的交換和存儲(chǔ), 是近年來(lái)IT行業(yè)的熱點(diǎn)。隨著USB技術(shù)的產(chǎn)生,USB技術(shù)已逐漸應(yīng)用在移動(dòng)數(shù)據(jù)領(lǐng)域中。目前使用的USB移動(dòng)設(shè)備都只能通過(guò)PC機(jī)進(jìn)行相互的文件和數(shù)據(jù)交換。隨著USB技術(shù)的逐漸成熟,人們希望通過(guò)移動(dòng)設(shè)備直接與USB外設(shè)通信, 使得USB能應(yīng)用在沒(méi)有PC的領(lǐng)域中。
USB OTG(On The Go)[1]可滿足這些要求,即一個(gè)擁有OTG 功能的設(shè)備既可以扮演主機(jī)的角色操縱其他USB從設(shè)備,同時(shí)又可以擔(dān)當(dāng)從設(shè)備的角色接受主機(jī)的支配。例如,照相機(jī)可以直接連到USB打印機(jī)上打印數(shù)據(jù)。當(dāng)今USB主機(jī)的嵌入式應(yīng)用就成了USB領(lǐng)域新的研究焦點(diǎn)。該技術(shù)對(duì)于便攜式設(shè)備、野外作業(yè)設(shè)備間的數(shù)據(jù)傳輸將是一個(gè)重要突破?;贑ortex-M3內(nèi)核的STM32系列的ARM嵌入式處理器因其高的性價(jià)比而正被廣泛應(yīng)用。將USB與ARM相結(jié)合是進(jìn)行數(shù)據(jù)采集、處理與傳輸?shù)睦硐虢鉀Q方案。本文重點(diǎn)討論基于STM32的USB OTG的數(shù)據(jù)通信。
1 USB OTG規(guī)范
USB OTG規(guī)范是USB 2.0規(guī)范的補(bǔ)充,它完全遵守USB 2.0規(guī)范的外圍設(shè)備。在USB OTG規(guī)范之下, 任意兩個(gè)符合規(guī)范的USB產(chǎn)品都可以互相連接進(jìn)行通信, 而不是必須通過(guò)PC機(jī)才能通信, 從而實(shí)現(xiàn)了各類USB產(chǎn)品完全脫離電腦進(jìn)行數(shù)據(jù)傳輸?shù)墓δ堋?br /> 雙重角色設(shè)備必須具備有限的主機(jī)能力,同時(shí)還需要一個(gè)OTG目標(biāo)列表,即包括與之通信的設(shè)備信息、設(shè)備類型、制造商等。它支持會(huì)話請(qǐng)求協(xié)議SRP和主機(jī)交換協(xié)議HNP。SRP協(xié)議用于B設(shè)備向A設(shè)備請(qǐng)求開始USB會(huì)話, HNP協(xié)議用于USB會(huì)話過(guò)程中在A設(shè)備和B設(shè)備之間傳遞主機(jī)地位[2]。
2 STM32的USB OTG全速控制器
ST公司在基于ARM公司的Cortex-M3架構(gòu)上研發(fā)出32 bit STM32處理器后,憑借其豐富的外圍模塊、高速指令執(zhí)行速度、低功耗、低價(jià)格而備受市場(chǎng)青睞。2009年又推出了STM32F107互聯(lián)型系列微控制器,它集成了USB OTG接口,配合了USB HOST和SPI功能,讓微控制器可以讀取USB大容量外存、MP3播放器、SD記憶卡等文件。STM32F107芯片內(nèi)集成了USB OTG模塊功能圖如圖1所示。