示波器的協議解碼功能大家都不生疏,你是否有過波形看起來正常,協議參數、解碼設置都正確,卻無法正常解碼的經歷呢?本文以UART協議為例,分享由于波特率漂移導致通信異常的故障排查過程。
什么是波特率漂移呢?可以理解為被測部件晶振有偏差,導致實際波特率和正常的波特率不一致。為什么波特率漂移會導致通信異常呢?本文從波形出發,帶你自檢解碼結果。
一、波特率漂移導致通信異常的故障排查
引出這樣一個真實的例子,PC端發送串口數據為“0EE 061 032 0FF 0FC 0FF 0FF”,示波器解碼結果為“0EE 098 0F6 0FC 0FF”初步判定通信故障。但協議參數設置和解碼設置都正確,為什么會出現收發不一致的現象呢?下文將解碼時協議參數設置中的波特率都設置為9600 bps,實際為9600 bps,10126 bps的波形圖解碼結果對比(如圖1所示)分析為例,分享波特率漂移后導致波形有偏差,從而出現通信異常的原因排查過程。
圖1 同一解碼波特率下的不同波形解碼結果圖
首先講講UART的解碼原理。當示波器解碼UART信號時,將空閑電平之后的下降沿作為開始位,然后從波形中等間隔采樣,以等間隔時間段內的采樣點中的多數狀態作為該位的解碼數值。不同波特率的波形,最小數據位寬不一致,時間T=1/采樣率,實際采樣率大的波形對應的時間就小,所以從圖1中可看出波特率為10126bps的波形像往左偏移了。當解碼時設置的波特率同為9600時,采樣點的位置是根據9600的波特率來確定的,當實際采樣率和9600bps有偏差時,誤差會逐漸累積,從而導致解碼有偏差。設置的數據位寬越大,越容易疊加誤差。
二、自檢波特率方法
從波形出發,根據波形最小位寬估算波特率,此法適用于波特率偏差較大或不確定波特率該設置多少時。這是工程師們較習慣的自檢方法。估算波特率需要看波形中的最小位寬,從來圖 2看,時基檔位為100us,最小位寬剛好占一格,則最小位寬為100us左右,換算之后等于10000bps。想要得到更精確的波特率數值,可以使用示波器的測量功能。打開示波器面板中的【measure】,選擇波特率測量項,觀察波特率測量結果對比,如下圖 2紅框內的測量結果。
開頭中引出的例子,正是因為波特率產生了漂移,實際為10000 bps,而解碼時按照正常部件的9600bps來設置,這么一算,波特率誤差大于4%,因此會導致解碼結果不正確。換個晶振再解碼,通訊果然正常了。
圖 2 從波形最小位寬估算波特率圖
總結
在解碼中波特率雖然只是一個參數,但因其漂移產生的影響不容忽視,它可能就是導致通信故障的因素。解碼前注意檢驗波特率,這么一個小細節也許可以省去日后排查故障的時間。從波形出發,重新審視示波器價值,它用來觀察波形和分析數據就是為了檢測被測部件是否正常的。
更多技術問題請看儀商網http://www.861718.com
歡迎光臨 電子工程網 (http://m.qingdxww.cn/) | Powered by Discuz! X3.4 |