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

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

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

手把手帶您使用MCUXpresso Config Tools生成USB組合設(shè)備

jf_pJlTbmA9 ? 來源:恩智浦MCU加油站 ? 作者:恩智浦MCU加油站 ? 2023-10-31 16:55 ? 次閱讀

引言

本文介紹了如何使用MCUXpresso Config Tools來快速生成一個可用的USB composite device的demo,以便節(jié)省時間直接進行USB應(yīng)用層的開發(fā),而不必關(guān)注USB協(xié)議棧及底層的配置。

文詳細介紹了如何利用Config Tools生成USB Composite Device工程的全部步驟,并且還會介紹,如何將這些代碼porting到IAR等不同IDE中進行開發(fā)。

組合設(shè)備介紹

USB的composite類是指在一個USB設(shè)備中,實現(xiàn)多個不同功能的特殊USB類,如一個設(shè)備實現(xiàn)鼠標加鍵盤或者U盤加鍵盤的功能。

實際上,USB composite類幾乎可以將任意的USB功能進行組合,并且組合的數(shù)量也不局限于兩個,只要端點資源夠多,可以組合三個或多個功能于一個設(shè)備上。

在USB中,還存在有一種compound device的概念,它與composite device都可以譯作復合設(shè)備或組合設(shè)備,但是它們是兩個完全不同的概念。

USB compound device(USB復合設(shè)備)中內(nèi)嵌Hub和多個功能,每個功能都是獨立的USB設(shè)備,有獨立的VID與PID,從實現(xiàn)層面上講就是一個物理設(shè)備實現(xiàn)了一個Hub和多個物理設(shè)備。

USB composite device(USB組合設(shè)備)中只有一套VID與PID,通過不同的接口將這同一個設(shè)備定義為不同的功能的組合。而不同功能的實現(xiàn)依賴于不同的類接口的合并。

環(huán)境搭建

本文使用i.MX RT1060-EVK板作為演示對象,所使用的MCUXpresso IDE(以下簡稱MCUX)版本為v11.4.0,其中內(nèi)置了v10.0.0版本的Config Tools,使用內(nèi)置的Config Tools所生成的工程,可以直接在MCUXpresso IDE內(nèi)編譯下載,下一章將會介紹如何將生成的代碼集成到IAR中進行編譯下載運行。

在使用MCUXpresso生成工程時需要加載SDK到MCUXpresso環(huán)境中,本文使用的SDK版本為2.10.0。

以下例子是生成了一個包含CDC VCOM、MSC、HID Mouse三個類功能的組合設(shè)備。

配置工程

首先需要創(chuàng)建工程。

進入MCUXpresso IDE界面后,點擊New project進入創(chuàng)建工程界面,選擇evkmimxrt1060板,點擊next,進入config界面,點擊middleware選項卡,選中USB Device和USB PHY選項, USB Common Header會被自動勾選,最后點擊Finish完成工程創(chuàng)建。

具體步驟如下圖:

wKgZomUD9dWAQCAEAAJjaEaI61w508.png

完成工程的創(chuàng)建后,選擇ConfigTools選項卡下的Peripherals,進入工程配置界面,在左側(cè)Components窗口下,點擊Middleware右側(cè)的加號,彈出選擇界面,在選擇界面中選中USB,點擊OK。操作步驟如下圖所示。

wKgaomUD9deAIN6-AAGlMl-jliQ418.png

此時,我們已經(jīng)將USB中間件添加進入配置,剛添加進入后會發(fā)現(xiàn)右下角的Problems界面內(nèi)會報兩條錯誤,為了解決其中的時鐘錯誤,首先還是在ConfigTools選項卡內(nèi),選擇Clocks,進入Clock配置界面,選擇Clock Outputs界面中的USBPHY1 PLLclock,然后在右側(cè)的Details界面內(nèi)Enable USBPHY1 clock output,具體步驟如下圖所示。

wKgZomUD9dqAcwsrAALqi-52dpc085.png

返回Peripherals界面,時鐘的錯誤已經(jīng)消除,下面開始添加USB的功能接口,在剛才添加的USB1的主界面內(nèi)根據(jù)自己的需求修改device的VID及PID。

點擊Supported interfaces選項旁邊的加號,添加一個interface,會生成一個interface0,默認新添加的interface的類都是DFU,在右側(cè)Class下拉菜單中選擇想要實現(xiàn)的組合設(shè)備中的第一個類。此處需要注意的是,CDC VCOM的實現(xiàn)需要用到兩個子類interface,分別是用于管理和控制的通信類接口CIC與用于傳輸數(shù)據(jù)的數(shù)據(jù)接口類DIC,在Config Tools中需要分別添加兩個interface組成來一個CDC VCOM的功能。

添加兩個interfaces,分別設(shè)置類為CIC VCOM及DIC VCOM。Config Tools添加interfaces時,是按照順序使用端點號及interface號,這里我們不修改任何參數(shù),直接使用默認的數(shù)據(jù),如果應(yīng)用層有特殊需要的,也可以修改端點的相關(guān)參數(shù)來滿足需求。

第一個CDC VCOM類的功能添加完成后,開始添加第二個MSC類的interface,仍然是點擊加號,修改Class為MSC,其余的配置都保持默認。

最后進行HID類的配置,仍然是點擊加號,添加新的interface,修改Class為HID,在右側(cè)的Present下拉框內(nèi)選擇Mouse,需要使用自定義HID報告的應(yīng)用可以選擇None,并且自己進行Endpoints和report的配置。

所有配置過程如下圖所示:

wKgZomUD9dyARR37AACq2WTq6F0548.png

在所有類的interfaces添加完成后,點擊上方菜單中的UpdateCode,在彈出的對話框中,可以看到本次配置對哪些文件產(chǎn)生了影響,此處需要注意的是,需要前兩個board文件夾下的4個文件的默認勾選去除掉,然后點擊OK,完成代碼的生成。

具體步驟如下圖所示。

wKgZomUD9d6AD1DiAACiZVZjKZI812.png

在生成完成代碼后,MCUX會自動跳轉(zhuǎn)回工程開發(fā)界面,打開source目錄下的與工程同名的.c文件,在頭文件處添加’ #include "usb_device_composite.h"’,并且將主循環(huán)里的內(nèi)容替換為USB_DeviceTasks();。

修改的步驟如下圖所示。

wKgaomUD9d-AS_jmAAJo0wyhsBQ732.png

完成上述修改后即可編譯下載到RT1060-EVK板上進行測試。下載完成后按下EVK板的reset鍵,連接USB1口到PC的USB口,打開設(shè)備管理器可以看到生成了一個新的composite device,并且同時,還可以在各個設(shè)備類下面查找到實現(xiàn)的相應(yīng)的設(shè)備,并且這些設(shè)備的PIDVID相同,都是在配置界面內(nèi)所配置的PIDVID,如下圖所示。

wKgZomUD9eGACUZgAAO0qi-WSQw446.png

移植到IAR環(huán)境

先要準備一個IAR的工程。

在SDK生成器中下載一個帶有完整的USB stack的SDK包,然后在同樣的頁面內(nèi)下載一個Standalone的示例工程,如下圖所示。

wKgaomUD9eKAdSB4AAMGEubH3D0962.png

根據(jù)所要生成的Composite Device所含的類的種類,選擇SDK中的某單一類的工程,例如,本應(yīng)用筆記中的Composite Device包含了三個類,在生成單獨的工程時,選擇dev_hid_mouse_bm的工程。

接下來需要添加和刪除一些文件

上一節(jié)中生成的工程中,只包含了HID類的相關(guān)文件,所以我們需要朝工程內(nèi)添加兩部分的文件,以實現(xiàn)composite device的功能。

第一部分的文件是USB stack相關(guān)的文件,這也是為什么我們需要一個完整的SDK包的原因,從SDK包的middlewareusboutputsourcedeviceclass目錄中將MSC類及CDC類相關(guān)的文件添加到工程中。如下圖所示。

wKgaomUD9eOAM9wAAAAzeV3ax_8467.png

第二部分文件是由Config Tools生成的文件,這部分文件在MCUX的工程目錄下能夠找到,將Config Tools生成的文件復制到IAR工程目錄下,并且如下圖所示將它們添加進工程。

wKgZomUD9eWAIqddAABN4mQ4wCI535.png

在完成文件的添加后還需要把原本source目錄下的文件從工程中去除,以免除本來工程里的文件與工具所生成的文件產(chǎn)生的沖突。由于使用的基工程是HID Mouse的demo工程,還需要將usb目錄下的dcd目錄下的文件從工程中去除,否則工程會報錯。

需要注意的是,在把所有的文件添加進工程以后,需要在配置里將保存相應(yīng)頭文件的目錄添加到include directories中。

完成上述工作后,即可編譯下載,運行效果與前一章的效果一致。

來源:恩智浦MCU加油站

審核編輯:湯梓紅

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

    關(guān)注

    60

    文章

    7876

    瀏覽量

    263695
  • 環(huán)境搭建
    +關(guān)注

    關(guān)注

    0

    文章

    53

    瀏覽量

    9038
  • mcuxpresso
    +關(guān)注

    關(guān)注

    1

    文章

    38

    瀏覽量

    4138
收藏 人收藏

    評論

    相關(guān)推薦

    【匯總篇】小草手把手教你 LabVIEW 串口儀器控制

    `課程推薦>>《每天1小時,龍哥手把手LabVIEW視覺設(shè)計》[hide]小草手把手教你 LabVIEW 串口儀器控制—生成EXE和SETUP的問題小草
    發(fā)表于 02-04 10:45

    手把手教你SIMULINK代碼生成

    FrancisZhao:專欄文章列表以及一些說明?zhuanlan.zhihu.comFrancisZhao:手把手教你代碼生成(下):SIMULINK代碼生成?zhuanlan.zhihu.com
    發(fā)表于 08-18 06:03

    手把手教你寫批處理-批處理的介紹

    手把手教你寫批處理-批處理的介紹
    發(fā)表于 10-25 15:02 ?69次下載

    手把手筆記本的系統(tǒng)安裝

    手把手筆記本的系統(tǒng)安裝 筆記本的系統(tǒng)安裝和臺式機的是一樣的。Windows系統(tǒng)安裝一般包括以下幾個步驟
    發(fā)表于 01-20 13:52 ?1736次閱讀

    美女手把手教你如何裝機(下)

    美女手把手教你如何裝機(下) 接著下來就是今天的重頭戲,開核蘿!~
    發(fā)表于 01-27 11:16 ?2914次閱讀

    手把手做光立方

    電子發(fā)燒友網(wǎng)站提供《手把手做光立方.doc》資料免費下載
    發(fā)表于 03-21 14:07 ?0次下載

    手把手教你安裝Quartus II

    本章手把手把地教你如何安裝 Quartus II 軟件 ,并將它激活 。此外 還有USB -Blaster下載器的驅(qū)動安裝步驟 。
    發(fā)表于 09-18 14:55 ?9次下載

    手把手教你如何開始DSP編程

    手把手教你如何開始DSP編程。
    發(fā)表于 04-09 11:54 ?12次下載
    <b class='flag-5'>手把手</b>教你如何開始DSP編程

    手把手教你學LabVIEW視覺設(shè)計

    手把手教你學LabVIEW視覺設(shè)計手把手教你學LabVIEW視覺設(shè)計手把手教你學LabVIEW視覺設(shè)計手把手教你學LabVIEW視覺設(shè)計手把手
    發(fā)表于 03-06 01:41 ?3093次閱讀

    手把手教你玩USB開發(fā)資料匯總第一部分

    手把手教你玩開發(fā)—USB開發(fā)板資料,B站有視頻教程
    發(fā)表于 09-09 15:48 ?21次下載

    手把手教你玩USB開發(fā)資料匯總第二部分

    手把手教你玩開發(fā)—USB開發(fā)板資料,B站有視頻教程
    發(fā)表于 09-09 15:50 ?22次下載

    手把手教你開關(guān)電源PCB排板

    手把手教你開關(guān)電源PCB排板(新型電源技術(shù))-分享一下開關(guān)電源PCB排板的基本要點及分析,以及例子講解。絕對的手把手
    發(fā)表于 09-18 12:27 ?57次下載
    <b class='flag-5'>手把手</b>教你開關(guān)電源PCB排板

    如何用MCUXpresso Config Tools來快速生成一個可用的USB

    引言 本文介紹了如何使用MCUXpresso Config Tools來快速生成一個可用的USB composite device的demo
    的頭像 發(fā)表于 10-28 09:22 ?5206次閱讀
    如何用<b class='flag-5'>MCUXpresso</b> <b class='flag-5'>Config</b> <b class='flag-5'>Tools</b>來快速<b class='flag-5'>生成</b>一個可用的<b class='flag-5'>USB</b>

    MCUXpresso Config Tools Windows 64bit package 軟件下載

    MCUXpresso Config Tools Windows 64bit package 軟件下載
    發(fā)表于 12-07 13:06 ?17次下載
    <b class='flag-5'>MCUXpresso</b> <b class='flag-5'>Config</b> <b class='flag-5'>Tools</b> Windows 64bit package 軟件下載

    手把手教你學FPGA仿真

    電子發(fā)燒友網(wǎng)站提供《手把手教你學FPGA仿真.pdf》資料免費下載
    發(fā)表于 10-19 09:17 ?2次下載
    <b class='flag-5'>手把手</b>教你學FPGA仿真