引言
本文介紹了如何使用MCUXpresso Config Tools來快速生成一個可用的USB composite device的demo,以便節(jié)省時(shí)間直接進(jìn)行USB應(yīng)用層的開發(fā),而不必關(guān)注USB協(xié)議棧及底層的配置。
文詳細(xì)介紹了如何利用Config Tools生成USB Composite Device工程的全部步驟,并且還會介紹,如何將這些代碼porting到IAR等不同IDE中進(jìn)行開發(fā)。
組合設(shè)備介紹
USB的composite類是指在一個USB設(shè)備中,實(shí)現(xiàn)多個不同功能的特殊USB類,如一個設(shè)備實(shí)現(xiàn)鼠標(biāo)加鍵盤或者U盤加鍵盤的功能。
實(shí)際上,USB composite類幾乎可以將任意的USB功能進(jìn)行組合,并且組合的數(shù)量也不局限于兩個,只要端點(diǎn)資源夠多,可以組合三個或多個功能于一個設(shè)備上。
在USB中,還存在有一種compound device的概念,它與composite device都可以譯作復(fù)合設(shè)備或組合設(shè)備,但是它們是兩個完全不同的概念。
USB compound device(USB復(fù)合設(shè)備)中內(nèi)嵌Hub和多個功能,每個功能都是獨(dú)立的USB設(shè)備,有獨(dú)立的VID與PID,從實(shí)現(xiàn)層面上講就是一個物理設(shè)備實(shí)現(xiàn)了一個Hub和多個物理設(shè)備。
USB composite device(USB組合設(shè)備)中只有一套VID與PID,通過不同的接口將這同一個設(shè)備定義為不同的功能的組合。而不同功能的實(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中進(jìn)行編譯下載運(yùn)行。
在使用MCUXpresso生成工程時(shí)需要加載SDK到MCUXpresso環(huán)境中,本文使用的SDK版本為2.10.0。
以下例子是生成了一個包含CDC VCOM、MSC、HID Mouse三個類功能的組合設(shè)備。
配置工程
首先需要創(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會被自動勾選,最后點(diǎn)擊Finish完成工程創(chuàng)建。
具體步驟如下圖:

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

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

返回Peripherals界面,時(shí)鐘的錯誤已經(jīng)消除,下面開始添加USB的功能接口,在剛才添加的USB1的主界面內(nèi)根據(jù)自己的需求修改device的VID及PID。
點(diǎn)擊Supported interfaces選項(xiàng)旁邊的加號,添加一個interface,會生成一個interface0,默認(rèn)新添加的interface的類都是DFU,在右側(cè)Class下拉菜單中選擇想要實(shí)現(xiàn)的組合設(shè)備中的第一個類。此處需要注意的是,CDC VCOM的實(shí)現(xiàn)需要用到兩個子類interface,分別是用于管理和控制的通信類接口CIC與用于傳輸數(shù)據(jù)的數(shù)據(jù)接口類DIC,在Config Tools中需要分別添加兩個interface組成來一個CDC VCOM的功能。
添加兩個interfaces,分別設(shè)置類為CIC VCOM及DIC VCOM。Config Tools添加interfaces時(shí),是按照順序使用端點(diǎn)號及interface號,這里我們不修改任何參數(shù),直接使用默認(rèn)的數(shù)據(jù),如果應(yīng)用層有特殊需要的,也可以修改端點(diǎn)的相關(guān)參數(shù)來滿足需求。
第一個CDC VCOM類的功能添加完成后,開始添加第二個MSC類的interface,仍然是點(diǎn)擊加號,修改Class為MSC,其余的配置都保持默認(rèn)。
最后進(jìn)行HID類的配置,仍然是點(diǎn)擊加號,添加新的interface,修改Class為HID,在右側(cè)的Present下拉框內(nèi)選擇Mouse,需要使用自定義HID報(bào)告的應(yīng)用可以選擇None,并且自己進(jìn)行Endpoints和report的配置。
所有配置過程如下圖所示:

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

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

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

移植到IAR環(huán)境
先要準(zhǔn)備一個IAR的工程。
在SDK生成器中下載一個帶有完整的USB stack的SDK包,然后在同樣的頁面內(nèi)下載一個Standalone的示例工程,如下圖所示。

根據(jù)所要生成的Composite Device所含的類的種類,選擇SDK中的某單一類的工程,例如,本應(yīng)用筆記中的Composite Device包含了三個類,在生成單獨(dú)的工程時(shí),選擇dev_hid_mouse_bm的工程。
接下來需要添加和刪除一些文件
上一節(jié)中生成的工程中,只包含了HID類的相關(guān)文件,所以我們需要朝工程內(nèi)添加兩部分的文件,以實(shí)現(xiàn)composite device的功能。
第一部分的文件是USB stack相關(guān)的文件,這也是為什么我們需要一個完整的SDK包的原因,從SDK包的middlewareusboutputsourcedeviceclass目錄中將MSC類及CDC類相關(guān)的文件添加到工程中。如下圖所示。

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

在完成文件的添加后還需要把原本source目錄下的文件從工程中去除,以免除本來工程里的文件與工具所生成的文件產(chǎn)生的沖突。由于使用的基工程是HID Mouse的demo工程,還需要將usb目錄下的dcd目錄下的文件從工程中去除,否則工程會報(bào)錯。
需要注意的是,在把所有的文件添加進(jìn)工程以后,需要在配置里將保存相應(yīng)頭文件的目錄添加到include directories中。
完成上述工作后,即可編譯下載,運(yùn)行效果與前一章的效果一致。
來源:恩智浦MCU加油站
審核編輯:湯梓紅
-
usb
+關(guān)注
關(guān)注
60文章
8440瀏覽量
284494 -
環(huán)境搭建
+關(guān)注
關(guān)注
0文章
60瀏覽量
9463 -
mcuxpresso
+關(guān)注
關(guān)注
1文章
46瀏覽量
4768
發(fā)布評論請先 登錄
恩智浦MCU MCXN947 基于MCUXpresso Config tools創(chuàng)建IIC的教程步驟
【匯總篇】小草手把手教你 LabVIEW 串口儀器控制
手把手教你SIMULINK代碼生成
手把手教您筆記本的系統(tǒng)安裝
手把手教你安裝Quartus II
手把手教你學(xué)LabVIEW視覺設(shè)計(jì)
手把手教你開關(guān)電源PCB排板
如何用MCUXpresso Config Tools來快速生成一個可用的USB
MCUXpresso Config Tools Windows 64bit package 軟件下載
手把手帶您使用MCUXpresso Config Tools生成USB組合設(shè)備
評論