有時(shí)候沒有邏輯分析儀,恰恰示波器也沒買串口解析的功能,那么如何扒串口數(shù)據(jù)呢?(以下文章也適用于RS485,因?yàn)榛静畈欢啵?/p>
首先介紹一下串口數(shù)據(jù)幀的組成:起始位1bit(低電平),數(shù)據(jù)位8bit,奇偶校驗(yàn)位(一般不加),停止位1bit(高電平)。
所以我選擇的數(shù)據(jù)幀格式為: 1bit起始位+8bit數(shù)據(jù)位+1bit停止位(大多數(shù)都是這樣) 首先看一個(gè)示波器抓取的串口波形,如下圖:
首先看第一位低電平,是起始位,通過讀格子,大概可以看出是100us一個(gè)bit位,那么反推回去1s/100us≈9600波特率(實(shí)際上我設(shè)置的也就是9600波特率),9600波特率下的1bit時(shí)間為1/9600≈104us。 所以按照串口數(shù)據(jù)幀的格式,可以將數(shù)據(jù)大概扒出來,如下圖:
然后串口數(shù)據(jù)格式一般是LSB,即低位在前高位在后,所以去掉起始位和停止位后,這兩幀數(shù)據(jù)分別為: 0011 0101和 0111 0100 然后再根據(jù)8421BCD碼的編碼方式,反推回去就是: 2+14+1和 4+2+14 即數(shù)據(jù)是3574 那么這也正和我用串口發(fā)送給示波器的一樣:
那么奇校驗(yàn)和偶校驗(yàn)是什么意思呢?1、奇校驗(yàn)數(shù)據(jù)幀格式為:1bit起始位+8bit數(shù)據(jù)位+1bit奇偶校驗(yàn)位+1bit停止位數(shù)據(jù)位和奇偶校驗(yàn)位內(nèi)的1的總數(shù)為奇數(shù)比如數(shù)據(jù)位為0011 0101 (35)總共有4個(gè)1,那么奇偶校驗(yàn)位就應(yīng)該為1,這樣才可以保證總共1的個(gè)數(shù)為奇數(shù)。 比如數(shù)據(jù)位為0111 0101(75)總共有5個(gè)1,那么奇偶校驗(yàn)位就應(yīng)該為0,這樣才可以保證總共1的個(gè)數(shù)為奇數(shù)。2、偶校驗(yàn)數(shù)據(jù)幀格式為:1bit起始位+8bit數(shù)據(jù)位+1bit奇偶校驗(yàn)位+1bit停止位數(shù)據(jù)位和奇偶校驗(yàn)位內(nèi)的總共1的總數(shù)為偶數(shù)那么,這次不發(fā)送3574了,我使用串口發(fā)送3575,然后調(diào)到奇校驗(yàn):
然后抓取示波器波形,可以看到和之前舉的例子一樣,第一幀8bit的數(shù)據(jù)位里有4個(gè)1,為了保證有奇數(shù)個(gè)1,所以校驗(yàn)位為1,這樣8bit數(shù)據(jù)位+1bit校驗(yàn)位的1的總數(shù)就為5,是奇數(shù)了;第二幀數(shù)據(jù)里8bit數(shù)據(jù)里有5個(gè)1,所以校驗(yàn)位為0,也是保證最后有奇數(shù)個(gè)1:(偶校驗(yàn)類似,不在舉例)
感謝您的耐心觀看,希望對您的學(xué)習(xí)有所幫助。 原文來自:24c01硬件電子
如果看到這里,請點(diǎn)贊、收藏、分享三連!
限時(shí)免費(fèi)掃碼進(jìn)群,交流更多行業(yè)技術(shù)
審核編輯 黃宇
-
示波器
+關(guān)注
關(guān)注
113文章
6240瀏覽量
184796 -
串口
+關(guān)注
關(guān)注
14文章
1551瀏覽量
76427
發(fā)布評論請先 登錄
相關(guān)推薦
評論