<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 手機(jī)與無(wú)線通信 > 設(shè)計(jì)應(yīng)用 > 兩種MCU間的串行通信協(xié)議設(shè)計(jì)

          兩種MCU間的串行通信協(xié)議設(shè)計(jì)

          作者: 時(shí)間:2011-04-12 來(lái)源:網(wǎng)絡(luò) 收藏

          2.2 軟件
          2.2.1數(shù)據(jù)幀解析
          Cortex-M3側(cè)和C51側(cè)采用同樣的數(shù)據(jù)幀格式,以簡(jiǎn)化編程的難度,增強(qiáng)程序的可移植性。數(shù)據(jù)幀由起始標(biāo)識(shí)符、數(shù)據(jù)長(zhǎng)度、類型ID、內(nèi)容、循環(huán)冗余校驗(yàn)碼構(gòu)成,如圖2所示。

          本文引用地址:http://www.ex-cimer.com/article/156421.htm

          b.jpg


          (1)起始標(biāo)識(shí)符
          起始標(biāo)識(shí)符的作用主要是用于定界,把不同的數(shù)據(jù)幀在一連串的數(shù)據(jù)中分離開(kāi)來(lái)。起始標(biāo)識(shí)符內(nèi)的數(shù)據(jù)不能與數(shù)據(jù)幀中可能出現(xiàn)的任何數(shù)據(jù)相同,否則會(huì)引起歧義,導(dǎo)致定界失敗,造成數(shù)據(jù)錯(cuò)誤。在本例中,為2個(gè)字節(jié),選用0xFF+0xAA,因?yàn)樵摻M合與其他數(shù)據(jù)具有排他性,不會(huì)引起歧義。
          (2)數(shù)據(jù)長(zhǎng)度
          數(shù)據(jù)長(zhǎng)度的計(jì)算方法為,從該位開(kāi)始,到最后一個(gè)數(shù)據(jù)位結(jié)束,也就是CRC校驗(yàn)位之前的一個(gè)字節(jié)。雖然使用Length位可以表示很長(zhǎng)的數(shù)據(jù)幀,但在應(yīng)用中應(yīng)盡量采用短幀,以避免各種干擾因素造成少數(shù)數(shù)據(jù)位出錯(cuò),導(dǎo)致大量數(shù)據(jù)無(wú)效,影響效率。同時(shí),應(yīng)該設(shè)置一個(gè)最大發(fā)送長(zhǎng)度,以便設(shè)置超時(shí)重傳計(jì)時(shí)器的值。本例采用1個(gè)字節(jié),最大幀長(zhǎng)為260個(gè)字節(jié)。
          (3)類型ID
          根據(jù)實(shí)際需要,類型ID可以采用1個(gè)或多個(gè)字節(jié),用于表示該數(shù)據(jù)幀的作用類型。本例中,采用1個(gè)字節(jié),可以表示256種作用類型,例如設(shè)備參數(shù)幀(如音量)、線路探測(cè)幀或應(yīng)答幀。
          (4)內(nèi)容
          通信內(nèi)容與類型ID結(jié)合,表達(dá)特定意義。相同的Data,但I(xiàn)D不同的話,表達(dá)的信息不一樣。根據(jù)不同的ID,Data的長(zhǎng)度可能會(huì)有所不同。
          (5)循環(huán)冗余校驗(yàn)碼
          循環(huán)冗余校驗(yàn)碼用于校驗(yàn)接收到的數(shù)據(jù)是否在傳輸過(guò)程中出錯(cuò)。本例中采用CRC-16算法,占2個(gè)字節(jié),對(duì)從起始標(biāo)識(shí)符開(kāi)始到最后一個(gè)通信內(nèi)容位的所有數(shù)據(jù)進(jìn)行運(yùn)算,把得到的結(jié)果附在最后。



          評(píng)論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();