色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

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

如何通過Mini-F0160開發(fā)板實現(xiàn)USB轉(zhuǎn)三路虛擬串口功能?

靈動MM32MCU ? 來源:靈動MM32MCU ? 2023-05-06 15:45 ? 次閱讀

本節(jié)課程主要講述如何通過 Mini-F0160 開發(fā)板實現(xiàn) USB 轉(zhuǎn)三路虛擬串口功能。

開發(fā)板 Mini-F0163
開發(fā)環(huán)境 MDK-Keil

Mini-F0160 開發(fā)板搭載 MM32F0160 ,產(chǎn)品內(nèi)嵌 1 個 USB 控制器,內(nèi)置 USB PHY,兼容 USB 2.0 全速規(guī)范,提供最高 12 Mbps 數(shù)據(jù)速率,支持設(shè)備模式,USB 控制器提供了最高 8 個雙向端點。

什么是 CDC 設(shè)備

CDC 類是 USB 通信設(shè)備類 (Communication Device Class)的簡稱。由 USB 組織定義的專門給各種通信設(shè)備使用的 USB 子類。

通常,CDC類由兩個接口子類組成:

通信接口(Communication Interface Class)

主要用于主機對設(shè)備進行管理和控制,它包含一個控制類型的端點和一個可選的中斷類型端點。

該控制類型端點 0 一般用作請求,可以用于配置 USB 設(shè)備枚舉虛擬串口的波特率、數(shù)據(jù)類型的設(shè)置,比如數(shù)據(jù)長度、停止位等。在虛擬串口應(yīng)用中,該操作并不一定需要具體實現(xiàn)。因為主機與設(shè)備在物理上通過 USB 總線進行通信,與串口并沒有關(guān)系,在虛擬化過程中,起決定性作用的是串口驅(qū)動,該驅(qū)動將每一條具體的虛擬串口操作對應(yīng)到實際上的USB操作。同時,主機與設(shè)備之間的 USB 通信速率依然是標(biāo)準(zhǔn)的 USB2.0 Full-Speed(12Mbps)速度,并不受所謂的串口波特率影響,實際的速率取決于總線的實際使用率、驅(qū)動訪問 USB 外設(shè)的有效速率(兩邊)以及外部環(huán)境對通信本身造成的干擾率等因素。

該中斷類型端點可以用于異步事件通知,設(shè)備端可以通過該端點向主機發(fā)送內(nèi)部時間等,如串口狀態(tài)變化事件等。篇幅受限,本文不進行實現(xiàn)。

數(shù)據(jù)接口類(Data Interface Class)

主要用于主機和設(shè)備之間進行數(shù)據(jù)傳輸,包含輸入(IN)端點和輸出(OUT)端點。

輸入(IN)端點:

用于從設(shè)備向主機發(fā)送數(shù)據(jù)。

輸出(OUT)端點:

用于主機向從設(shè)備發(fā)送數(shù)據(jù)。

多路虛擬串口的具體實現(xiàn)

多路虛擬串口功能可以通過組合設(shè)備(Composite Device)進行實現(xiàn)。組合設(shè)備是指具有多個接口,且接口間相互獨立的USB設(shè)備。一個USB組合設(shè)備只有一個設(shè)備地址。在開發(fā)過程中,可以將不同的功能與不同的接口對應(yīng),來開發(fā)多功能的USB設(shè)備,描述符層次結(jié)構(gòu)更清晰,出錯容易排查。

設(shè)備描述符

設(shè)備描述符(Device Descriptor)是在設(shè)備連接時主機讀取的第一個描述符,說明了 USB 設(shè)備的通用信息,提供關(guān)于設(shè)備、設(shè)備的配置以及任何設(shè)備所歸屬類的信息。主機在取得設(shè)備描述符后,就可以繼續(xù)去獲取設(shè)備的配置、接口和端點描述符等信息。

USB 設(shè)備只有一個設(shè)備描述符。在設(shè)備描述符中,可以使用 bDeviceClass = 0x00, bDeviceSubClass = 0x00, dDeviceProtocol = 0x00 表示此類信息在接口描述符內(nèi)給出;也可以使用【0xEF,0x02,0x01】表示當(dāng)前為組合設(shè)備。下圖為主機請求設(shè)備描述符,設(shè)備返回設(shè)備描述符報文:

wKgaomRWBcCAFXtJAAHKzvJ616M942.jpg

配置描述符

配置描述符(Configuration Descriptor)說明了一個特定配置的相關(guān)信息。當(dāng)主機請求配置描述符時,返回的是所有相關(guān)的接口和端點描述符。

一個USB設(shè)備有一個或多個配置描述符。配置描述符描述了配置所提供的接口數(shù)量。每個接口可以獨立操作。每種配置有一個或多個接口,而且每個接口有零個或多個端點。在一個配置中,接口不會共享一個端點,除非端點被相同接口的備用設(shè)置使用。沒有這一限制、屬于不同配置的接口可以共享端點。

配置描述符規(guī)定了設(shè)備的特征和能力。一般單個配置已經(jīng)足夠了,但在驅(qū)動程序的支持下,帶有多應(yīng)用或多電源選擇的設(shè)備可支持多重配置。且每次只有一個配置被激活。每個配置需要一個配置描述符,其中含有關(guān)于設(shè)備電源使用及所支持接口數(shù)的信息。每個配置描述符都有附屬描述符(subordinate descriptor),包括一個或多個接口描述符(Interface Descriptor)以及可選的端點描述符(Endpoint Descriptor)。

配置描述符如下:

wKgZomRWBdSAfthMAAFDavQEVEM921.jpg

接口描述符

下圖所示為標(biāo)準(zhǔn)的接口描述符定義。

wKgaomRWBeWAAxKBAAD0piv3SEU217.jpg

單個CDC類的描述符需要兩個接口:通信接口描述符和數(shù)據(jù)接口描述符。這兩個接口需要接口關(guān)聯(lián)描述符(Interface Association Descriptor)進行綁定。

wKgaomRWBfmARCEWAAC7dPEGQXg185.jpg

接口關(guān)聯(lián)描述符

IAD 接口關(guān)聯(lián)描述符提供了一種功能:即把實現(xiàn)單個功能的多個 Interface 打包在一起。通過接口關(guān)聯(lián)描述符打包在一起的若干 Interface 是同一個功能設(shè)備的 Interface,PC端只需要加載同一個驅(qū)動即可。

wKgaomRWBgqAMBXnAADekTP-ATk470.jpg

通信(控制)接口描述符

該接口描述符需要包含功能描述符(Header,Call Management, ACM)、端點描述符。

wKgZomRWBhqAdaBxAAEJnoKtAQc286.jpg

功能描述符

Header 功能描述符

Call Management 功能描述符

ACM

Union 功能描述符

數(shù)據(jù)接口描述符

端點描述符

下圖所示為標(biāo)準(zhǔn)的端點描述符定義。

97d2e30e-ebe1-11ed-90ce-dac502259ad0.png

本文中分配的端點如下:

97ea7398-ebe1-11ed-90ce-dac502259ad0.png

代碼:

/*CDC端點1*/
#defineEPNUM_CDC_0_NOTIF0x81
#defineEPNUM_CDC_0_OUT0x02
#defineEPNUM_CDC_0_IN0x82

/*CDC端點2*/
#defineEPNUM_CDC_1_NOTIF0x83
#defineEPNUM_CDC_1_OUT0x04
#defineEPNUM_CDC_1_IN0x84

/*CDC端點3*/
#defineEPNUM_CDC_2_NOTIF0x85
#defineEPNUM_CDC_2_OUT0x06
#defineEPNUM_CDC_2_IN0x86

配置描述符 / 接口描述符 / 端點描述符

uint8_tconstdesc_fs_configuration[]=
{
/*Confignumber,interfacecount,stringindex,totallength,attribute,powerinmA*/
TUD_CONFIG_DESCRIPTOR(1,ITF_NUM_TOTAL,0,CONFIG_TOTAL_LEN,0x00,100),

/*1stCDC:Interfacenumber,stringindex,EPnotificationaddressandsize,EPdataaddress(out,in)andsize.*/
TUD_CDC_DESCRIPTOR(ITF_NUM_CDC_0,4,EPNUM_CDC_0_NOTIF,8,EPNUM_CDC_0_OUT,EPNUM_CDC_0_IN,64),

/*2ndCDC:Interfacenumber,stringindex,EPnotificationaddressandsize,EPdataaddress(out,in)andsize.*/
TUD_CDC_DESCRIPTOR(ITF_NUM_CDC_1,4,EPNUM_CDC_1_NOTIF,8,EPNUM_CDC_1_OUT,EPNUM_CDC_1_IN,64),

/*3ndCDC:Interfacenumber,stringindex,EPnotificationaddressandsize,EPdataaddress(out,in)andsize.*/
TUD_CDC_DESCRIPTOR(ITF_NUM_CDC_2,4,EPNUM_CDC_2_NOTIF,8,EPNUM_CDC_2_OUT,EPNUM_CDC_2_IN,64),
};

字符串描述符

charconst*string_desc_arr[]=
{
(constchar[]){0x09,0x04},//0:Supportedlanguage:English(0x0409)
"MindMotion",//1:Manufacturer
"MM32-3VCP",//2:Product
"20221229",//3:Serials
"CDCVirtualCOM",//4:CDCInterface
};

CDC Task 接口

在該接口函數(shù)中,本文主要實現(xiàn)了各個串口的回環(huán)功能,即在任務(wù)處理中發(fā)送當(dāng)前端點的接收字符。

voidcdc_task(void)
{
uint8_titf;

for(itf=0;itf

基本測試

如上,我們就完成三路虛擬串口的CDC功能,將程序下載到MCU中,插上USB線,然后在電腦的設(shè)備管理器的端口欄就可以找到對應(yīng)的USB CDC枚舉模擬串口設(shè)備。

98059c18-ebe1-11ed-90ce-dac502259ad0.png

9818531c-ebe1-11ed-90ce-dac502259ad0.png

成功枚舉,我們繼續(xù)在Windows 和 Linux 環(huán)境下測試一下通信:

982c8f12-ebe1-11ed-90ce-dac502259ad0.png98591dc0-ebe1-11ed-90ce-dac502259ad0.png

測試成功。




審核編輯:劉清

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

    關(guān)注

    112

    文章

    16332

    瀏覽量

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

    關(guān)注

    60

    文章

    7936

    瀏覽量

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

    關(guān)注

    0

    文章

    57

    瀏覽量

    17798
  • 串口驅(qū)動
    +關(guān)注

    關(guān)注

    2

    文章

    82

    瀏覽量

    18647

原文標(biāo)題:靈動微課堂 (第254講)|Mini-F0160實現(xiàn)USB轉(zhuǎn)3路虛擬串口

文章出處:【微信號:MindMotion-MMCU,微信公眾號:靈動MM32MCU】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    STM32實現(xiàn)虛擬串口功能

    STM32實現(xiàn)虛擬串口功能廢話不多說直接上代碼,Gitlab下載鏈接。USB虛擬
    發(fā)表于 02-22 06:04

    介紹STM32F407 USB轉(zhuǎn)串口功能實現(xiàn)

    之前的文章中介紹過STM32的USB接口虛擬串口功能。《STM32CubeMX之USB從機》。本篇文章在此基礎(chǔ)上,以STM32
    發(fā)表于 02-22 06:29

    開發(fā)板USB轉(zhuǎn)串口CH340驅(qū)動

    開發(fā)板USB轉(zhuǎn)串口C驅(qū)動。
    發(fā)表于 05-20 17:01 ?33次下載

    開發(fā)板USB轉(zhuǎn)串口CH340驅(qū)動

    開發(fā)板USB轉(zhuǎn)串口CH340驅(qū)動
    發(fā)表于 12-13 22:47 ?24次下載

    STM32F103ZET6開發(fā)板實現(xiàn)俄羅斯方塊小游戲

    使用STM32F103ZET6開發(fā)板實現(xiàn)俄羅斯方塊小游戲。
    發(fā)表于 12-19 15:27 ?39次下載

    CPLD開發(fā)板實驗板,支持EPM240,集成USB轉(zhuǎn)UART芯片CH340G

    一 產(chǎn)品簡介:1、CPLD開發(fā)板實驗板,支持EPM240,集成USB轉(zhuǎn)UART芯片CH340G 2、串口輸出控制模塊,支持64TTL電平輸
    的頭像 發(fā)表于 12-25 16:47 ?3677次閱讀

    USB轉(zhuǎn)串口芯片的功能

    發(fā)布的USB轉(zhuǎn)串口芯片LDR2001,功能強大,電腦免驅(qū),自帶Billboard功能。 LDR2001芯片設(shè)計的一個免驅(qū)的
    發(fā)表于 12-22 17:44 ?2600次閱讀
    <b class='flag-5'>USB</b><b class='flag-5'>轉(zhuǎn)</b><b class='flag-5'>串口</b>芯片的<b class='flag-5'>功能</b>

    USB虛擬串口

    STM32實現(xiàn)虛擬串口功能廢話不多說直接上代碼,Gitlab下載鏈接。USB虛擬
    發(fā)表于 12-28 19:49 ?11次下載
    <b class='flag-5'>USB</b><b class='flag-5'>虛擬</b><b class='flag-5'>串口</b>

    STM32實現(xiàn)USB轉(zhuǎn)串口功能(含源碼)

    之前的文章中介紹過STM32的USB接口虛擬串口功能。《STM32CubeMX之USB從機》。本篇文章在此基礎(chǔ)上,以STM32
    發(fā)表于 12-28 20:03 ?55次下載
    STM32<b class='flag-5'>實現(xiàn)</b><b class='flag-5'>USB</b><b class='flag-5'>轉(zhuǎn)</b><b class='flag-5'>串口</b><b class='flag-5'>功能</b>(含源碼)

    基于 RT-Thread 在 STM32 上實現(xiàn) USB 虛擬串口

    之前由于工作需要,基于 RT-Thread 在 STM32 上實現(xiàn)USB 虛擬串口。為了方便大家,我在這里把在正點原子 F429 阿波羅
    發(fā)表于 02-10 10:01 ?4次下載
    基于 RT-Thread 在 STM32 上<b class='flag-5'>實現(xiàn)</b> <b class='flag-5'>USB</b> <b class='flag-5'>虛擬</b><b class='flag-5'>串口</b>

    基于 RT-Thread 在 STM32 上實現(xiàn) USB 虛擬串口

    之前由于工作需要,基于 RT-Thread 在 STM32 上實現(xiàn)USB 虛擬串口。為了方便大家,我在這里把在正點原子 F429 阿波羅
    發(fā)表于 02-10 10:28 ?9次下載
    基于 RT-Thread 在 STM32 上<b class='flag-5'>實現(xiàn)</b> <b class='flag-5'>USB</b> <b class='flag-5'>虛擬</b><b class='flag-5'>串口</b>

    可編程USB轉(zhuǎn)串口適配器開發(fā)板轉(zhuǎn)UART I2C應(yīng)用

    可編程 USB 轉(zhuǎn)串口適配器開發(fā)板 USB 轉(zhuǎn) UART I2C 應(yīng)用
    的頭像 發(fā)表于 09-01 09:18 ?1984次閱讀
    可編程<b class='flag-5'>USB</b><b class='flag-5'>轉(zhuǎn)</b><b class='flag-5'>串口</b>適配器<b class='flag-5'>開發(fā)板</b><b class='flag-5'>轉(zhuǎn)</b>UART I2C應(yīng)用

    Mini-F0160實現(xiàn)USB轉(zhuǎn)3虛擬串口

    本節(jié)課程主要講述如何通過 Mini-F0160 開發(fā)板實現(xiàn) USB 轉(zhuǎn)三路
    的頭像 發(fā)表于 05-06 15:47 ?861次閱讀
    <b class='flag-5'>Mini-F0160</b><b class='flag-5'>實現(xiàn)</b><b class='flag-5'>USB</b><b class='flag-5'>轉(zhuǎn)</b>3<b class='flag-5'>路</b><b class='flag-5'>虛擬</b><b class='flag-5'>串口</b>

    Mini-F0160實現(xiàn)USB轉(zhuǎn)3虛擬串口

    CDC 類是 USB 通信設(shè)備類 (Communication Device Class)的簡稱。由 USB 組織定義的專門給各種通信設(shè)備使用的 USB 子類。
    的頭像 發(fā)表于 05-24 15:17 ?1573次閱讀
    <b class='flag-5'>Mini-F0160</b><b class='flag-5'>實現(xiàn)</b><b class='flag-5'>USB</b><b class='flag-5'>轉(zhuǎn)</b>3<b class='flag-5'>路</b><b class='flag-5'>虛擬</b><b class='flag-5'>串口</b>

    基于STM32F407的USB轉(zhuǎn)串口功能實現(xiàn)

    實現(xiàn)USB轉(zhuǎn)串口功能,需要將單片機真實串口(這里以USART1為例)的收發(fā)數(shù)據(jù)與
    發(fā)表于 10-16 16:04 ?2216次閱讀
    基于STM32<b class='flag-5'>F</b>407的<b class='flag-5'>USB</b><b class='flag-5'>轉(zhuǎn)</b><b class='flag-5'>串口</b><b class='flag-5'>功能</b><b class='flag-5'>實現(xiàn)</b>
    主站蜘蛛池模板: 四虎免费影院| 偷窥自拍性综合图区| 色窝窝777欧美午夜精品影院| 少妇内射视频播放舔大片| 亚洲免费精品视频| 99国产精品久久人妻无码| 国产精品 日韩精品 欧美| 久久AV喷吹AV高潮欧美| 青春草久久| 亚洲久热无码中文字幕| yellow日本动漫高清| 国产毛多水多高潮高清| 男人的天堂色偷偷| 亚洲 色 欧美 爱 视频 日韩| 999国产高清在线精品| 国产无线乱码一区二三区| 嗯别插太快好深再深点| 亚洲精品国产熟女久久久| gay台湾无套男同志xnxⅹ| 娇喘高潮教室h| 日韩亚洲欧美中文在线| 中文亚洲大香伊蕉不卡一区| 国产成人无码区免费内射一片色欲 | freevideoshd| 激情丛林电影完整在线| 日本粉嫩学生毛绒绒| 影音先锋av男人资源| 国产精品免费久久久久影院| 免费麻豆国产黄网站在线观看| 亚洲AV永久无码精品老司机蜜桃| jizz日本黄色| 里番acg纲手的熟蜜姬训练场 | 伊人久久精品中文字幕| 国产成人高清视频| 欧美性类s0x| 最懂男人心论坛| 韩国伦理电影在线神马网| 色婷婷亚洲五月| 99热久久爱五月天婷婷| 久久久久久免费高清电影 | 亚洲精品123区|