串口通信校驗(yàn)方式:奇偶校驗(yàn)、累加和校驗(yàn)
利用串口傳輸數(shù)據(jù)時(shí),近距離傳輸還好,遠(yuǎn)距離傳輸由于線路長(zhǎng)度影響,可能會(huì)使信號(hào)在傳輸過(guò)程中出現(xiàn)不可預(yù)知的錯(cuò)誤,為了達(dá)到通信的穩(wěn)定性,在遠(yuǎn)距離通信時(shí)一般要引入一種校驗(yàn)方式來(lái)去除干擾。
這里主要介紹幾種常見(jiàn)的校驗(yàn)方式,也是我們串口通訊板子上需要添加的幾種校驗(yàn)方式。
即奇校驗(yàn)ODD,偶校驗(yàn)EVEN,累加和校驗(yàn),CRC循環(huán)碼冗余碼校驗(yàn)
方便簡(jiǎn)單的奇偶校驗(yàn)
奇偶校驗(yàn)需要一位校驗(yàn)位,即使用串口通信的方式2或方式3(8位數(shù)據(jù)位+1位校驗(yàn)位)。
奇校驗(yàn)(odd parity):讓傳輸?shù)臄?shù)據(jù)(包含校驗(yàn)位)中1的個(gè)數(shù)為奇數(shù)。
即:如果傳輸字節(jié)中1的個(gè)數(shù)是偶數(shù),則校驗(yàn)位為“1”,奇數(shù)相反。
以發(fā)送字符:10101010為例
偶校驗(yàn)(even parity):讓傳輸?shù)臄?shù)據(jù)(包含校驗(yàn)位)中1的個(gè)數(shù)為偶數(shù)。
即:如果傳輸字節(jié)中1的個(gè)數(shù)是偶數(shù),則校驗(yàn)位為“0”,奇數(shù)相反。
還是以發(fā)送字符:10101010為例
數(shù)據(jù)和校驗(yàn)位發(fā)送給接受方后,接收方再次對(duì)數(shù)據(jù)中1的個(gè)數(shù)進(jìn)行計(jì)算,如果為奇數(shù)則校驗(yàn)通過(guò),表示此次傳輸過(guò)程未發(fā)生錯(cuò)誤。如果不是奇數(shù),則表示有錯(cuò)誤發(fā)生,此時(shí)接收方可以向發(fā)送方發(fā)送請(qǐng)求,要求重新發(fā)送一遍數(shù)據(jù)。
優(yōu)缺點(diǎn):
奇偶校驗(yàn)的檢錯(cuò)率只有50%,因?yàn)橹挥衅鏀?shù)個(gè)數(shù)據(jù)位發(fā)生變化能檢測(cè)到,如果偶數(shù)個(gè)數(shù)據(jù)位發(fā)生變化則無(wú)能為力了╮(╯﹏╰)╭
奇偶校驗(yàn)每傳輸一個(gè)字節(jié)都需要加一位校驗(yàn)位,對(duì)傳輸效率影響很大。
奇偶校驗(yàn)只能發(fā)現(xiàn)錯(cuò)誤,但不能糾正錯(cuò)誤,也就是說(shuō)它只能告訴你出錯(cuò)了,但不能告訴你怎么出錯(cuò)了,一旦發(fā)現(xiàn)錯(cuò)誤,只好重發(fā)。
雖然奇偶校驗(yàn)有很多缺點(diǎn),但因?yàn)槠涫褂闷饋?lái)十分簡(jiǎn)單,故目前仍被廣泛使用。
應(yīng)用:
如何用編程確定一個(gè)字節(jié)中“1”個(gè)數(shù)的奇偶性?我們可以利用二進(jìn)制數(shù)相加的特點(diǎn):
0+0=0、1+0=1、1+1=0
可以看出,如果我們將一個(gè)字節(jié)的所有位相加
有奇數(shù)個(gè)“1”的字節(jié)的和為1
有偶數(shù)個(gè)“1”的字節(jié)的和為0
由此即可通過(guò)編程完成判斷。實(shí)際應(yīng)用中,實(shí)現(xiàn)方法很多,但這是相對(duì)簡(jiǎn)單的一種,這里不再贅述。
累加和校驗(yàn)
所謂的累加和校驗(yàn)有很多種,最常見(jiàn)的一種是在每次通信數(shù)據(jù)包最后都加一個(gè)字節(jié)的校驗(yàn)數(shù)據(jù),這個(gè)校驗(yàn)字節(jié)里的數(shù)據(jù)是通信數(shù)據(jù)包里所有數(shù)據(jù)的不進(jìn)位累加和。例如:
接收方接收到數(shù)據(jù)后同樣對(duì)一個(gè)數(shù)據(jù)包的數(shù)據(jù)進(jìn)行不進(jìn)位累加和計(jì)算,如果累加出的結(jié)果與校驗(yàn)位相同的話就認(rèn)為傳輸?shù)臄?shù)據(jù)沒(méi)有錯(cuò)誤。
優(yōu)缺點(diǎn):
實(shí)現(xiàn)起來(lái)方便簡(jiǎn)單,被廣泛運(yùn)用。
檢錯(cuò)率一般,例如一個(gè)字節(jié)多1,一個(gè)字節(jié)少1,則會(huì)出現(xiàn)誤判。
和奇偶校驗(yàn)一樣,只能發(fā)現(xiàn)錯(cuò)誤,但不能糾正錯(cuò)誤。
另外,累加和校驗(yàn)的數(shù)據(jù)傳輸格式可以表示為:通訊數(shù)據(jù)+校驗(yàn)數(shù)據(jù)。這與我們之后要說(shuō)的CRC循環(huán)冗余碼校驗(yàn)是相同的。
審核編輯 :李倩
-
串口通信
+關(guān)注
關(guān)注
34文章
1626瀏覽量
55526 -
串口傳輸
+關(guān)注
關(guān)注
0文章
33瀏覽量
1797
原文標(biāo)題:FPGA學(xué)習(xí)-串口通信校驗(yàn)方式:奇偶校驗(yàn)、累加和校驗(yàn)
文章出處:【微信號(hào):gh_9d70b445f494,微信公眾號(hào):FPGA設(shè)計(jì)論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論