<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          總結(jié)了嵌入式開發(fā)中幾種常見的設(shè)備通信協(xié)議

          共 1772字,需瀏覽 4分鐘

           ·

          2022-06-20 22:42

              關(guān)注、星標(biāo)公眾號(hào),直達(dá)精彩內(nèi)容

          來源:網(wǎng)路素材


          嵌入式設(shè)備在運(yùn)行中需要設(shè)置參數(shù),這個(gè)工作經(jīng)常由PC機(jī)來實(shí)現(xiàn),需要為雙方通信設(shè)計(jì)協(xié)議,有代表性協(xié)議是如下三種:

          從上表可以看到,一般嵌入式設(shè)備內(nèi)存和運(yùn)算性能都有限,因此固定二進(jìn)制是首選通信協(xié)議。

          一. 簡(jiǎn)單性

          保證協(xié)議是一個(gè)簡(jiǎn)單的方案,晦澀難懂往往意味著實(shí)現(xiàn)困難和容易出錯(cuò)。協(xié)議的結(jié)構(gòu)宜采用平面方式,每個(gè)域作用明確,數(shù)據(jù)域盡可能設(shè)計(jì)得長(zhǎng)度和位置固定,注釋詳盡,文檔清晰,實(shí)例豐富,讓人盡快上手和理解。

          協(xié)議一般都需要以下域:幀頭,長(zhǎng)度,幀類型,目標(biāo)地址,源地址,數(shù)據(jù),校驗(yàn),幀尾。

          二. 可擴(kuò)展

          必須保證將來增加功能和更改硬件后協(xié)議仍能勝任工作,這往往是通過預(yù)留空間來實(shí)現(xiàn),協(xié)議的變更應(yīng)該只是量的增加,不至于引起協(xié)議結(jié)構(gòu)的變化。

          三. 低耦合

          理想情況下每個(gè)協(xié)議包是原子信息,即本協(xié)議包不與其他協(xié)議包牽連,以防止通訊丟幀和設(shè)置牽連帶來的錯(cuò)誤。

          四. 穩(wěn)定性

          協(xié)議包長(zhǎng)度適宜:太小包含的信息過少,協(xié)議包的種類繁多,容易引起通訊混亂和牽連錯(cuò)誤;太大包含的信息過多,可讀性較差,組幀和解幀的工作困難,還會(huì)帶來通訊易受干擾的缺陷,一般協(xié)議長(zhǎng)度以最小原子性信息為標(biāo)尺。

          協(xié)議必須包括校驗(yàn)機(jī)制,以便于接收方判別協(xié)議包正確完整接收,如果出錯(cuò)需要較好的機(jī)制來確保通訊成功(如重傳)。

          五. 高效率

          按信息類型區(qū)分協(xié)議包類別,如:設(shè)置網(wǎng)絡(luò)信息參數(shù),設(shè)置當(dāng)前運(yùn)行參數(shù),可以區(qū)分開來,方便程序處理。

          將同種操作編碼為一個(gè)子集是一種高效手段,如Read操作,編碼為0x0010,Write操作,編碼為0x0020。

          數(shù)據(jù)盡可能設(shè)計(jì)成同構(gòu)模式,如果實(shí)在有差異,至少將同類型數(shù)據(jù)放置在一起,這樣程序可以充分利用指針和線性尋址加速處理。

          六. 易實(shí)現(xiàn)

          盡量減少復(fù)雜算法的使用,如,通訊鏈路穩(wěn)定,數(shù)據(jù)幀的校驗(yàn)碼可以由CheckSum代替CRC。除非資源非常緊張,否則不要將過多的信息擠壓在一個(gè)數(shù)據(jù)里,因?yàn)樗鼤?huì)帶來可讀性差和實(shí)現(xiàn)困難。

          七.軟件開發(fā)

          盡可能地讓硬件ISR完成驅(qū)動(dòng)工作,不要讓“進(jìn)程”參與復(fù)雜的時(shí)序邏輯,否則處理器將步履蹣跚且邏輯復(fù)雜!如:

          接收固定長(zhǎng)度的數(shù)據(jù)幀,可以使用DMA,每接收完一幀DMA_ISR向進(jìn)程發(fā)消息。小心處理DMA斷層異常(接收的數(shù)據(jù)幀長(zhǎng)度正常但數(shù)據(jù)錯(cuò)誤,數(shù)據(jù)為上幀的后半部分+本幀的前半部分)。

          接收不定長(zhǎng)的數(shù)據(jù)幀,可以使用狀態(tài)機(jī),當(dāng)接收到“幀尾數(shù)據(jù)”時(shí)向進(jìn)程發(fā)消息。小心數(shù)據(jù)紊亂和超時(shí)異常(數(shù)據(jù)紊亂時(shí)需要將狀態(tài)機(jī)及時(shí)復(fù)位,超時(shí)一般使用定時(shí)器監(jiān)控)。

          八. 考慮硬件

          如果通信鏈路是高速總線(如SPORT可達(dá)100Mbps),一般設(shè)計(jì)成一幀產(chǎn)生一次中斷,它通過長(zhǎng)度觸發(fā)的DMA來實(shí)現(xiàn),需要將協(xié)議設(shè)計(jì)成固定長(zhǎng)度,如附錄A。它具備高效率,但靈活性較差。

          如果通信鏈路是低速總線(如UART一般100kbps),一般接收一字節(jié)產(chǎn)生一次中斷,可以將協(xié)議設(shè)計(jì)成變長(zhǎng)幀,如附錄B。它具備高靈活性,但效率較低。

          上圖顯示了PC發(fā)送數(shù)據(jù)幀的格式,總長(zhǎng)為64字節(jié),是4字節(jié)的整倍數(shù),符合絕大部分32位處理器結(jié)構(gòu)體對(duì)齊的特性。

          • 0x3C:INT8U,幀頭,可見字符’<’

          • Len:INT8U,本幀的總數(shù)據(jù)長(zhǎng)度,在圖4即為64

          • Dst:INT8U,標(biāo)識(shí)目標(biāo)設(shè)備的ID號(hào)

          • Src:INT8U,標(biāo)識(shí)源設(shè)備的ID號(hào)

          • Data:56字節(jié)的存儲(chǔ)區(qū),內(nèi)容依賴于具體的通信幀(實(shí)例見表2)

          • Cmd:INT16U,數(shù)據(jù)幀的類別

          • CS:INT8U, 對(duì)它前面所有數(shù)據(jù)(62字節(jié))進(jìn)行8位累加和校驗(yàn)

          • 0x7D:INT8U, 幀尾,可見字符’}’

          Data域數(shù)據(jù)結(jié)構(gòu)實(shí)例:

          一個(gè)基于變長(zhǎng)格式的UART通信協(xié)議實(shí)例:

          PC與iWL880A(一種無線通信產(chǎn)品,詳見www.rimelink.com)通信幀采用變長(zhǎng)格式,如下圖所示。大部分設(shè)備(常見為PC機(jī))對(duì)于接收以“回車符”的機(jī)制很好處理,協(xié)議中的Tail就等于0x0D(換行符)。

          版權(quán)聲明:本文來源網(wǎng)絡(luò),免費(fèi)傳達(dá)知識(shí),版權(quán)歸原作者所有。如涉及作品版權(quán)問題,請(qǐng)聯(lián)系我進(jìn)行刪除。

          ????????????????  END  ???????????????

          關(guān)注我的微信公眾號(hào),回復(fù)“加群”按規(guī)則加入技術(shù)交流群。


          點(diǎn)擊“閱讀原文”查看更多分享,歡迎點(diǎn)分享、收藏、點(diǎn)贊、在看。

          瀏覽 34
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产精品无码无套在线 | 大香蕉国产视屏 | 色月婷婷 | 特黄特色大片勉费看 | 乱伦综合肉 |