串口線驅(qū)動(dòng)安裝與排查:從RS232到RS485的實(shí)用指南)
手里這根USB轉(zhuǎn)RS232/RS422/RS485的線可能是很多搞嵌入式、工控、單片機(jī)人的第一根“神器”也可能是第一根“坑貨”。力特Z-TEK這個(gè)牌子在國(guó)內(nèi)串口工具里出貨量非常大外觀長(zhǎng)得差不多但內(nèi)部用的芯片五花八門驅(qū)動(dòng)裝不上、識(shí)別不了、通訊亂碼是家常便飯。這篇文章就把這東西從原理到實(shí)操?gòu)氐字v透適合剛?cè)胧值膶W(xué)生、電子愛(ài)好者也在工控現(xiàn)場(chǎng)干了多年的老工程師以及偶爾需要調(diào)設(shè)備的運(yùn)維朋友。重點(diǎn)講清楚下載哪個(gè)驅(qū)動(dòng)、怎么裝、裝完怎么測(cè)、踩坑了怎么排查文末還有幾個(gè)壓箱底的小經(jīng)驗(yàn)希望能幫你少走彎路。1. 這個(gè)東西到底是干嘛的USB轉(zhuǎn)串口的前因后果很多剛接觸單片機(jī)和工控設(shè)備的朋友都有一個(gè)疑惑現(xiàn)在的電腦連網(wǎng)口都開(kāi)始省了為什么還要專門用一根線去轉(zhuǎn)出RS232、RS422、RS485這種“上古”接口這背后其實(shí)是工業(yè)設(shè)備生命周期和消費(fèi)電子更新節(jié)奏之間的巨大錯(cuò)位。1.1 為什么電腦還要保留“串口”這種老古董你可以把RS232接口理解成設(shè)備世界里的“普通話”從幾十年前的PLC、數(shù)控機(jī)床、工業(yè)儀表到實(shí)驗(yàn)室里的示波器、頻譜儀、老式打印機(jī)甚至某些醫(yī)療設(shè)備、銀行自助終端底層調(diào)試和維護(hù)都依賴串口。這些設(shè)備設(shè)計(jì)壽命往往高達(dá)十年、二十年但筆記本早就把9針的DB9串口取消了。USB轉(zhuǎn)串口適配器就是在這道鴻溝上搭一座橋讓現(xiàn)代電腦能和這些老設(shè)備對(duì)話。這里要澄清一個(gè)常見(jiàn)誤區(qū)USB轉(zhuǎn)串口線并不是簡(jiǎn)單地把USB信號(hào)轉(zhuǎn)換成串口信號(hào)里面有一顆獨(dú)立的串口芯片它在電腦端被識(shí)別成一個(gè)“虛擬串口”對(duì)電腦來(lái)說(shuō)就像主板上原生帶了一個(gè)COM口一樣。正因?yàn)槎嗔诉@顆芯片驅(qū)動(dòng)程序就成了繞不開(kāi)的環(huán)節(jié)——Windows不內(nèi)置所有廠商的驅(qū)動(dòng)插上沒(méi)反應(yīng)太正常了。1.2 RS232、RS422、RS485三種電氣標(biāo)準(zhǔn)到底差在哪力特Z-TEK很多型號(hào)是“三合一”的一個(gè)USB口轉(zhuǎn)出三種串口標(biāo)準(zhǔn)這確實(shí)很方便但也讓不少新手一頭霧水。這三種標(biāo)準(zhǔn)本質(zhì)上是串口通信的電氣層協(xié)議區(qū)別在于電平定義、傳輸距離和能不能掛多個(gè)設(shè)備標(biāo)準(zhǔn)電氣特點(diǎn)典型距離典型應(yīng)用RS232單端信號(hào)±12V左右電平15米以內(nèi)短距離一對(duì)一通訊最古老最常見(jiàn)RS422差分信號(hào)4線制一發(fā)多收1200米工業(yè)設(shè)備、儀表遠(yuǎn)距離點(diǎn)對(duì)點(diǎn)RS485差分信號(hào)2線制可掛32個(gè)節(jié)點(diǎn)1200米MODBUS總線、PLC聯(lián)網(wǎng)、傳感器組網(wǎng)RS232是“一個(gè)人說(shuō)話一個(gè)人聽(tīng)”而且是拿電壓高低直接說(shuō)話抗干擾能力差RS422和RS485都用差分信號(hào)相當(dāng)于兩個(gè)人用“兩根線比較電壓差”的方式說(shuō)話抗干擾能力強(qiáng)很多。RS485還支持在多臺(tái)設(shè)備之間組網(wǎng)這也是工業(yè)現(xiàn)場(chǎng)最常選它的原因。如果你的Z-TEK線是帶撥碼開(kāi)關(guān)或者跳線的三合一型號(hào)使用前務(wù)必看清楚說(shuō)明撥到RS232位置時(shí)輸出的是標(biāo)準(zhǔn)的DB9公頭或母頭撥到RS485時(shí)通常要接A、B兩根線RS422則是四根線。撥錯(cuò)位置不僅通訊不上嚴(yán)重時(shí)還可能燒線路。常見(jiàn)的Z-TEK型號(hào)里USB-RS232線是單芯片方案的USB-RS422/485線往往是原生三合一設(shè)計(jì)選購(gòu)前先確認(rèn)自己設(shè)備的接口類型別買錯(cuò)了。2. 驅(qū)動(dòng)安裝前的準(zhǔn)備工作先搞清楚你買的是哪顆芯片下載驅(qū)動(dòng)之前最忌諱的事情就是去搜索引擎隨便下一個(gè)“萬(wàn)能驅(qū)動(dòng)包”。USB轉(zhuǎn)串口之所以麻煩核心在于不同的轉(zhuǎn)換線用了不同廠商的芯片而每種芯片的驅(qū)動(dòng)程序完全不一樣。所謂“力特驅(qū)動(dòng)”真正在干活的是芯片原廠提供的驅(qū)動(dòng)。2.1 為什么“力特驅(qū)動(dòng)”不是“力特”做的Z-TEK本質(zhì)上是一個(gè)品牌商它不生產(chǎn)芯片而是采購(gòu)各家串口芯片來(lái)組裝成品。因此你的線可能用的是FTDI的FT232、FT231X也可能是WCH沁恒的CH340或者是Silicon Labs的CP2102甚至是ProLific的PL2303。不同批次的貨、不同型號(hào)的線內(nèi)部芯片可能完全不同。想要判斷自己手里是什么芯片辦法很簡(jiǎn)單把線插到電腦USB口然后打開(kāi)Windows的設(shè)備管理器找到帶黃色感嘆號(hào)的那個(gè)設(shè)備右鍵看屬性里的“詳細(xì)信息”“硬件ID”。里面會(huì)有一串VID和PID比如VID_0403對(duì)應(yīng)FTDIVID_1A86對(duì)應(yīng)WCH沁恒VID_10C4對(duì)應(yīng)Silicon Labs。看到VID再去下對(duì)應(yīng)驅(qū)動(dòng)基本不會(huì)錯(cuò)。如果設(shè)備管理器里連未知設(shè)備都沒(méi)有大概率是線本身供電或者接觸問(wèn)題這個(gè)后面排查章節(jié)細(xì)說(shuō)。2.2 從哪下載驅(qū)動(dòng)才算“免費(fèi)且可靠”標(biāo)題里寫著“免費(fèi)下載”這里必須提醒一下官方驅(qū)動(dòng)本來(lái)就是免費(fèi)提供的根本不需要花一分錢。但網(wǎng)上很多下載站動(dòng)輒要求關(guān)注公眾號(hào)、付費(fèi)解壓、下載全家桶恰恰是利用了信息差。幾個(gè)可靠渠道按優(yōu)先級(jí)排序芯片原廠官網(wǎng)FTDI官網(wǎng)的VCP驅(qū)動(dòng)區(qū)、WCH官網(wǎng)的CH340驅(qū)動(dòng)、Silicon Labs官網(wǎng)的CP210x驅(qū)動(dòng)都是最權(quán)威的支持Windows、Linux、macOS全平臺(tái)力特Z-TEK官網(wǎng)部分型號(hào)提供驅(qū)動(dòng)下載頁(yè)面通常直接鏈接到芯片原廠微軟更新目錄Windows 10/11聯(lián)網(wǎng)更新驅(qū)動(dòng)失敗時(shí)可以去微軟更新目錄網(wǎng)站搜索硬件ID第三方工具驅(qū)動(dòng)總裁、360驅(qū)動(dòng)大師這類工具可以一鍵匹配但安裝時(shí)注意去掉捆綁軟件勾選我自己處理過(guò)幾十根不同型號(hào)的Z-TEK線經(jīng)驗(yàn)是優(yōu)先查硬件ID找原廠驅(qū)動(dòng)比在雜七雜八的下載站碰運(yùn)氣靠譜得多。曾經(jīng)幫同事處理過(guò)一根插上半天沒(méi)反應(yīng)的線最后發(fā)現(xiàn)是之前裝的“驅(qū)動(dòng)精靈”把系統(tǒng)里的驅(qū)動(dòng)搞出沖突了卸載干凈重裝原廠驅(qū)動(dòng)才恢復(fù)正常。2.3 芯片識(shí)別與驅(qū)動(dòng)對(duì)應(yīng)關(guān)系速查表這張表是實(shí)戰(zhàn)中反復(fù)驗(yàn)證過(guò)的建議截圖保存芯片廠商常見(jiàn)芯片型號(hào)VID十六進(jìn)制Windows驅(qū)動(dòng)常見(jiàn)名稱FTDIFT232R、FT231X、FT22320403FTDI USB Serial ConverterWCH沁恒CH340、CH3411A86CH340/CH341 USB serialSilicon LabsCP2102、CP210510C4Silicon Labs CP210x USB to UART BridgeProLificPL2303067BProlific USB-to-Serial Comm Port注意PL2303這里要特別小心。市面上有很多PL2303的盜版芯片Windows新版本系統(tǒng)如果檢測(cè)到非正版芯片會(huì)直接拒絕加載驅(qū)動(dòng)并把設(shè)備標(biāo)記為“無(wú)法驗(yàn)證的硬件”。遇到這種情況最省事的辦法是換一根用FTDI或CH340芯片的線別在老驅(qū)動(dòng)上死磕。3. 一步步把驅(qū)動(dòng)裝上Windows/Linux/虛擬機(jī)全流程鋪墊了這么多現(xiàn)在進(jìn)入正題。下面這幾種場(chǎng)景是日常使用中最常見(jiàn)的我按操作系統(tǒng)拆開(kāi)來(lái)講每部分都給出可以直接照做的步驟。3.1 Windows 10/11下的標(biāo)準(zhǔn)安裝流程Windows 10/11系統(tǒng)自帶了一部分通用串口驅(qū)動(dòng)很多情況下插上FTDI芯片的線會(huì)直接識(shí)別成COM口但這不代表不需要手動(dòng)裝驅(qū)動(dòng)。標(biāo)準(zhǔn)流程是這樣先把USB轉(zhuǎn)串口線插到電腦注意插到機(jī)箱后置USB口前置面板或擴(kuò)展塢供電不穩(wěn)可能導(dǎo)致識(shí)別失敗打開(kāi)設(shè)備管理器WinX鍵選擇設(shè)備管理器找到帶感嘆號(hào)的設(shè)備通常顯示為“USB Serial”或“未知設(shè)備”右鍵選擇“更新驅(qū)動(dòng)程序”“瀏覽我的電腦以查找驅(qū)動(dòng)程序”“讓我從計(jì)算機(jī)上的可用驅(qū)動(dòng)程序列表中選取”選擇“端口COM和LPT”再?gòu)膹S商列表里選擇對(duì)應(yīng)芯片的驅(qū)動(dòng)安裝完成后設(shè)備管理器里會(huì)出現(xiàn)“USB Serial Port (COM3)”這樣的條目后面的數(shù)字就是端口號(hào)這個(gè)過(guò)程中最容易被忽略的是端口號(hào)。Windows分配給串口的COM號(hào)是從COM1開(kāi)始的之前安裝過(guò)其他USB串口設(shè)備新設(shè)備會(huì)被分配一個(gè)很大的COM號(hào)比如COM11、COM12。很多上位機(jī)軟件默認(rèn)只掃描COM1到COM10如果打開(kāi)軟件找不到串口可以先到設(shè)備管理器里右鍵修改端口號(hào)把它改成COM3或COM4這樣的小數(shù)字。還有一個(gè)驅(qū)動(dòng)簽名問(wèn)題。在Windows 10/11上如果驅(qū)動(dòng)沒(méi)有數(shù)字簽名系統(tǒng)會(huì)拒絕安裝。FTDI、WCH、Silicon Labs這些大廠驅(qū)動(dòng)都有簽名正常沒(méi)問(wèn)題。但如果你用的是某個(gè)冷門芯片方案安裝時(shí)報(bào)“無(wú)法驗(yàn)證發(fā)布者”可以臨時(shí)用高級(jí)啟動(dòng)菜單里的“禁用驅(qū)動(dòng)程序強(qiáng)制簽名”模式不過(guò)這只是權(quán)宜之計(jì)長(zhǎng)期看還是建議換主流芯片的線。3.2 驅(qū)動(dòng)裝好之后為什么還要配“波特率”驅(qū)動(dòng)裝好只是第一步串口通訊還要雙方約定“說(shuō)話速度”這個(gè)速度參數(shù)就是波特率。打開(kāi)設(shè)備管理器在對(duì)應(yīng)COM口上右鍵屬性切到“端口設(shè)置”頁(yè)可以看到每秒位數(shù)波特率常見(jiàn)9600、115200、57600數(shù)據(jù)位通常為8停止位通常為1校驗(yàn)位通常為無(wú)這些參數(shù)必須和目標(biāo)設(shè)備完全一致差一個(gè)比特都對(duì)不上。舉個(gè)實(shí)際例子調(diào)試STM32單片機(jī)時(shí)串口輸出默認(rèn)經(jīng)常是115200-8-N-1而調(diào)試?yán)吓fPLC往往是9600-8-E-1。如果上位機(jī)軟件里怎么都收不到數(shù)據(jù)先檢查四要素不要一上來(lái)就懷疑線壞了。很多串口調(diào)試助手比如XCOM、SSCOM打開(kāi)串口時(shí)也會(huì)要求設(shè)置這些參數(shù)。這里有個(gè)小竅門如果不知道目標(biāo)設(shè)備的參數(shù)可以用“自動(dòng)檢測(cè)波特率”功能部分調(diào)試助手支持掃描常見(jiàn)波特率組合掃一遍通常能找到能出數(shù)據(jù)的那個(gè)。3.3 Linux下的安裝不需要裝驅(qū)動(dòng)但需要權(quán)限Linux的串口驅(qū)動(dòng)其實(shí)都編譯進(jìn)了內(nèi)核大多數(shù)USB轉(zhuǎn)串口芯片插上就能識(shí)別不需要單獨(dú)裝驅(qū)動(dòng)。以Ubuntu/Debian為例插上FTDI芯片的線之后用dmesg | tail能看到類似usbserial、ftdi_sio這樣的內(nèi)核日志設(shè)備節(jié)點(diǎn)通常是/dev/ttyUSB0。CH340芯片則對(duì)應(yīng)/dev/ttyUSB0或/dev/ttyCH341USB0。真正坑人的是權(quán)限問(wèn)題。Linux下非root用戶默認(rèn)沒(méi)有訪問(wèn)串口設(shè)備的權(quán)限你直接用Python的pyserial打開(kāi)設(shè)備會(huì)報(bào)PermissionError。解決辦法是把當(dāng)前用戶加入dialout組sudo usermod -a -G dialout $USER執(zhí)行完后重新登錄生效。很多人試了好幾個(gè)終端工具都打不開(kāi)串口根因就是少了這一步。Linux下還有一個(gè)需要注意的點(diǎn)如果你同時(shí)插入了多根USB轉(zhuǎn)串口線設(shè)備節(jié)點(diǎn)順序可能會(huì)變來(lái)變?nèi)ヒ驗(yàn)?dev/ttyUSB0這種名字是按識(shí)別順序分配的。長(zhǎng)期做設(shè)備調(diào)試的話建議用udev規(guī)則綁定設(shè)備的ID_SERIAL讓同一根線固定成同一個(gè)設(shè)備名不然腳本里寫死/dev/ttyUSB0重啟后設(shè)備名變了腳本就跑不起來(lái)了。3.4 虛擬機(jī)里怎么用USB轉(zhuǎn)串口很多工控工程師習(xí)慣在Windows宿主機(jī)上裝一個(gè)虛擬機(jī)跑Linux或者反過(guò)來(lái)。虛擬機(jī)里用USB轉(zhuǎn)串口關(guān)鍵要在虛擬機(jī)軟件里做USB設(shè)備直通。以VirtualBox為例步驟是先在宿主機(jī)的設(shè)備管理器里確認(rèn)線已經(jīng)被正常識(shí)別然后VirtualBox里選中目標(biāo)虛擬機(jī)“設(shè)置”“USB設(shè)備”添加一個(gè)USB過(guò)濾器將Z-TEK線的VID/PID填入過(guò)濾器。這樣虛擬機(jī)啟動(dòng)后USB設(shè)備會(huì)自動(dòng)被虛擬機(jī)接管虛擬機(jī)里才能看到對(duì)應(yīng)的串口。注意過(guò)濾器只需要添加一次之后再插線都會(huì)自動(dòng)直通。VMware Workstation同理在虛擬機(jī)設(shè)置里選擇USB控制器把“USB兼容性”設(shè)為USB 2.0或USB 3.0然后把設(shè)備連接到虛擬機(jī)。這里有個(gè)容易踩的坑宿主機(jī)和虛擬機(jī)同時(shí)占用串口設(shè)備會(huì)導(dǎo)致兩邊都打不開(kāi)串口。所以在虛擬機(jī)里使用前要確保宿主機(jī)上沒(méi)有運(yùn)行占用該COM口的軟件否則設(shè)備權(quán)限沖突兩邊都報(bào)錯(cuò)。4. 實(shí)操中的翻車現(xiàn)場(chǎng)常見(jiàn)問(wèn)題排查實(shí)錄這部分是我最想寫的因?yàn)閷?shí)際用過(guò)USB轉(zhuǎn)串口的人幾乎沒(méi)人能一次順利搞定。下面這些問(wèn)題是這幾年在實(shí)驗(yàn)室、工控現(xiàn)場(chǎng)反復(fù)遇到的按出現(xiàn)頻率排序每條都附帶我實(shí)測(cè)有效的解決辦法。4.1 插上電腦根本沒(méi)有反應(yīng)、感嘆號(hào)怎么處理先說(shuō)插上沒(méi)任何反應(yīng)。第一步換USB口、換數(shù)據(jù)線、換電腦排除供電和線材問(wèn)題。USB轉(zhuǎn)串口線本身不復(fù)雜但劣質(zhì)線材在供電不足時(shí)確實(shí)會(huì)出現(xiàn)“插上了一點(diǎn)動(dòng)靜沒(méi)有”的情況。如果換了幾個(gè)口都一樣那大概率是線本身壞了。如果設(shè)備管理器里有設(shè)備但帶黃色感嘆號(hào)優(yōu)先檢查是否裝了正確的驅(qū)動(dòng)。用前面說(shuō)的方法查VID去芯片原廠下驅(qū)動(dòng)。還有一種情況同一臺(tái)電腦之前裝過(guò)這個(gè)芯片的舊版驅(qū)動(dòng)Windows沒(méi)能成功覆蓋新驅(qū)動(dòng)導(dǎo)致新設(shè)備一直停留在“錯(cuò)誤代碼10”狀態(tài)。解決辦法是到設(shè)備管理器里右鍵卸載設(shè)備勾選“刪除此設(shè)備的驅(qū)動(dòng)程序軟件”拔掉線重插讓系統(tǒng)重新識(shí)別一遍。4.2 驅(qū)動(dòng)裝好了但串口打不開(kāi)這是繼驅(qū)動(dòng)裝不上之后最常見(jiàn)的問(wèn)題。設(shè)備管理器里明明看到了COM口但串口調(diào)試助手一點(diǎn)“打開(kāi)串口”軟件直接報(bào)“打開(kāi)失敗”或“串口被占用”。排查思路按順序來(lái)確認(rèn)沒(méi)有其他軟件正在占用這個(gè)COM口比如上一次打開(kāi)串口的調(diào)試助手沒(méi)有正常退出如果用了虛擬串口軟件比如VSPD、卓嵐ZLVirCom檢查是不是把物理COM口映射錯(cuò)了在設(shè)備管理器里把端口號(hào)改一下改到?jīng)]有沖突的小數(shù)字比如COM3如果還是打不開(kāi)用系統(tǒng)自帶的“超級(jí)終端”或PowerShell嘗試打開(kāi)串口$port New-Object System.IO.Ports.SerialPort COM3, 115200 $port.Open() $port.WriteLine(AT) $port.Close()PowerShell能打開(kāi)而調(diào)試助手打不開(kāi)說(shuō)明問(wèn)題出在調(diào)試助手軟件本身?yè)Q一個(gè)調(diào)試助手試試。我長(zhǎng)期備著兩三個(gè)不同的串口調(diào)試工具XCOM界面友好、SSCOM支持腳本發(fā)送還有開(kāi)源的SerialPlot能直接畫波形圖各有各的用途。4.3 通訊數(shù)據(jù)亂碼、收發(fā)不穩(wěn)定打開(kāi)串口能收到數(shù)據(jù)但內(nèi)容是亂碼或者偶爾丟數(shù)據(jù)這個(gè)問(wèn)題十有八九出在三處波特率不對(duì)、地線沒(méi)共地、線材質(zhì)量差。波特率不對(duì)是最大概率問(wèn)題。發(fā)送端設(shè)115200接收端設(shè)9600收到的必然是一堆亂碼。先兩邊統(tǒng)一波特率再不行就用前面說(shuō)的自動(dòng)波特率掃描功能。地線問(wèn)題在工業(yè)現(xiàn)場(chǎng)尤其明顯。RS232雖然只連TXD、RXD、GND三根線但很多人會(huì)偷懶只接TXD和RXD不接GND。沒(méi)有共同的地作為參考電位兩邊的電平基準(zhǔn)不同收發(fā)自然不穩(wěn)定。這種情況表現(xiàn)為短距離通訊正常把線加長(zhǎng)一點(diǎn)就開(kāi)始亂碼。加上GND線通常就好了。如果都排查完還是亂碼就要懷疑線材和電路問(wèn)題了。好的USB轉(zhuǎn)串口線會(huì)做屏蔽層和磁珠濾波劣質(zhì)線在電機(jī)的電磁干擾下完全沒(méi)法用。工控環(huán)境盡量買帶磁環(huán)的線別省這點(diǎn)錢。4.4 虛擬串口軟件沒(méi)有真機(jī)也能調(diào)試有時(shí)候手上沒(méi)有真機(jī)但上位機(jī)軟件又必須連串口測(cè)試這種場(chǎng)景就要用虛擬串口軟件。常見(jiàn)的有Virtual Serial Port DriverVSPD和國(guó)內(nèi)的開(kāi)源方案com0com通過(guò)它們可以創(chuàng)建一對(duì)虛擬COM口比如COM5和COM6它們之間數(shù)據(jù)互通。這樣就能在一個(gè)串口調(diào)試助手里發(fā)數(shù)據(jù)另一個(gè)接收端模擬上位機(jī)/設(shè)備端來(lái)處理。工控場(chǎng)景還常需要連接網(wǎng)絡(luò)上的串口服務(wù)器比如上海卓嵐的設(shè)備這時(shí)會(huì)用到ZLVirCom這類工具它會(huì)把網(wǎng)絡(luò)上的串口設(shè)備映射成本地COM口原理和虛擬串口類似。用這類工具時(shí)特別要注意映射成功后不要在設(shè)備管理器里修改映射端口的屬性否則可能導(dǎo)致虛擬串口失效。5. 應(yīng)用場(chǎng)景從單片機(jī)調(diào)試到工控現(xiàn)場(chǎng)驅(qū)動(dòng)裝好了問(wèn)題排查清楚后USB轉(zhuǎn)串口線才能真正成為手頭順手的工具。這里介紹幾個(gè)我實(shí)際接觸過(guò)的典型應(yīng)用場(chǎng)景給大家一個(gè)參考。5.1 單片機(jī)與嵌入式開(kāi)發(fā)STM32、Arduino、ESP32、51單片機(jī)這些主流的開(kāi)發(fā)板板上基本都集成了USB轉(zhuǎn)串口芯片比如STM32最小系統(tǒng)板用CH340Arduino Uno用ATmega16U2方案。但當(dāng)你用獨(dú)立芯片、裸板或不帶USB轉(zhuǎn)串口模塊的開(kāi)發(fā)板時(shí)外接一根USB轉(zhuǎn)RS232線就很關(guān)鍵了。調(diào)試時(shí)用串口輸出printf信息是嵌入式開(kāi)發(fā)的標(biāo)配操作。例如STM32的標(biāo)準(zhǔn)庫(kù)或HAL庫(kù)開(kāi)發(fā)中通常初始化UART1后重定向printf到串口再用Z-TEK線連接板子的TXD和RXD打開(kāi)串口調(diào)試助手就能實(shí)時(shí)看到調(diào)試日志。千萬(wàn)別忘了共地——板上GND必須和USB轉(zhuǎn)串口線的GND連在一起這是新手最容易犯的錯(cuò)誤。5.2 工控與PLC調(diào)試工業(yè)現(xiàn)場(chǎng)PLC調(diào)試經(jīng)常要用到RS485因?yàn)镽S485支持多點(diǎn)組網(wǎng)一條總線可以掛多個(gè)設(shè)備MODBUS RTU就是最典型的RS485應(yīng)用。比如用Modbus RTU讀取電表數(shù)據(jù)、控制變頻器都需要從USB口轉(zhuǎn)出RS485連接設(shè)備的A/B-端。用RS485調(diào)試有個(gè)關(guān)鍵知識(shí)點(diǎn)RS485是半雙工發(fā)送和接收共用一對(duì)線所以不能一邊發(fā)數(shù)據(jù)一邊收數(shù)據(jù)。實(shí)際測(cè)試時(shí)在上位機(jī)軟件里要設(shè)置好發(fā)送間隔不要連續(xù)快速輪詢否則可能出現(xiàn)數(shù)據(jù)沖突。很多控制器的MAX485芯片需要方向切換信號(hào)如果你的USB轉(zhuǎn)RS485線自帶自動(dòng)換向電路可以直接用如果是老式手動(dòng)換向設(shè)備需要在發(fā)送和接收之間切換控制腳稍微麻煩一些。5.3 串口屏、傳感器與Python串口操作串口屏在HMI行業(yè)非常普遍通過(guò)串口發(fā)指令控制屏幕顯示內(nèi)容調(diào)試手段就是USB轉(zhuǎn)串口。還有溫濕度傳感器、CO2傳感器、光照傳感器不少是UART接口輸出數(shù)據(jù)接上USB轉(zhuǎn)RS232/485線后既可以用上位機(jī)查看原始報(bào)文也能用腳本采集記錄。用Python做串口數(shù)據(jù)采集時(shí)推薦安裝pyserial庫(kù)pip install pyserial然后就可以寫腳本收發(fā)數(shù)據(jù)了下面是一個(gè)簡(jiǎn)單的讀取并打印數(shù)據(jù)的示例import serial ser serial.Serial(/dev/ttyUSB0, 9600, timeout1) ser.write(b\x01\x03\x00\x00\x00\x01) data ser.readline() ser.close() print(data)Python操作串口的場(chǎng)景很靈活比如配合SQLite做溫濕度歷史記錄或者用matplotlib實(shí)時(shí)繪制傳感器曲線。也有人在嵌入式開(kāi)發(fā)里讓Python通過(guò)USB口模擬SPI時(shí)序去操作外部芯片比如WS2812燈帶核心思路就是通過(guò)串口發(fā)指令給一個(gè)MCU再由MCU復(fù)用引腳模擬成SPI輸出這種方式比純靠上位機(jī)硬剛協(xié)議要穩(wěn)定得多。寫在最后關(guān)于這根線我的一些真實(shí)體會(huì)用USB轉(zhuǎn)串口線這些年最大的感受是大多數(shù)“驅(qū)動(dòng)裝不上”其實(shí)不是驅(qū)動(dòng)的問(wèn)題而是使用者在一開(kāi)始就選錯(cuò)了線、下錯(cuò)了驅(qū)動(dòng)。給大家?guī)讉€(gè)壓箱底的小建議一是預(yù)算允許的情況下優(yōu)先選FTDI芯片的線穩(wěn)定性和兼容性確實(shí)是最好的CH340性價(jià)比高日常調(diào)試完全夠用但追求長(zhǎng)期可靠還是FTDI省心。二是每個(gè)型號(hào)的線都留好一張紙條寫清楚它里面是哪個(gè)芯片的方案因?yàn)橥黄放撇煌涡酒赡芡耆煌苊庀麓斡脮r(shí)又從頭排查。三是工控現(xiàn)場(chǎng)一定多備一根線串口線這東西說(shuō)壞就壞而且壞得毫無(wú)征兆多一根線能省下現(xiàn)場(chǎng)調(diào)試時(shí)最寶貴的時(shí)間。最后再分享一個(gè)小技巧在Windows上可以用mode COM3命令快速查看當(dāng)前串口的參數(shù)配置確認(rèn)波特率、數(shù)據(jù)位、停止位、校驗(yàn)位是不是和你目標(biāo)設(shè)備一致。對(duì)于經(jīng)常需要現(xiàn)場(chǎng)快速驗(yàn)證設(shè)備連通性的場(chǎng)景這個(gè)命令比打開(kāi)設(shè)備管理器逐項(xiàng)點(diǎn)要高效得多。工具始終是工具真正值錢的是你對(duì)待問(wèn)題的思路——先分清硬件、驅(qū)動(dòng)、參數(shù)、軟件四個(gè)層面再逐個(gè)擊破串口問(wèn)題基本上沒(méi)有解決不了的。