吴忠躺衫网络科技有限公司

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

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

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

如何用MCUXpresso Config Tools來(lái)快速生成一個(gè)可用的USB

恩智浦MCU加油站 ? 來(lái)源:恩智浦MCU加油站 ? 作者:恩智浦MCU加油站 ? 2021-10-28 09:22 ? 次閱讀

引言

本文介紹了如何使用MCUXpresso Config Tools來(lái)快速生成一個(gè)可用的USB composite device的demo,以便節(jié)省時(shí)間直接進(jìn)行USB應(yīng)用層的開(kāi)發(fā),而不必關(guān)注USB協(xié)議棧及底層的配置。文詳細(xì)介紹了如何利用Config Tools生成USB Composite Device工程的全部步驟,并且還會(huì)介紹,如何將這些代碼porting到IAR等不同IDE中進(jìn)行開(kāi)發(fā)。

組合設(shè)備介紹

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

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

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

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

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

環(huán)境搭建

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

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

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

配置工程

首先需要?jiǎng)?chuàng)建工程。

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

具體步驟如下圖:

44512c88-378b-11ec-82a8-dac502259ad0.png

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

44a32362-378b-11ec-82a8-dac502259ad0.png

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

450ced60-378b-11ec-82a8-dac502259ad0.png

返回Peripherals界面,時(shí)鐘的錯(cuò)誤已經(jīng)消除,下面開(kāi)始添加USB的功能接口,在剛才添加的USB1的主界面內(nèi)根據(jù)自己的需求修改device的VID及PID。點(diǎn)擊Supported interfaces選項(xiàng)旁邊的加號(hào),添加一個(gè)interface,會(huì)生成一個(gè)interface0,默認(rèn)新添加的interface的類都是DFU,在右側(cè)Class下拉菜單中選擇想要實(shí)現(xiàn)的組合設(shè)備中的第一個(gè)類。

此處需要注意的是,CDC VCOM的實(shí)現(xiàn)需要用到兩個(gè)子類interface,分別是用于管理和控制的通信類接口CIC與用于傳輸數(shù)據(jù)的數(shù)據(jù)接口類DIC,在Config Tools中需要分別添加兩個(gè)interface組成來(lái)一個(gè)CDC VCOM的功能。添加兩個(gè)interfaces,分別設(shè)置類為CIC VCOM及DIC VCOM。Config Tools添加interfaces時(shí),是按照順序使用端點(diǎn)號(hào)及interface號(hào),這里我們不修改任何參數(shù),直接使用默認(rèn)的數(shù)據(jù),如果應(yīng)用層有特殊需要的,也可以修改端點(diǎn)的相關(guān)參數(shù)來(lái)滿足需求。

第一個(gè)CDC VCOM類的功能添加完成后,開(kāi)始添加第二個(gè)MSC類的interface,仍然是點(diǎn)擊加號(hào),修改Class為MSC,其余的配置都保持默認(rèn)。最后進(jìn)行HID類的配置,仍然是點(diǎn)擊加號(hào),添加新的interface,修改Class為HID,在右側(cè)的Present下拉框內(nèi)選擇Mouse,需要使用自定義HID報(bào)告的應(yīng)用可以選擇None,并且自己進(jìn)行Endpoints和report的配置。所有配置過(guò)程如下圖所示:

4575eb4e-378b-11ec-82a8-dac502259ad0.png

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

45cac6aa-378b-11ec-82a8-dac502259ad0.png

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

修改的步驟如下圖所示。

46133f66-378b-11ec-82a8-dac502259ad0.png

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

4655fa04-378b-11ec-82a8-dac502259ad0.png

移植到IAR環(huán)境

先要準(zhǔn)備一個(gè)IAR的工程。

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

466af7c4-378b-11ec-82a8-dac502259ad0.png

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

接下來(lái)需要添加和刪除一些文件

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

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

46d5831e-378b-11ec-82a8-dac502259ad0.png

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

470d7602-378b-11ec-82a8-dac502259ad0.png

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

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

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

編輯:jq

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

    關(guān)注

    146

    文章

    17317

    瀏覽量

    352631
  • usb
    usb
    +關(guān)注

    關(guān)注

    60

    文章

    7980

    瀏覽量

    266077
  • CDC
    CDC
    +關(guān)注

    關(guān)注

    0

    文章

    57

    瀏覽量

    17854
  • 編譯
    +關(guān)注

    關(guān)注

    0

    文章

    661

    瀏覽量

    33040
  • SDK
    SDK
    +關(guān)注

    關(guān)注

    3

    文章

    1045

    瀏覽量

    46267

原文標(biāo)題:手把手帶您使用MCUXpresso Config Tools生成USB組合設(shè)備

文章出處:【微信號(hào):NXP_SMART_HARDWARE,微信公眾號(hào):恩智浦MCU加油站】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    用Reality AI Tools創(chuàng)建模型

    在第二步采集到的數(shù)據(jù)基礎(chǔ)之上,用Reality AI Tools創(chuàng)建模型。
    的頭像 發(fā)表于 01-22 14:23 ?1407次閱讀
    用Reality AI <b class='flag-5'>Tools</b>創(chuàng)建模型

    MCUXPresso for VS Code插件 從0開(kāi)始打造HelloWorld

    篇中Zephyr的Hello 2025,Hello World,小編為大家介紹了使用MCUXPresso for VS Code插件來(lái)導(dǎo)入個(gè)
    的頭像 發(fā)表于 01-16 09:20 ?696次閱讀
    用<b class='flag-5'>MCUXPresso</b> for VS Code插件 從0開(kāi)始打造HelloWorld

    使用MCUXpresso for VS Code插件開(kāi)發(fā)Zephyr的hello world

    本期來(lái)到Zephyr實(shí)戰(zhàn)經(jīng)驗(yàn)演練,小編帶著大家起使用MCUXpresso for VS Code插件來(lái)開(kāi)發(fā)個(gè)屬于Zephyr的hello
    的頭像 發(fā)表于 01-03 09:21 ?643次閱讀
    使用<b class='flag-5'>MCUXpresso</b> for VS Code插件開(kāi)發(fā)Zephyr的hello world

    使用DAC38J84的config47和config48輸出個(gè)固定的數(shù)據(jù)時(shí)沒(méi)有輸出,為什么?

    我使用DAC38J84的config47和config48輸出個(gè)固定的數(shù)據(jù)時(shí)沒(méi)有輸出,我的配置如下: sifdac_ena =1;When asserted the DAC ou
    發(fā)表于 01-03 07:09

    使用MCUXPresso插件開(kāi)發(fā)Zephyr

    應(yīng)廣大讀者朋友的熱情邀請(qǐng),我們特別策劃了“Zephyr領(lǐng)進(jìn)門(mén)”系列介紹(共十篇),旨在為大家深度剖析Zephyr OS——這備受矚目的開(kāi)源實(shí)時(shí)操作系統(tǒng)。從使用MCUXPresso插件進(jìn)行開(kāi)發(fā)
    的頭像 發(fā)表于 11-28 09:41 ?375次閱讀

    在macOS Sierra上安裝Pro Tools 10

    在 macOS Sierra 上安裝 Pro Tools 10?
    發(fā)表于 11-25 14:48 ?0次下載

    在DRA7xx器件上使用CONFIG-FS的USB復(fù)合小工具

    電子發(fā)燒友網(wǎng)站提供《在DRA7xx器件上使用CONFIG-FS的USB復(fù)合小工具.pdf》資料免費(fèi)下載
    發(fā)表于 10-10 09:26 ?0次下載
    在DRA7xx器件上使用<b class='flag-5'>CONFIG</b>-FS的<b class='flag-5'>USB</b>復(fù)合小工具

    何用flash_download_tools_v3.6.5_0燒錄程序?

    /ESP8266_RTOS_SDK/examples/get-started/project_template拷貝到了另外個(gè)目錄,并生成了partitions_singleapp.bin
    發(fā)表于 07-09 06:11

    如何快速生成Modbus指令?教程來(lái)啦

    適用型號(hào)該筆記適用于標(biāo)準(zhǔn)Modbus協(xié)議產(chǎn)品(MA01系列、ME31系列、M31系列、ME15-AXAX8080)。二功能簡(jiǎn)介功能說(shuō)明:Modbus指令快速生成教程旨在幫助用戶快速
    的頭像 發(fā)表于 06-28 08:21 ?1385次閱讀
    如何<b class='flag-5'>快速</b><b class='flag-5'>生成</b>Modbus指令?教程來(lái)啦

    esp32生成makefile的時(shí)候,始終提示出錯(cuò),為什么?

    我買了個(gè)esp32的開(kāi)發(fā)板,我下載sdk只有, 在執(zhí)行cmake . 來(lái)生成makefile的時(shí)候,始終提示出錯(cuò), 錯(cuò)誤提示如下: CMake Error at tools/cmake
    發(fā)表于 06-26 06:16

    下載編譯usb_cdc_4g_module示例報(bào)usb_print_config_descriptor錯(cuò)的原因?

    \'_usb_get_config_desc\': D:/_______________________PROJECTS/ESP_PRJs/esp-iot-solution/components/usb
    發(fā)表于 06-14 06:37

    用PSOC4芯片來(lái)設(shè)計(jì)個(gè)信號(hào)發(fā)生器,用什么軟件去進(jìn)行個(gè)仿真?

    請(qǐng)問(wèn)下,就是我用PSOC4芯片來(lái)設(shè)計(jì)個(gè)信號(hào)發(fā)生器,那么我應(yīng)該用什么軟件去進(jìn)行個(gè)仿真,就比如
    發(fā)表于 06-03 07:31

    在界面有改動(dòng)前點(diǎn)擊生成代碼是可以的,但是加了個(gè)textArea后生成就失敗了的原因?

    在我界面有改動(dòng)前我點(diǎn)擊生成代碼是可以的但是我就隨便加了個(gè)textArea然后點(diǎn)生成程序就失敗了,把界面上添加的textArea后再點(diǎn)擊生成
    發(fā)表于 04-01 08:11

    何用stm32生成pwm同時(shí)在其pwm低電平中心觸發(fā)adc?

    何用stm32生成pwm同時(shí)在其pwm低電平中心觸發(fā)adc
    發(fā)表于 03-20 07:25

    全志XR806 FreeRTOS快速開(kāi)發(fā)入門(mén)

    RTOS 快速開(kāi)發(fā)入門(mén) XR806 是顆高集成度無(wú)線應(yīng)用MCU,其集成了ARMv8-M 內(nèi)核、IEEE 802.11b/g/n Wi-Fi 子系統(tǒng)、BLE 5.0子系統(tǒng)、電源管理系統(tǒng)、高級(jí)別的安全
    發(fā)表于 03-01 10:49
    澳门赌百家乐的玩法技巧和规则 | 风水学中的24向是什么| 豪博| 龍城百家乐的玩法技巧和规则| 女神百家乐官网的玩法技巧和规则| 百家乐官网游戏出售| 大发888城亚洲游戏| 在线百家乐安卓| 百家乐官网扑克多少张| 足球开户网| 电子百家乐规则| 百家乐网投开户| 可以玩百家乐官网的博彩公司| 99真人娱乐城| 威尼斯人娱乐城玩百家乐 | 百家乐官网登封代理| 大发888真钱娱乐 博彩| 百家乐庄6点| 百家乐会骗人吗| 皇冠走地| 载大发888软件| 百家乐现金网开户平台| 百家乐官网娱乐平台真钱游戏 | 大发888开户即送58| 伯爵百家乐娱乐场| 黄金城百家乐官网手机用户| 澳门百家乐官网官网www.bjbj100.com| 博E百娱乐| 大发888 游戏下载| 太阳城百家乐软件| 盛大百家乐官网的玩法技巧和规则 | 杨公24山向水法吉凶断| 破解百家乐官网游戏机| 网上百家乐官网真实度| 菲彩线上娱乐| 大发888国际娱乐网| 百家乐真人视频出售| 有破解百家乐仪器| 百家乐娱乐城新闻| 七匹狼百家乐官网的玩法技巧和规则 | 大发888账号申请|