跟電腦通信想要比較快的速度就只有虛擬串口VCP
或者Bluk
設備傳輸,並且上位機需要調用WinUSB
或者libusb
的API來實現和STM32的通信。雖然API不復雜,但是後者CubeMX
中並沒有現成的配置需要自己修改USB的代碼。
虛擬串口只能使用驅動程序給定的名稱,當插入多個串口的時候分辨不出來那個設備是自己定義的。想要名稱的其中一個方法就是:
- 重新定義自己的
VIP
和PID
- 修改官方的VCP驅動文件的
inf
文件,替換信息
但是這個方法有一個問題,修改信息以後Windows系統會認爲這個驅動程序被篡改,哈希校驗失敗不允許安裝,除非強制繞過,非常麻煩
這次提供一個簡單的方法修改虛擬串口設備名稱
- 安裝ST的虛擬串口VCP驅動
- 記住名字,下載
zadig
工具,它是強制替換驅動程序的,用來把特定驅動替換爲libusb
或者winusb
等等 - 代碼中修改設備的
PID
和USB Description
信息,插入電腦但是不會識別 - 打開
zadig
,點擊Options
-List All Devices
,就會顯示所有的設備信息
zadig
中顯示的設備名稱便是你的USB Description
中定義的名稱,確認VID
和PID
是一致的就可以,並且識別了驅動就是usbser
,但是依舊無法使用- 點擊右側按鈕選擇修改
WinUSB (v6.1.7600.16385)
爲USB Serial (CDC)
,並點擊Replace Driver
,Zadig
會根據ST的虛擬串口驅動生成一份新的驅動程序,名字便是你的USB Description
,但是Vendor
依舊是ST
。
- 你也可以點擊下拉選擇
Extract Files(Don't Install)
,導出驅動文件發佈安裝,Windows不會提示安全問題
你會發現設備管理器中的名字也已經變更爲Zadig
中顯示的名字了