RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

STM32對于U盤訪問的硬件/軟件實(shí)現(xiàn)

STM32單片機(jī) ? 來源:YXQ ? 2019-06-04 09:38 ? 次閱讀

一些應(yīng)用中,涉及到對存儲設(shè)備的數(shù)據(jù)訪問,例如USD卡、U盤。具備USB OTG控制器STM32,可以實(shí)現(xiàn)對U盤訪問的支持。本文介紹STM32對于U盤訪問的硬件/軟件實(shí)現(xiàn)。介紹如何利用STM32CubeMX,一步一步實(shí)現(xiàn)STM32訪問U盤。僅需簡單的幾個(gè)步驟, 實(shí)現(xiàn)U盤訪問的應(yīng)用開發(fā)。

MSC類簡介

MSC (Mass Storage Class) 是USB規(guī)范提供的一種USB大容量存儲設(shè)備類,允許一個(gè)USB接口的設(shè)備與USB主機(jī)相連接,以便在兩者之間傳輸文件。USB MSC傳輸協(xié)議分為CBI (Control / Bulk / Interrupt) 和 BOT (Bulk-only Transfer)。BOT協(xié)議在不影響功能的情況下省去了對Interrupt端點(diǎn)的需求,被存儲設(shè)備廣泛支持。STM32提供的USB庫支持USB MSC BOT協(xié)議。

MSC設(shè)備包含很多種,例如U盤、讀卡器、移動硬盤等。STM32通過內(nèi)含的USB OTG控制器(支持主機(jī)模式)和USB主機(jī)庫,實(shí)現(xiàn)對MSC類的支持,進(jìn)而實(shí)現(xiàn)對U盤訪問的支持。本文中不涉及到USB MSC (Mass Storage Class) 的詳細(xì)介紹 ,更多MSC類介紹,請參考《USB進(jìn)階培訓(xùn)_Part1_USB類的介紹》。

01

硬件支持

不同的STM32系列,對USB的支持情況如下。對于STM32F105/107、STM32F2、STM32F4、STM32F7和STM32H7系列,部分型號支持USB OTG,能夠?qū)崿F(xiàn)USB 主機(jī)和從機(jī)。U盤作為USB MSC設(shè)備,需要STM32作為USB MSC主機(jī),實(shí)現(xiàn)兩者間的訪問。(注:系列中不是所有型號都支持OTG,以具體型號手冊為準(zhǔn)。)

STM32 OTG硬件電路圖如下所示。CN3為USB連接器。

對于STM32 OTG,配置為僅主機(jī)模式時(shí),不需使用OTG_ID,可將其引腳用于其他功能。并且在不使用SRP (Session Request Protocol) 和HNP (Host Negotiation Protocol) 時(shí),可不連接VBUS至PA9。電路簡化如下圖。

更多關(guān)于STM32 USB硬件設(shè)計(jì),請參考《AN4879 USB hardware and PCB guidelines using STM32 MCUs》。

02

軟件支持

STM32擁有豐富的軟件資源,推薦如下兩個(gè)軟件包:

STM32Cube軟件包(包含USB/OTG庫,支持MSC協(xié)議)

STM32CubeMX輔助開發(fā)工具(輔助開發(fā)自定義板上應(yīng)用)

上述軟件都是免費(fèi)對外開發(fā),可在意法半導(dǎo)體官網(wǎng)www.st.com下載。

U盤訪問實(shí)現(xiàn)例

一步一步呈現(xiàn)訪問U盤的STM32開發(fā)過程,實(shí)現(xiàn)對U盤的讀寫等操作。在下面的詳解步驟中,會介紹一些主機(jī)庫和應(yīng)用機(jī)制的內(nèi)容。如果希望快速開發(fā),可以直接按照步驟開發(fā),略過講解性的內(nèi)容。

01

前期準(zhǔn)備

出于遵循完全一致的實(shí)驗(yàn)步驟考慮,實(shí)例基于ST發(fā)布的STM32F469I-DISCO板。除此之外,開發(fā)者也可以根據(jù)自己的目標(biāo)板的具體情況,參考后面介紹的實(shí)例進(jìn)行配置。

STM32板

USB線

2 * USB線

Type A ←→ Mini B

Type A ←→ Micro B

STM32CubeMX

Cube軟件包

STM32CubeF4(1)

說明:在安裝STM32CubeMX后,在其“菜單欄\Help\Install New Libraries”中安裝STM32CubeF4.

本文實(shí)現(xiàn)例中采用的是V1.21.0

IDE

IAR (EWARM)

除IAR外,CubeMX還支持MDK、TrueStudio和SW4STM32等。

文本實(shí)現(xiàn)例中采用IAR v8.30.1

注1:STM32F469I-DISCO板的原理圖、用戶手冊等資源可通過鏈接獲取。

注2:STM32CubeF4可以按照介紹方式獲取,或者直接在官網(wǎng)下載,然后通過STM32CubeMX從本地導(dǎo)入軟件包功能完成導(dǎo)入。

02

應(yīng)用實(shí)現(xiàn)

一、開發(fā)流程

結(jié)合STM32CubeMX的軟件開發(fā)流程如下圖。

二、開發(fā)步驟詳解

接下來一步一步呈現(xiàn)實(shí)現(xiàn)過程。

1.打開STM32CubeMX,點(diǎn)擊File\New Project,選擇STM32F469NI(STM32F469I-DISCO板上微控制器型號)。

2.外設(shè)和中間件的選擇。首先結(jié)合STM32F469I-DISCO板的原理圖,了解功能實(shí)現(xiàn)必備的接口的使用情況,如下表所示。

注1. 在不考慮SRP和HNP時(shí),訪問U盤,只需要STM32的USB OTG的USB數(shù)據(jù)正負(fù)線即可。

根據(jù)硬件情況,選擇調(diào)試接口、外部時(shí)鐘、USB OTG FS和USB中間件,如下圖所示。

在引腳分布圖,PB2引腳上單擊鼠標(biāo)左鍵,選擇‘GPIO_Output’,如下圖所示。

3. 配置時(shí)鐘,使USB時(shí)鐘為48MHz,如下圖。其中,步驟2中外部高速晶振值要和硬件上匹配。由于USB時(shí)鐘精度要求高,STM32F469內(nèi)部時(shí)鐘無法達(dá)到要求,必須選用外部高速時(shí)鐘,如步驟3所示。對于HCLK(處理器時(shí)鐘,步驟6配置),根據(jù)性能需要進(jìn)行設(shè)置,或者簡單的設(shè)置為最大值。

4. USB和關(guān)聯(lián)的引腳配置。主要對VBUS使能引腳進(jìn)行配置及關(guān)聯(lián)。

在USB_HOST界面,配置Drive_VBUS_FS關(guān)聯(lián)引腳為PB2(與硬件連接對應(yīng))。VBUS電源開關(guān)器件為STMPS2151STR,高電平使能。所以配置如下,在初始化后為低電平(圖中步驟7~10)。其他保持默認(rèn)。

5.設(shè)置工程,如下圖所示(點(diǎn)擊菜單欄\Project\Settings打開)。選擇對應(yīng)的IDE和希望基于的STM32Cube軟件包位置。實(shí)例簡單,堆棧占用小,堆棧配置保持默認(rèn)即可。除EWARM外,STM32CubeMX還支持MDK-ARM、TrueStudio、SW4STM32等。

6. 點(diǎn)擊菜單欄\Project\Generate Code生成工程。

工程生成后,會出現(xiàn)提示框,點(diǎn)擊"Open Project"打開工程。工程架構(gòu)和文件結(jié)構(gòu)如下圖(右側(cè)為USB主機(jī)應(yīng)用架構(gòu))。生成工程包含全部層的實(shí)現(xiàn),開發(fā)者在生成工程的基礎(chǔ)上,可直接調(diào)用寫讀等API,實(shí)現(xiàn)對U盤的訪問。

注: USB主機(jī)庫和各文件功能介紹,請參考《UM1720 STM32Cube USB host library》。

7. 添加U盤訪問實(shí)現(xiàn)。

STM32CubeMX生成的工程,調(diào)用STM32Cube USB主機(jī)庫。在庫中,軟核將USB事件傳輸至用戶層,并執(zhí)行回調(diào)用戶函數(shù)。方便在用戶層的回調(diào)函數(shù)中添加應(yīng)用實(shí)現(xiàn)。用戶回調(diào)事件如下表。

USB軟核狀態(tài)機(jī)如下圖所示。

在HOST_CLASS狀態(tài)中,軟核會通知應(yīng)用類初始化完成。對U盤的訪問,應(yīng)放置在應(yīng)用層接收到類初始化完成事件后,即HOST_USER_CLASS_ACTIVE事件后,否則無法正常工作。

在工程中添加/修改對U盤的寫讀訪問操作和相關(guān)源碼,如下表所示。

注1:省略號為了表示還有其他沒有改動部分的源碼,不用添加進(jìn)源碼中。展現(xiàn)的源碼為了更好的表現(xiàn)出對應(yīng)工程中位置,包含一些生成工程時(shí)原有的源碼。

注2:MX_DriverVbusFS()中,需要根據(jù)實(shí)際情況進(jìn)行配置。實(shí)驗(yàn)板上采用的電源開關(guān)STMPS2151STR高電平有效。在一些系列STM32的生成工程中,MX_DriverVbusFS函數(shù)原型已經(jīng)生成,此時(shí)無需再添加這個(gè)函數(shù)的聲明,但要確認(rèn)函數(shù)中引腳設(shè)置對應(yīng)關(guān)系(形參為1時(shí)表示要激活)。

8.編譯生成的應(yīng)用固件。

利用IDE進(jìn)行編譯、鏈接、下載到目標(biāo)板,實(shí)現(xiàn)U盤信息獲取和讀寫操作。

檢驗(yàn)驗(yàn)證

連接U盤至STM32F469I-DISCO板的USB_User連接口。IAR進(jìn)入在線調(diào)試模式,利用在線調(diào)試,查看獲取到的U盤信息和寫讀緩存中的數(shù)據(jù)情況。

運(yùn)行完畢后,連接U盤至PC,利用PC上安裝的Active@ Disk Editor(外部鏈接)查看U盤對應(yīng)扇區(qū)數(shù)據(jù)(10扇區(qū)對應(yīng)起始位置為5120),從而驗(yàn)證U盤信息獲取和寫讀功能正常。如下圖所示。

總結(jié)

STM32CubeMX加速了STM32的開發(fā)過程。即使類似USB這種復(fù)雜的外設(shè)使用,也可以如上述實(shí)例,只需要幾個(gè)步驟即可以實(shí)現(xiàn)USB應(yīng)用。并且提供了除MSC類之外,HID、UAC、CDC等類支持。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • msc
    msc
    +關(guān)注

    關(guān)注

    0

    文章

    29

    瀏覽量

    20120
  • STM32
    +關(guān)注

    關(guān)注

    2270

    文章

    10895

    瀏覽量

    355728

原文標(biāo)題:技術(shù)筆記 | 基于STM32CubeMX開發(fā)U盤訪問應(yīng)用

文章出處:【微信號:STM32_STM8_MCU,微信公眾號:STM32單片機(jī)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    如何在STM32實(shí)現(xiàn)USB主機(jī)讀寫U文件

    在項(xiàng)目應(yīng)用中,經(jīng)常會有對外交換數(shù)據(jù)的需求。USB接口讀寫U無疑是一種頗為方便的選擇。在這一篇中,我們就來討論如何在STM32實(shí)現(xiàn)USB主機(jī)讀寫U
    的頭像 發(fā)表于 12-13 17:20 ?1.4w次閱讀
    如何在<b class='flag-5'>STM32</b>上<b class='flag-5'>實(shí)現(xiàn)</b>USB主機(jī)讀寫<b class='flag-5'>U</b><b class='flag-5'>盤</b>文件

    使用STM32CubeMx生成USB HOST及fatfs,實(shí)現(xiàn)STM32F105RC訪問U的功能,無法枚舉設(shè)備的原因?

    使用STM32 CubeMx生成USB HOST及fatfs代碼框架,實(shí)現(xiàn)STM32F105RC訪問U
    發(fā)表于 04-09 07:55

    怎么基于STM32實(shí)現(xiàn)U訪問?

    一些應(yīng)用中,涉及到對存儲設(shè)備的數(shù)據(jù)訪問,例如USD卡、U。具備USB OTG控制器的STM32,可以實(shí)現(xiàn)
    發(fā)表于 08-08 06:25

    STM32 FLASH實(shí)現(xiàn)U

    STM32 FLASH實(shí)現(xiàn)U
    發(fā)表于 05-20 10:08

    如何使用u*** host實(shí)現(xiàn)U的讀寫

    U是一個(gè)很常用的存儲設(shè)備,它是通過u***實(shí)現(xiàn)數(shù)據(jù)傳輸?shù)?,那么?b class='flag-5'>stm32上面,我們要怎么接入U
    發(fā)表于 02-22 06:22

    金士頓u低格軟件 工具下載

    金士頓u低格軟件 工具下載, 請到下面下載相對應(yīng)型號的工具:
    發(fā)表于 01-02 20:29 ?21次下載

    U伴侶 EasyUDisk讀寫U模塊

    在嵌入式的電子產(chǎn)品中實(shí)現(xiàn)U文件的讀寫,在軟件設(shè)計(jì)上成了許多廠家技術(shù)攻關(guān)的難題,U伴侶Easy
    發(fā)表于 11-04 12:01 ?74次下載

    STM32-comStick U版開發(fā)平臺(ST)

    STM32-comStick U版開發(fā)平臺(ST) 意法半導(dǎo)體(ST)發(fā)布一款U版的開發(fā)平臺STM
    發(fā)表于 11-02 09:11 ?1262次閱讀

    STM32的文件系統(tǒng)程序+SD卡虛擬U設(shè)計(jì)

    STM32的文件系統(tǒng)程序,以及SD卡虛擬U設(shè)計(jì)
    發(fā)表于 12-10 16:34 ?54次下載

    臺電U加密軟件免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是臺電U加密軟件免費(fèi)下載。
    發(fā)表于 01-02 08:00 ?12次下載
    臺電<b class='flag-5'>U</b><b class='flag-5'>盤</b>加密<b class='flag-5'>軟件</b>免費(fèi)下載

    當(dāng)年的硬件與今天的U

    當(dāng)年的硬件,今天的U
    的頭像 發(fā)表于 01-13 16:02 ?2346次閱讀

    STM32&SD卡實(shí)現(xiàn)USB虛擬U

    下載源碼請關(guān)注公眾號之前的文章中介紹過STM32讀寫SD卡和FatFS文件系統(tǒng)相關(guān)的知識。今天將在這基礎(chǔ)上介紹STM32通過USB口虛擬U的知識。即插入U(xiǎn)SB接口后,電腦將SD卡識別
    發(fā)表于 12-28 19:54 ?43次下載
    <b class='flag-5'>STM32</b>&SD卡<b class='flag-5'>實(shí)現(xiàn)</b>USB虛擬<b class='flag-5'>U</b><b class='flag-5'>盤</b>

    STM32CubeMX | STM32基于HAL實(shí)現(xiàn)USB模擬U

    STM32CubeMX | STM32基于HAL實(shí)現(xiàn)USB模擬U目錄STM32CubeMX |
    發(fā)表于 12-28 20:04 ?40次下載
    <b class='flag-5'>STM32</b>CubeMX | <b class='flag-5'>STM32</b>基于HAL<b class='flag-5'>實(shí)現(xiàn)</b>USB模擬<b class='flag-5'>U</b><b class='flag-5'>盤</b>

    探秘STM32U5安全特性|硬件加解密引擎與軟件算法對比

    探秘STM32U5安全特性|硬件加解密引擎與軟件算法對比
    的頭像 發(fā)表于 10-27 10:23 ?1712次閱讀
    探秘<b class='flag-5'>STM32U</b>5安全特性|<b class='flag-5'>硬件</b>加解密引擎與<b class='flag-5'>軟件</b>算法對比

    基于STM32CubeMX開發(fā)U訪問應(yīng)用

    電子發(fā)燒友網(wǎng)站提供《基于STM32CubeMX開發(fā)U訪問應(yīng)用.pdf》資料免費(fèi)下載
    發(fā)表于 09-25 09:19 ?3次下載
    基于<b class='flag-5'>STM32</b>CubeMX開發(fā)<b class='flag-5'>U</b><b class='flag-5'>盤</b><b class='flag-5'>訪問</b>應(yīng)用
    RM新时代网站-首页