嵌入式的開發(fā)的朋友們,咱們對串口調(diào)試工具一定不陌生,除了上位機中,各種串口收發(fā)軟件外,還有很多USB轉(zhuǎn)串口的設備。
這些設備最常見的當屬FT232了,國內(nèi)還有沁恒的CH340系列,PL2303系列等。當我們插上USB轉(zhuǎn)串口的設備時,一般都需要再去找對應的驅(qū)動,十年前,這個驅(qū)動還得到處去搜索下載,如今都已成往事?,F(xiàn)在,很多芯片方案可以即插即用了,今天來記錄一下這些串口驅(qū)動到底是什么意思。最早的串口是基于DB9的一個接口,早些年的臺式機都會配置這樣的一個接口,在我最開始接觸電腦的時候,我還經(jīng)常把他和VGA接口弄混了。它在window的設備列表中會顯示一個com接口。
我們可以通過這個接口來進行計算機的通信和文件傳輸,可以對設備進行控制,這個DB9的接口電平是12V的,以至于我們?nèi)绻胝{(diào)試我們的單片機,還需要再增加一個電平轉(zhuǎn)換芯片 -- rs232。
VCP驅(qū)動由來
后來,筆記本電腦逐漸普及開來,DB9接口就被優(yōu)化掉了,此時短小精悍的USB接口大行其道,也因此,usb轉(zhuǎn)TTL的串口調(diào)試工具就被設計出來了。但是,由于歷史遺留問題,很多設備還沒有來得及更新?lián)Q代,市場上依然存在大量的DB9接口的設備,為了能夠讓這些設備繼續(xù)服役,工程師設計了這樣的USB轉(zhuǎn)串口來轉(zhuǎn)接。
與此同時,很多做串口上位機配套軟件的工程師也沒能及時跟上發(fā)展,依然很依賴于打開一個com口進行通信,所以,做USB轉(zhuǎn)TTL設備的廠商就自己寫了驅(qū)動,將自己的USB設備模擬成一個串口,這也就是我們題目中提到的VCP驅(qū)動。我們插上USB轉(zhuǎn)串口設備的時候,叮咚一聲,設備列表里面就會出現(xiàn)一個COM3。
所以,為了能夠兼容原來的上位機軟件,絕大數(shù)廠商都開發(fā)了自己的VCP(Virtual Com Port)驅(qū)動。
HID設備
HID是一套人機接口集合,在這個協(xié)議之上定義了很多通用設備,比如我們的鼠標鍵盤,還有玩游戲的游戲桿,都是基于HID接口設計的。早在Win2000的時候,window系統(tǒng)就集成了HID的驅(qū)動程序,所以大多數(shù)window操作系統(tǒng)下都無需安裝什么驅(qū)動,插上鼠標鍵盤就能使用。
所以,使用HID協(xié)議來做USB轉(zhuǎn)串口的好處就是無需安裝驅(qū)動,即插即用,可反復插拔。但是,上位機開發(fā)HID通信和串口通信相差甚遠,老的軟件不想改,新的軟件由于難度增加,HID也是經(jīng)常被pass掉,直到近年來才逐漸被采納。
CDC是什么呢?
CDC-ACM,是USB ORG組織在1999年基于通信類設備推出的一個USB通用設備類別,事實上,絕大多數(shù)使用CDC串口的USB應用,并不處理串口操作,僅借助于CDC串口驅(qū)動實現(xiàn)USB設備和USB主機之間的數(shù)據(jù)透傳。CDC串口的主要特點:
(1)無需為產(chǎn)品開發(fā)專用的USB驅(qū)動程序,但無法達到HID類設備的在所有系統(tǒng)上面的免驅(qū)效果。目前已有不少系統(tǒng)已集成CDC-ACM驅(qū)動,且驅(qū)動也在不斷完善,如在WIN8.1前需要驅(qū)動安裝包還需要做驅(qū)動包的數(shù)字簽名,因為系統(tǒng)只集成了SYS;如WIN10系統(tǒng)集成了微軟重新編寫的CDC-ACM驅(qū)動。
(2)固件開發(fā)容易,CDC-ACM類規(guī)范內(nèi)容簡單,數(shù)據(jù)上下傳內(nèi)容為透傳方式。
(3)可以實現(xiàn)部分串口功能,如串口參數(shù)設置和DTR/DSR的控制,但串口軟件中較常用的CTS/RTS不支持,且不同操作系統(tǒng)下實現(xiàn)的CDC類驅(qū)動,還存在CTS狀態(tài)不變且不可更改的差異。
坦白說,上面我們提到的廠家的VCP也是基于這個CDC開發(fā)的,只不過做了些優(yōu)化和兼容吧。如今,各操作系統(tǒng)內(nèi)置的CDC驅(qū)動也在不斷更新維護,在產(chǎn)品應用中,也難免遇到各種影響串口正常使用的情況。因此,如果單純的是為了做嵌入式方面的調(diào)試,而不是為了開發(fā)產(chǎn)品來做上位機,我認為VCP驅(qū)動和CDC虛擬串口是不錯的選擇,基于COM的工具非常多。當然對于CDC也是一樣的,它也是虛擬出一個串口,就是對于系統(tǒng)兼容性方面還不穩(wěn)定,如果只是調(diào)試,環(huán)境單一的話,CDC是很好的選擇。