兩種MCU間的串行通信協(xié)議設計
2.2 軟件設計
2.2.1數據幀解析
Cortex-M3側和C51側采用同樣的數據幀格式,以簡(jiǎn)化編程的難度,增強程序的可移植性。數據幀由起始標識符、數據長(cháng)度、類(lèi)型ID、通信內容、循環(huán)冗余校驗碼構成,如圖2所示。本文引用地址:http://dyxdggzs.com/article/156421.htm
(1)起始標識符
起始標識符的作用主要是用于定界,把不同的數據幀在一連串的數據中分離開(kāi)來(lái)。起始標識符內的數據不能與數據幀中可能出現的任何數據相同,否則會(huì )引起歧義,導致定界失敗,造成數據錯誤。在本例中,為2個(gè)字節,選用0xFF+0xAA,因為該組合與其他數據具有排他性,不會(huì )引起歧義。
(2)數據長(cháng)度
數據長(cháng)度的計算方法為,從該位開(kāi)始,到最后一個(gè)數據位結束,也就是CRC校驗位之前的一個(gè)字節。雖然使用Length位可以表示很長(cháng)的數據幀,但在應用中應盡量采用短幀,以避免各種干擾因素造成少數數據位出錯,導致大量數據無(wú)效,影響通信效率。同時(shí),應該設置一個(gè)最大發(fā)送長(cháng)度,以便設置超時(shí)重傳計時(shí)器的值。本例采用1個(gè)字節,最大幀長(cháng)為260個(gè)字節。
(3)類(lèi)型ID
根據實(shí)際需要,類(lèi)型ID可以采用1個(gè)或多個(gè)字節,用于表示該數據幀的作用類(lèi)型。本例中,采用1個(gè)字節,可以表示256種作用類(lèi)型,例如設備參數幀(如音量)、線(xiàn)路探測幀或應答幀。
(4)通信內容
通信內容與類(lèi)型ID結合,表達特定意義。相同的Data,但ID不同的話(huà),表達的信息不一樣。根據不同的ID,Data的長(cháng)度可能會(huì )有所不同。
(5)循環(huán)冗余校驗碼
循環(huán)冗余校驗碼用于校驗接收到的數據是否在傳輸過(guò)程中出錯。本例中采用CRC-16算法,占2個(gè)字節,對從起始標識符開(kāi)始到最后一個(gè)通信內容位的所有數據進(jìn)行運算,把得到的結果附在最后。
評論