chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

STM32的USB虛擬串口介紹

CHANBAEK ? 來(lái)源:頭條號(hào)科G棧 ? 作者:頭條號(hào)科G棧 ? 2023-03-23 10:10 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

通常我們使用STM32進(jìn)行串口通信會(huì)選擇其硬件串口,但在某些情況下串口會(huì)不夠用,這個(gè)時(shí)候就可以選擇USB的虛擬串口,這樣可以增加一個(gè)串口。

USB是非常復(fù)雜的一個(gè)設(shè)備,要想完全搞懂它需要花費(fèi)不少時(shí)間和精力。但去使用它卻相對(duì)簡(jiǎn)單。這里我們使用STM32CubeMX構(gòu)建一個(gè)初始工程,然后實(shí)現(xiàn)將我們從電腦發(fā)下來(lái)的東西原封不動(dòng)地發(fā)回電腦,使用的芯片是STM32F103zet6。

USB需要配置兩個(gè)地方,一個(gè)是Connectivity下勾選USB,在Mode下勾選Device,下面的參數(shù)保持默認(rèn)即可。其他芯片類型的選項(xiàng)可能不同,選擇有Device字樣的就OK。

pYYBAGQbtRiANmjIAAO2-9ih4Ok121.jpg

第二在Middleware下選擇USB_DEVICE,在右邊的下拉菜單選擇Communication Device Class(Virtual Port Com),下面的參數(shù)設(shè)置可以保持默認(rèn),除非你了解各個(gè)參數(shù)是干什么的,否則不建議修改。這些參數(shù)涉及到了USB的設(shè)備描述符、字符串描述符、緩存等等。

poYBAGQbtRmAUxJWAADJU4WxWiw469.jpg

其他配置包括時(shí)鐘、工程路徑、工具鏈、驅(qū)動(dòng)設(shè)置等等就不羅嗦了,配置好后點(diǎn)擊生成代碼,我使用gcc編譯。

USB虛擬串口涉及的文件有下面三類:

底層

pYYBAGQbtRqAR9vrAAEMBTtSclk106.jpg

中間層

poYBAGQbtRuAFUvtAACoZuEK8e8861.jpg

應(yīng)用層

pYYBAGQbtRyAU9ggAABjijYjSJQ641.jpg

實(shí)際使用的時(shí)候只需要關(guān)心應(yīng)用層即可。

在編譯下載之前,我們需要在電腦安裝STM32提供的虛擬串口驅(qū)動(dòng),這在他們的官網(wǎng)可以下載到。

pYYBAGQbtR2AXYA6AAIC5aHFJUI784.jpg

驅(qū)動(dòng)安裝好后,接下來(lái)看看如何實(shí)現(xiàn)數(shù)據(jù)的收發(fā)。

在usb_device.c文件下實(shí)現(xiàn)了USB設(shè)備的初始化,只需要調(diào)用它就完成了所有的USB初始化工作。

poYBAGQbtR6AZMqTAABiJKn7J28844.jpg

通過(guò)在main中調(diào)用這個(gè)函數(shù),電腦就已經(jīng)可以將芯片的USB識(shí)別為一個(gè)串口了。進(jìn)一步詳細(xì)內(nèi)容就不展開了,以后會(huì)專門發(fā)文介紹USB。

pYYBAGQbtR-ALtxCAACHSUTH-nA231.jpg

上面的VID和PID可以在文件usbd_desc.c中找到,設(shè)備描述符就在這個(gè)文件中。

poYBAGQbtSCAAQ9CAACQjrlgJf0447.jpg

OK,現(xiàn)在虛擬串口正確識(shí)別了,下面就是數(shù)據(jù)的收發(fā)了。

數(shù)據(jù)收發(fā)的接口在usbd_cdc_if.c文件下。

pYYBAGQbtSGABqWhAABZeKB5XaI083.jpg

這里可以看到接收用了static關(guān)鍵字,說(shuō)明它只能在本文件中使用,不可以外部調(diào)用。發(fā)送我們可以直接調(diào)用。這里先介紹發(fā)送吧。

發(fā)送

如果是發(fā)送原始數(shù)據(jù),可以直接將數(shù)據(jù)打包成數(shù)組,然后調(diào)用函數(shù)發(fā)送即可。但通常我們用串口打log,所以這里可以構(gòu)造一個(gè)printf函數(shù)。

poYBAGQbtSGAancCAAAr1ZyymKI032.jpg

這樣使用USB虛擬串口打印東西就非常方便了。這里要注意buff要夠大,否則會(huì)出現(xiàn)發(fā)送亂碼或不全的問(wèn)題。

接收

USB虛擬串口的接收采用了中斷方式,芯片接收到數(shù)據(jù)后中斷回調(diào)函數(shù)會(huì)調(diào)用CDC_Receive_FS()函數(shù)接收數(shù)據(jù),然后將數(shù)據(jù)放到接收緩存中。但是軟件沒有提供直接獲得數(shù)據(jù)和個(gè)數(shù)的接口。所以我采取了一種簡(jiǎn)單暴力的方式來(lái)獲取數(shù)據(jù)和數(shù)據(jù)個(gè)數(shù)。

pYYBAGQbtSKASCU5AAFg2Sdy4_M943.jpg

收到數(shù)據(jù)后,數(shù)據(jù)的緩存指針通過(guò)參數(shù)Buf傳進(jìn)來(lái),數(shù)據(jù)個(gè)數(shù)通過(guò)參數(shù)Len傳進(jìn)來(lái)。上面三個(gè)extern的變量在main文件中定義,get_data_flag標(biāo)志是否收到數(shù)據(jù),buf存放數(shù)據(jù),data_nums存放數(shù)據(jù)個(gè)數(shù)。由于USB虛擬串口一次最多接收64字節(jié),如果收到的數(shù)據(jù)多于64字節(jié),會(huì)連續(xù)調(diào)用多次接收函數(shù),上圖中的方法理論上可以任意接收不超過(guò)buf大小個(gè)字節(jié)。

在main.c中的情況如下所示:

poYBAGQbtSSALIVAAAGMphrRRn8692.jpg

運(yùn)行效果如下圖所示:

pYYBAGQbtSWAac7oAAAQjjEBwrI989.jpg

使用虛擬串口波特率不起作用,任何波特率都可以用。

在main中我們還發(fā)現(xiàn)有一個(gè)USB_Status_Init()函數(shù),這個(gè)函數(shù)用來(lái)復(fù)位USB口。如果沒有這個(gè)函數(shù),每次下載完程序后需要重新插拔usb線電腦才能識(shí)別到,有了它就可以不用拔插線了。

poYBAGQbtSaADKA4AAHUvgm3dYc893.jpg

原理也很簡(jiǎn)單,就是讓USB的兩個(gè)Pin都是低電平持續(xù)幾個(gè)毫秒即可。

OK,關(guān)于STM32的USB虛擬串口就介紹到這里了,很多細(xì)節(jié)我也不甚了解,希望看到本文的小伙伴能指正補(bǔ)充。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(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)投訴
  • usb
    usb
    +關(guān)注

    關(guān)注

    60

    文章

    8182

    瀏覽量

    272831
  • STM32
    +關(guān)注

    關(guān)注

    2293

    文章

    11032

    瀏覽量

    364796
  • 串口
    +關(guān)注

    關(guān)注

    15

    文章

    1588

    瀏覽量

    79917
  • 虛擬串口
    +關(guān)注

    關(guān)注

    3

    文章

    63

    瀏覽量

    14212
  • stm32cubemx
    +關(guān)注

    關(guān)注

    5

    文章

    286

    瀏覽量

    16249
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    STM32USB虛擬串口

    里面有很多資料STM32開發(fā)軟件目錄編譯軟件Keil MDKSTM32CubeMX下載軟件STM32 ISP for F1軟件Flash Loader軟件STVPST-link下載STM32
    發(fā)表于 08-23 09:17

    USB虛擬串口是什么

    USB虛擬串口是什么?STM32 USB虛擬串口有何
    發(fā)表于 10-08 08:52

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

    之前的文章中介紹過(guò)STM32USB接口虛擬串口的功能?!?b class='flag-5'>STM32CubeMX之
    發(fā)表于 02-22 06:29

    stm32f103&gd32的usb虛擬串口,打印類printer組合設(shè)備

    stm32f103&gd32的usb虛擬串口+打印類printer組合設(shè)備@TOCstm32f103&gd32的
    發(fā)表于 12-02 16:06 ?57次下載
    <b class='flag-5'>stm32</b>f103&gd32的<b class='flag-5'>usb</b><b class='flag-5'>虛擬</b><b class='flag-5'>串口</b>,打印類printer組合設(shè)備

    STM32 USB虛擬串口ISP在線更新

    通過(guò)STM32虛擬串口實(shí)現(xiàn)Flash Loader協(xié)議的具體流程
    發(fā)表于 12-03 19:36 ?10次下載
    <b class='flag-5'>STM32</b> <b class='flag-5'>USB</b><b class='flag-5'>虛擬</b><b class='flag-5'>串口</b>ISP在線更新

    STM32 USB CDC 虛擬串口

    虛擬串口和上位機(jī)進(jìn)行數(shù)據(jù)通信,通常只枚舉一個(gè)串口基本就能滿足要求。但是STM32 USB提供了足夠的的端點(diǎn)可以在需要的情況下枚舉出多個(gè)
    發(fā)表于 12-27 19:06 ?28次下載
    <b class='flag-5'>STM32</b> <b class='flag-5'>USB</b> CDC <b class='flag-5'>虛擬</b>多<b class='flag-5'>串口</b>

    STM32CUBEMX F103 HAL庫(kù)開發(fā)之 USB虛擬串口

    今天心血來(lái)潮想寫點(diǎn)東西做比賽這么久了,應(yīng)該寫點(diǎn)東西,一是為了給自己學(xué)的知識(shí)一個(gè)總結(jié),二是可以鍛煉自己的寫作能力與表達(dá)能力,幫助他人避免自己走過(guò)的坑stm32 USB VPC虛擬串口簡(jiǎn)介
    發(fā)表于 12-28 19:44 ?8次下載
    <b class='flag-5'>STM32</b>CUBEMX F103 HAL庫(kù)開發(fā)之 <b class='flag-5'>USB</b><b class='flag-5'>虛擬</b><b class='flag-5'>串口</b>

    stm32 usb虛擬串口收發(fā)數(shù)據(jù)

    stm32 usb虛擬串口收發(fā)數(shù)據(jù)1.stm32 usb虛擬
    發(fā)表于 12-28 19:45 ?44次下載
    <b class='flag-5'>stm32</b> <b class='flag-5'>usb</b><b class='flag-5'>虛擬</b><b class='flag-5'>串口</b>收發(fā)數(shù)據(jù)

    USB虛擬串口

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

    STM32 USB虛擬串口波特率問(wèn)題(含源碼)

    之前的文章中介紹過(guò)STM32USB接口虛擬串口的功能?!?b class='flag-5'>STM32CubeMX之
    發(fā)表于 12-28 19:51 ?21次下載
    <b class='flag-5'>STM32</b> <b class='flag-5'>USB</b><b class='flag-5'>虛擬</b><b class='flag-5'>串口</b>波特率問(wèn)題(含源碼)

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

    之前的文章中介紹過(guò)STM32USB接口虛擬串口的功能?!?b class='flag-5'>STM32CubeMX之
    發(fā)表于 12-28 20:03 ?55次下載
    <b class='flag-5'>STM32</b>實(shí)現(xiàn)<b class='flag-5'>USB</b>轉(zhuǎn)<b class='flag-5'>串口</b>功能(含源碼)

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

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

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

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

    STM32 USB虛擬串口驅(qū)動(dòng)

    電子發(fā)燒友網(wǎng)站提供《STM32 USB虛擬串口驅(qū)動(dòng).rar》資料免費(fèi)下載
    發(fā)表于 10-09 15:25 ?113次下載
    <b class='flag-5'>STM32</b> <b class='flag-5'>USB</b><b class='flag-5'>虛擬</b><b class='flag-5'>串口</b>驅(qū)動(dòng)

    stm32虛擬串口接收的數(shù)據(jù)處理

    STM32中使用虛擬串口時(shí),我們需要處理接收的數(shù)據(jù)。接收到的數(shù)據(jù)可能是來(lái)自其他設(shè)備的傳感器數(shù)據(jù)、用戶輸入的命令或其他任何信息。在本篇文章中,我將詳細(xì)介紹
    的頭像 發(fā)表于 12-20 11:22 ?3135次閱讀