新聞中心
PRESS CENTER串口UART作為嵌入式應(yīng)用和通訊領(lǐng)域中最常用的接口之一,接口協(xié)議雖然簡單,但在實(shí)際應(yīng)用中不同設(shè)備之間的通訊也會(huì)存在各種小問題,下面對(duì)使用中各種常見的問題做下總結(jié)和梳理,可作為調(diào)試參考。
串口通信亂碼
串口通訊亂碼通常是指接收方接收到的數(shù)據(jù)不符合預(yù)期,出現(xiàn)此情況時(shí)需要考慮的因素通常包含以下幾個(gè)方面:
雙方設(shè)定的串口參數(shù)是否匹配
需檢查設(shè)置的:串口波特率、串口數(shù)據(jù)格式等參數(shù)。
串口通訊電壓不匹配
不同的串口設(shè)備接收可正常進(jìn)行解碼的高低電平門限不同,如同樣是3.3V串口通訊,A設(shè)備低電平門限1.5V,B設(shè)備低電平門限1V。當(dāng)實(shí)際串口電壓低電平只有1.5V時(shí),B設(shè)備無法正常接收數(shù)據(jù)。又如:A設(shè)備為5V串口,B設(shè)備為3.3V串口,同樣有電壓不匹配的問題。
串口通訊實(shí)際工作波特率誤差較大
即:串口工作實(shí)際波特率和理論值偏差較大,因一些MCU和串口設(shè)備所用時(shí)鐘為了兼顧其他資源和應(yīng)用需要,實(shí)際工作的串口速率和設(shè)定會(huì)有偏差。比如:標(biāo)稱為9600bps時(shí),實(shí)際工作在了10000bps(誤差超過4%),此時(shí)可能已經(jīng)超出接收方的設(shè)計(jì)標(biāo)準(zhǔn)。
串口通訊信號(hào)質(zhì)量差
如通訊時(shí)信號(hào)上升下降抖動(dòng)嚴(yán)重,信號(hào)有過沖或者變化比較遲緩,此時(shí)檢查硬件上共地是否良好,以及線路上有無串接/并聯(lián)其他器件導(dǎo)致。
數(shù)據(jù)格式顯示問題
通常使用十六進(jìn)制或ASCII碼格式居多,使用時(shí)需要區(qū)分。
串口無法發(fā)送
串口無法發(fā)送通常是指與此串口的TXD連接的對(duì)端設(shè)備RXD通道接收不到任何數(shù)據(jù),總結(jié)如下:
使用儀器對(duì)TXD通道進(jìn)行實(shí)際測(cè)量
觀察硬件波形,確定信號(hào)是否有輸出以及是否正常。(串口電壓、串口信號(hào)上升下降時(shí)間)
短接設(shè)備的TXD和RXD通道回環(huán)測(cè)試
看自收發(fā)是否可以成功。排除是自身設(shè)備異常還是對(duì)端異常。
確定應(yīng)用軟件是否打開串口硬件流控
如當(dāng)啟用RTS/CTS硬件流控后但實(shí)際該引腳并沒有連接或連接但不生效時(shí),按照協(xié)議規(guī)定,CTS輸入無效則發(fā)送方暫停發(fā)送數(shù)據(jù)。
MCU軟件編碼問題或計(jì)算機(jī)端軟件工作異常
串口無法接收
當(dāng)串口接收不到任何數(shù)據(jù)的原因通常如下:
對(duì)端串口實(shí)際未能成功發(fā)送數(shù)據(jù)
串口發(fā)送有效電壓不滿足芯片接收解碼要求
MCU軟件編碼問題或計(jì)算機(jī)端軟件工作異常
對(duì)于以上的常見串口調(diào)試問題,有以下幾個(gè)方法和技巧可供參考使用:
使用硬件儀器
善于使用示波器等硬件采集或分析工具查找問題,用此方法可以確定線路上信號(hào)的串口電壓、串口數(shù)據(jù)格式、串口通信波特率等參數(shù)。
串口Loopback檢測(cè)
當(dāng)手頭沒有硬件儀器時(shí),將設(shè)備自身的TXD和RXD短接起來進(jìn)行自收發(fā)測(cè)試也是一個(gè)不錯(cuò)的選擇,此方式可以簡單確認(rèn)硬件通路和整個(gè)邏輯是否是打通的。但缺點(diǎn)是定位問題不夠精準(zhǔn)。
更換串口調(diào)試軟件
計(jì)算機(jī)端串口軟件種類較多,不排除一些設(shè)備或驅(qū)動(dòng)軟件沒法成功適配所有的串口調(diào)試軟件,此時(shí)可嘗試多使用幾款不同的軟件對(duì)比測(cè)試。
當(dāng)串口通信遇到問題的解決思路:
1.確認(rèn)信號(hào)類型,是TTL,RS485,RS232,不同數(shù)據(jù)類型的信號(hào)無法正常通信。
2.確認(rèn)串口的軟件設(shè)置,波特率串口號(hào)等信號(hào)格式。
3.確認(rèn)已經(jīng)正確安裝驅(qū)動(dòng)。
4.確認(rèn)硬件接線是否正確,對(duì)應(yīng)的信號(hào)接口接到相應(yīng)的接口,針對(duì)TTL和485,不確定信號(hào)定義的時(shí)候可以嘗試倆根線相互調(diào)換。
5.確認(rèn)設(shè)備正常供電。
6.使用示波器或者其他調(diào)試工具檢查通信波形是否正確,5V系統(tǒng)和3.3V系統(tǒng)需要在對(duì)應(yīng)的信號(hào)線上加上上拉電阻和二極管。
7.確認(rèn)硬件無問題的情況下,查找軟件問題。
軟件問題與硬件問題的大致區(qū)分方法:
硬件問題基本每次都能復(fù)現(xiàn),而軟件問題可能時(shí)有時(shí)無。