新聞中心

EEPW首頁 > 網(wǎng)絡(luò)與存儲 > 設(shè)計應(yīng)用 > 如何排查因波特率漂移導(dǎo)致的通訊異常問題

如何排查因波特率漂移導(dǎo)致的通訊異常問題

作者:ZLG致遠電子 時間:2018-12-21 來源:電子產(chǎn)品世界 收藏

  示波器的協(xié)議解碼功能大家都不生疏,你是否有過波形看起來正常,協(xié)議參數(shù)、解碼設(shè)置都正確,卻無法正常解碼的經(jīng)歷呢?本文以協(xié)議為例,分享由于漂移導(dǎo)致通信異常的故障排查過程。

本文引用地址:http://2s4d.com/article/201812/395913.htm

  什么是漂移呢?可以理解為被測部件晶振有偏差,導(dǎo)致實際和正常的波特率不一致。為什么波特率漂移會導(dǎo)致通信異常呢?本文從波形出發(fā),帶你自檢解碼結(jié)果。

  一、波特率漂移導(dǎo)致通信異常的故障排查

  引出這樣一個真實的例子,PC端發(fā)送串口數(shù)據(jù)為“0xEE 0x61 0x32 0xFF 0xFC 0xFF 0xFF”,示波器解碼結(jié)果為“0xEE 0x98 0xF6 0xFC 0xFF”初步判定通信故障。但協(xié)議參數(shù)設(shè)置和解碼設(shè)置都正確,為什么會出現(xiàn)收發(fā)不一致的現(xiàn)象呢?下文將解碼時協(xié)議參數(shù)設(shè)置中的波特率都設(shè)置為9600 bps,實際為9600 bps,10126 bps的波形圖解碼結(jié)果對比(如圖1所示)分析為例,分享波特率漂移后導(dǎo)致波形有偏差,從而出現(xiàn)通信異常的原因排查過程。

  

  圖1 同一解碼波特率下的不同波形解碼結(jié)果圖

  首先講講的解碼原理。當示波器解碼信號時,將空閑電平之后的下降沿作為開始位,然后從波形中等間隔采樣,以等間隔時間段內(nèi)的采樣點中的多數(shù)狀態(tài)作為該位的解碼數(shù)值。不同波特率的波形,最小數(shù)據(jù)位寬不一致,時間T=1/采樣率,實際采樣率大的波形對應(yīng)的時間就小,所以從圖1中可看出波特率為10126bps的波形像往左偏移了。當解碼時設(shè)置的波特率同為9600時,采樣點的位置是根據(jù)9600的波特率來確定的,當實際采樣率和9600bps有偏差時,誤差會逐漸累積,從而導(dǎo)致解碼有偏差。設(shè)置的數(shù)據(jù)位寬越大,越容易疊加誤差。

  二、自檢波特率方法

  從波形出發(fā),根據(jù)波形最小位寬估算波特率,此法適用于波特率偏差較大或不確定波特率該設(shè)置多少時。這是工程師們較習慣的自檢方法。估算波特率需要看波形中的最小位寬,從來圖 2看,時基檔位為100us,最小位寬剛好占一格,則最小位寬為100us左右,換算之后等于10000bps。想要得到更精確的波特率數(shù)值,可以使用示波器的測量功能。打開示波器面板中的【measure】,選擇波特率測量項,觀察波特率測量結(jié)果對比,如下圖 2紅框內(nèi)的測量結(jié)果。

  開頭中引出的例子,正是因為波特率產(chǎn)生了漂移,實際為10000 bps,而解碼時按照正常部件的9600bps來設(shè)置,這么一算,波特率誤差大于4%,因此會導(dǎo)致解碼結(jié)果不正確。換個晶振再解碼,通訊果然正常了。

  

  圖 2 從波形最小位寬估算波特率圖

  總結(jié)

  在解碼中波特率雖然只是一個參數(shù),但因其漂移產(chǎn)生的影響不容忽視,它可能就是導(dǎo)致通信故障的因素。解碼前注意檢驗波特率,這么一個小細節(jié)也許可以省去日后排查故障的時間。從波形出發(fā),重新審視示波器價值,它用來觀察波形和分析數(shù)據(jù)就是為了檢測被測部件是否正常的。



關(guān)鍵詞: 波特率 UART

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉