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