新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 51單片機串口通信中的檢錯方法

        51單片機串口通信中的檢錯方法

        作者: 時間:2011-12-07 來源:網(wǎng)絡(luò) 收藏
        0 引言
        對于基于flash控制器的8051的芯片結(jié)構(gòu),一般在進行數(shù)據(jù)傳輸時,都是先通過串口將數(shù)據(jù)傳送到flash控制器的buffer中。由于buffer的大小為512 bytes,所以每次傳輸?shù)淖畲髷?shù)據(jù)量為512bytes。本文中所討論的三種檢錯方法的傳輸數(shù)據(jù)量均為512 bytes。


        1 檢錯方式
        基于8051的串口數(shù)據(jù)通信系統(tǒng)的硬件開發(fā)平臺框圖如圖1所示。利用該平臺進行數(shù)據(jù)傳輸時,通常有三種數(shù)據(jù)檢錯方式。

        1.1 奇偶校驗
        奇偶校驗是檢錯中比較常見的一種方法。它利用數(shù)據(jù)中的1的個數(shù)作為檢錯的標(biāo)志位,若1的個數(shù)為奇數(shù)個,則錯誤檢測的標(biāo)志位為1,若1的個數(shù)為偶數(shù),則錯誤檢測的標(biāo)志位為0。在發(fā)送端和接收端同時檢測奇偶位,若得到相同的結(jié)果,則說明數(shù)據(jù)傳輸過程無錯誤發(fā)生;若得到不同的結(jié)果,則說明數(shù)據(jù)傳輸過程中有錯誤發(fā)生,此時8051會發(fā)送一個錯誤重傳的信號,讓PC端再次發(fā)送數(shù)據(jù)。
        1.2 循環(huán)冗余校驗(CRC)
        CRC是利用除法和余數(shù)的原理來進行錯誤檢測(Error Detecting)。如果原始數(shù)據(jù)為多項式JP(x),則將P(x)對生成的多項式G(x)進行模2除法,再將得到的余式R(x)作為生成的CRC校驗碼,用公式可以表示為:
        P(x)=Q(x)·G(x)+R(x)
        上式中的Q(x)為除法得到的商。發(fā)送端將原始數(shù)據(jù)P(x)和生成的CRC校驗碼R(x)發(fā)送到接收端。接收端則根據(jù)接收到的數(shù)據(jù)P'(x)算出另外的一個CRC校驗碼R'(x),然后對兩個CRC校驗碼進行比較,即可得出在傳輸過程中是否有錯誤發(fā)生。若發(fā)生錯誤,則用發(fā)送端重傳。本文中所采用的CRC8所生成的多項式G(x)為:x2+x5+x4+1。


        上一頁 1 2 3 下一頁

        關(guān)鍵詞: 51單片機 串口通信

        評論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 澎湖县| 大兴区| 独山县| 来凤县| 邵阳市| 太原市| 重庆市| 定兴县| 东明县| 南阳市| 筠连县| 祥云县| 宝清县| 建宁县| 龙岩市| 阳朔县| 自贡市| 晴隆县| 梓潼县| 东兴市| 柳河县| 桦甸市| 华亭县| 谢通门县| 隆昌县| 应城市| 乳源| 名山县| 额尔古纳市| 望江县| 日土县| 浦江县| 望谟县| 酒泉市| 齐齐哈尔市| 视频| 杭州市| 监利县| 三亚市| 赤水市| 乃东县|