之前沒有用過示波器,更不知道怎麼來測試串列埠的波特率,結果遇到一客戶說我們產品的波特率達不到9600,只有9100,為了驗證這一說法,我們只能自己測試一下。說明:產品通過485接電腦,用串列埠除錯助手接收都是沒有問題的,用客戶的裝置接收就有問題。
下面說一下示波器測波特率的方法步驟:
顯示高低跳變的情況:
1.先把示波器錶筆的地線(夾子)夾485b,錶筆夾485a。
2.往串列埠傳送資料:如傳送0x55或0xaa(因為這兩個值都是0和1相間的,容易看波形占用的時間值),本例是傳送的0xaa。
3.開啟示波器(我用的是agilent mso6104a型號)電源開關,旋轉下圖中紅色框標出來的按鈕,並注意看著螢幕上方的時間格,一般將時間旋轉到100ms-300ms之間,這個時間是用來抓去波形的,這是調節的橫座標軸。然後旋轉黑色框框中的兩個按鈕,這兩個按鈕是用來調整縱座標軸的,旋轉座標線到合適的位置。
4. 調好座標後,會看到螢幕上有訊號劃過,如下圖:每個格仔代表的是100ms,如紅色框框中標出的。然後按軟鍵盤上的「run/stop」鍵,這個按鍵會變成紅色,並且螢幕不再划動,而是停止,這就是抓到的波形,形狀也如下圖。需要調整時間格才能將每個位顯示出來。
5.旋轉第一副途中紅色框框標出的按鈕(menu/zoom左邊的按鈕),逆時針旋轉,如果旋轉的看不到波形了,就再旋轉(menu/zoom右邊邊的按鈕),這個按鈕是平移時間軸的,直至調整到能看清每個跳變的位,如上圖,調整到500us每個格仔,可以看到一幀資料的波形,如果要計算具體的波特率,可以調整時間軸,讓波形顯示的更清除一些,如下圖,大概每個bit位佔了乙個格仔多一點,大概是105us/bit。這樣計算下來,波特率就是1000000/105=9524bit/s,這樣就計算出來波特率,這樣算出來的波特率有一定的誤差,但誤差是在可接收範圍之內的,這個就相當於9600的波特率。
其實對於串列埠波特率到底正確不正確,還有個行業共識就是:
如果要測試串列埠是不是9600的波特率,直接連線上電腦,用串列埠助手接受資料,電腦串列埠助手波特蘭設定為9600,然後和你們的裝置連上,如果電腦的串列埠助手能接受到資料那就沒問題。
另外,波特率的誤差範圍理論值在2.5%之內是不會發生傳輸錯誤的問題的。也就是如果我們的產品波特率是9100的話,遠超過2.5%的誤差,電腦接收也會有問題。
另外,485線上是沒有電平的,起始時由高變低,結束時由低變高 ,如果錶筆不是按照上面的接線法,假如錶筆接485a,夾子接電源地線的話,波形就是如下圖這樣的,沒有高低跳變。這樣也是正常的,預設就是高電平,0就變成低電平:下圖是傳送0x01的波形圖
通過這兩天的學習,學會了示波器的使用,更理解的波特率的概念,其實客戶提出的這個問題,對我的幫助還是很大的。讓我學到了很多以前不太懂的知識。
串列埠波特率的理解
bit就是位,也叫位元位,是計算機中最小的單位 byte是位元組,也就是b 1位元組 byte 8位 bit 既 位只有兩種形式0和1,只能表示2種狀態,而位元組是有8個位組成的。可以表示256個狀態。1byte 8 bit,1kb 1024 byte,1mb 1024 kb,1g 1024 mb,...
關於串列埠通訊波特率的幾點思考
首先想說,12mhz真的是有問題。我使用的是 stc89c52rc的微控制器,他的最小系統板的的晶振是12mhz,但是這個開發板上買的晶振就沒寫頻率!我一直以為這是預設的11.0592mhz,因為之前用的最小系統板都是這個頻率。在沒有使用串列埠通訊的時候,不管是11.0592m還是12m,都對程式的...
s3c2410 s3c2440串列埠波特率的計算
要正確計算串列埠波特率,首先要搞清楚晶元的時鐘工作原理,這部分在s3c2410 s3c2440datasheet上寫的比較詳細,但對新手來說結合thisway同志 s3c2410完全開發流程 中的timer和clock兩個實驗,邊做實驗邊看資料,更容易理解。我這裡只根據我的失敗經驗談一下設定波特率暫...