0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

消息協(xié)議如何提高數(shù)據(jù)傳輸?shù)目煽啃?/h1>

串行端口PIC與其他設(shè)備通信的最簡單方法之一。但是,事件串行端口存在缺陷,因此在本教程中,我們將了解消息協(xié)議如何提高數(shù)據(jù)傳輸?shù)目煽啃浴?/p>

示意圖

原始數(shù)據(jù)傳輸

現(xiàn)代微控制器通常內(nèi)置許多設(shè)備接口外設(shè),包括I2C,SPI,UART和能夠。雖然I2C和SPI專用于器件,并且嚴(yán)重依賴于選擇信號或啟動/停止信號,但UART更加自由。 UART的最大缺點(diǎn)之一是缺少時鐘信號,這可能導(dǎo)致發(fā)送器或接收器的時鐘漂移(導(dǎo)致波特差異),幀錯誤,甚至當(dāng)其中一個緩沖器出現(xiàn)溢出錯誤方滿了。當(dāng)然,這些問題是使用定時器,監(jiān)視器和事件容易克服的相對性。但是,與I2C和SPI不同,串行連接在一種特定情況下更常見:可移動硬件。 I2C和SPI器件通常是直接焊接到主電路板或永久連接到它們的IC。同時,這些設(shè)備是主控制器的子設(shè)備,因此無法自行啟動數(shù)據(jù)傳輸。

想象一下PIC和計算機(jī)通過串行連接進(jìn)行通信,其中每個設(shè)備都可以發(fā)送命令或數(shù)據(jù)到另一個設(shè)備。這樣的系統(tǒng)可以用普通的消息協(xié)議輕松實現(xiàn),其中發(fā)送的第一個字節(jié)代表命令,后面的字節(jié)代表該命令的數(shù)據(jù)。只要沒有中斷,該系統(tǒng)就可以正常運(yùn)行。但是,如果計算機(jī)在發(fā)送命令后傳輸數(shù)據(jù)字節(jié)的一半時崩潰并重新啟動會發(fā)生什么?好吧,我們的程序?qū)⒅匦聠硬L試發(fā)送命令字節(jié)以啟動數(shù)據(jù)傳輸,但命令字節(jié)將被PIC解釋為數(shù)據(jù)字節(jié),因為它仍然期望一個數(shù)據(jù)字節(jié)。這會導(dǎo)致PIC產(chǎn)生錯誤,因為它讀取的字節(jié)可能會產(chǎn)生意外結(jié)果。但這不僅僅是UART的一個問題;任何可能被終止的連接,無法知道連接已被終止,也可能崩潰。解決方案是使用消息協(xié)議!

我們的消息協(xié)議:DHP - DIY黑客協(xié)議

確保命令始終正確處理,命令字節(jié)值將是唯一的。對于我們的系統(tǒng),我們將有以下命令:

0x00 - 無操作

0x01 - 請求數(shù)據(jù)

0x02 - 寫數(shù)據(jù)

0x03 - 數(shù)據(jù)結(jié)束

0x04 - 重啟(發(fā)生錯誤或失?。?/p>

作為一個簡單的例子,如果我們想通過計算機(jī)向PIC發(fā)送一些數(shù)據(jù),我們必須首先發(fā)送0x02,然后發(fā)送所有數(shù)據(jù),然后發(fā)送數(shù)據(jù)結(jié)束字節(jié)。如果傳輸中斷并且計算機(jī)嘗試重新發(fā)送數(shù)據(jù),它將再次發(fā)送整個數(shù)據(jù)包。 PIC將正確解釋命令字節(jié)并意識到正在發(fā)送新數(shù)據(jù)包。但是,如果我們的數(shù)據(jù)包含0,1,2,3或4,會發(fā)生什么? PIC會將這些解釋為命令字節(jié),因此會發(fā)生致命錯誤。那么,我們?nèi)绾谓鉀Q這個問題?

雖然不是最有效的方法,但我們可以用其他形式表示我們的數(shù)據(jù)而不是原始字節(jié)值。一種方法是將我們的數(shù)據(jù)表示為十六進(jìn)制形式的ASCII字符,以便兩個ASCII字節(jié)代表一個字節(jié)的數(shù)據(jù)。例如,F(xiàn)F表示255,其中00表示0.因此,我們的數(shù)據(jù)字節(jié)永遠(yuǎn)不能與命令字節(jié)相同,并且通過使用ASCII編碼的十六進(jìn)制字節(jié),理論上我們可以有多達(dá)240個命令字節(jié)(留下16個十六進(jìn)制字符用于數(shù)據(jù))。使用ASCII編碼數(shù)據(jù)的缺點(diǎn)是我們有效地將數(shù)據(jù)速率減半,命令字節(jié)進(jìn)一步降低了速度。但與此同時,系統(tǒng)的可靠性也得到了顯著提高。

數(shù)據(jù)完整性怎么樣?我們可以通過在數(shù)據(jù)包中添加校驗和來實現(xiàn)這一點(diǎn),這樣接收方就可以確保數(shù)據(jù)完好無損。一種簡單的方法是對收到的所有字節(jié)進(jìn)行異或,并將其用作校驗和。如果任何一個位被誤讀,這將顯示在XOR校驗和中。如果同一列中的兩個位被誤讀,則校驗和保持不變,因此XOR僅對單位錯誤有效(但這些是最常見的)。

示例包

編寫數(shù)字92(十六進(jìn)制0x5C)

從設(shè)備讀取(TX設(shè)備)請求數(shù)據(jù),RX設(shè)備發(fā)送請求的數(shù)據(jù))

的構(gòu)建的的

該項目可以使用許多不同的電路構(gòu)造技術(shù)構(gòu)建,包括條形板,矩陣板,面包板和PCB。在這個例子中,我使用了在CNC機(jī)床上制造的PCB(通過隔離布線),但我正在考慮回到化學(xué)過程,原因?qū)⒃诤竺娴奈恼轮杏懻摗?/p>

這也是我第一個包含使用XYZ da Vinci Jr. 3D打印機(jī)制作的自定義項目框的項目。設(shè)計本身(痛苦地)在Google SketchUp中制作,然后由于STL導(dǎo)出器插件導(dǎo)出為STL文件。然后,STL文件在XYZmaker中導(dǎo)入并打印。雖然這個項目盒不使用螺絲,但未來的設(shè)計將會如此。雖然3D打印的型號可能價格昂貴(這個盒子使用價值約1.00美元的塑料),但它是一種定制設(shè)計,可以制作近乎完美的功能,如切口和孔。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
收藏 人收藏

    評論

    相關(guān)推薦

    socket 數(shù)據(jù)傳輸效率提升技巧

    TCP :提供可靠的、有序的和錯誤檢查的數(shù)據(jù)傳輸。適用于需要保證數(shù)據(jù)完整的場景。 UDP :提供快速但不可靠
    的頭像 發(fā)表于 11-12 14:34 ?92次閱讀

    CAN總線數(shù)據(jù)傳輸速率設(shè)置

    數(shù)據(jù)傳輸速度的指標(biāo),以每秒傳輸的位數(shù)(bps)來表示。 1. CAN總線概述 CAN總線由Bosch公司在1980年代開發(fā),最初用于汽車工業(yè),以取代傳統(tǒng)的點(diǎn)對點(diǎn)布線系統(tǒng)。CAN總線以其可靠性、靈活性和成本效益而聞名,現(xiàn)已廣泛應(yīng)用
    的頭像 發(fā)表于 11-12 10:03 ?84次閱讀

    網(wǎng)絡(luò)數(shù)據(jù)傳輸速率的單位是什么

    網(wǎng)絡(luò)數(shù)據(jù)傳輸速率的單位是 bps(bit per second) ,即比特每秒,也可以表示為b/s或bit/s。它表示的是每秒鐘傳輸的二進(jìn)制數(shù)的位數(shù)。比特(bit)是計算機(jī)中數(shù)據(jù)量的單位,也是信息論
    的頭像 發(fā)表于 10-12 10:20 ?811次閱讀

    N型插座在數(shù)據(jù)傳輸中的應(yīng)用有哪些

    德索工程師說道N型插座的低插入損耗特性意味著信號在傳輸過程中的衰減較小,從而保證了信號強(qiáng)度的穩(wěn)定性和傳輸質(zhì)量。低電壓駐波比則確保了信號在連接器內(nèi)部的穩(wěn)定傳輸,減少了信號反射和干擾。這兩個特性共同作用,
    的頭像 發(fā)表于 09-26 15:17 ?242次閱讀
    N型插座在<b class='flag-5'>數(shù)據(jù)傳輸</b>中的應(yīng)用有哪些

    12芯M16插頭數(shù)據(jù)傳輸準(zhǔn)確怎樣

     德索工程師說道12芯M16插頭在數(shù)據(jù)傳輸準(zhǔn)確方面表現(xiàn)出色,其設(shè)計特點(diǎn)和電氣性能確保了數(shù)據(jù)傳輸過程中的穩(wěn)定性和可靠性。以下是對12芯M1
    的頭像 發(fā)表于 06-17 17:26 ?301次閱讀
    12芯M16插頭<b class='flag-5'>數(shù)據(jù)傳輸</b>準(zhǔn)確<b class='flag-5'>性</b>怎樣

    can總線的數(shù)據(jù)傳輸過程是什么

    CAN總線(Controller Area Network)是一種用于汽車和工業(yè)控制系統(tǒng)的通信協(xié)議。它具有高可靠性、實時和靈活性,因此在許多領(lǐng)域得到了廣泛應(yīng)用。本文將詳細(xì)介紹CAN總線的數(shù)據(jù)
    的頭像 發(fā)表于 06-16 10:18 ?2257次閱讀

    8芯M16插頭數(shù)據(jù)傳輸的準(zhǔn)確

      德索工程師說道8芯M16插頭作為高性能連接器,其數(shù)據(jù)傳輸的準(zhǔn)確對于整個系統(tǒng)的穩(wěn)定性和可靠性至關(guān)重要。以下是對8芯M16插頭數(shù)據(jù)傳輸準(zhǔn)確
    的頭像 發(fā)表于 06-14 18:06 ?276次閱讀
    8芯M16插頭<b class='flag-5'>數(shù)據(jù)傳輸</b>的準(zhǔn)確<b class='flag-5'>性</b>

    GMSL技術(shù) 實現(xiàn)高帶寬、低延遲和高可靠性數(shù)據(jù)傳輸# ADI# GMSL# 汽車# 數(shù)據(jù)傳輸

    adi數(shù)據(jù)傳輸電機(jī)
    Excelpoint世健
    發(fā)布于 :2024年05月17日 16:34:25

    光纖布線如何保證數(shù)據(jù)可靠傳輸

    在當(dāng)今的數(shù)字環(huán)境中,數(shù)據(jù)傳輸是技術(shù)進(jìn)步的命脈,通信網(wǎng)絡(luò)的穩(wěn)定性和可靠性至關(guān)重要。隨著對更快、更高效的數(shù)據(jù)傳輸的需求不斷增長,創(chuàng)新者不斷尋求解決方案來保證無縫連接;在這些解決方案中,光纖布線代表了
    的頭像 發(fā)表于 04-07 10:34 ?309次閱讀

    水利SL427協(xié)議是什么?水資源監(jiān)測數(shù)據(jù)傳輸規(guī)約sl427

    結(jié)構(gòu)、數(shù)據(jù)傳輸可靠性等。 SL427協(xié)議規(guī)約明確了水資源監(jiān)測數(shù)據(jù)的標(biāo)準(zhǔn)格式,包括數(shù)據(jù)采集時間、地點(diǎn)、指標(biāo)參數(shù)等統(tǒng)一字段的定義與編碼標(biāo)準(zhǔn),以
    的頭像 發(fā)表于 03-16 17:30 ?604次閱讀

    DTU的多種協(xié)議,解鎖數(shù)據(jù)傳輸的無限可能

    DTU,即數(shù)據(jù)傳輸單元,是一種在物聯(lián)網(wǎng)(IoT)網(wǎng)絡(luò)中常用的設(shè)備,主要用于在傳感器和智能設(shè)備之間進(jìn)行數(shù)據(jù)傳輸。DTU使用多種協(xié)議來實現(xiàn)這一目標(biāo),這些協(xié)議不僅
    的頭像 發(fā)表于 03-01 11:00 ?720次閱讀
    DTU的多種<b class='flag-5'>協(xié)議</b>,解鎖<b class='flag-5'>數(shù)據(jù)傳輸</b>的無限可能

    萬兆電口模塊:滿足大規(guī)模數(shù)據(jù)傳輸需求的解決方案

    萬兆電口模塊具有高速傳輸、兼容好、可靠性高等優(yōu)勢,可以滿足大規(guī)模數(shù)據(jù)傳輸需求,推動網(wǎng)絡(luò)技術(shù)發(fā)展。
    的頭像 發(fā)表于 02-26 16:27 ?544次閱讀

    多業(yè)務(wù)光端機(jī)安全解析:保障數(shù)據(jù)傳輸可靠性與保密

    隨著信息技術(shù)的飛速發(fā)展,數(shù)據(jù)的安全和保密已成為各行各業(yè)關(guān)注的焦點(diǎn)。多業(yè)務(wù)光端機(jī)作為一種高速、高效的光通信設(shè)備,在保障數(shù)據(jù)傳輸可靠性與保
    的頭像 發(fā)表于 02-23 13:58 ?395次閱讀

    讓“可靠”變得“更快更安全”的數(shù)據(jù)傳輸協(xié)議:SCTP

    SCTP(Stream Control Transmission Protocol,流控傳輸協(xié)議)的出現(xiàn),并不是萬丈高樓平地起,而是站在TCP這個巨人肩膀上,讓數(shù)據(jù)傳輸從“可靠”變得“
    的頭像 發(fā)表于 12-28 17:25 ?1326次閱讀
    讓“<b class='flag-5'>可靠</b>”變得“更快更安全”的<b class='flag-5'>數(shù)據(jù)傳輸</b><b class='flag-5'>協(xié)議</b>:SCTP

    如何實現(xiàn)MQTT協(xié)議數(shù)據(jù)傳輸?

    如何實現(xiàn)MQTT協(xié)議數(shù)據(jù)傳輸? 隨著物聯(lián)網(wǎng)技術(shù)的不斷發(fā)展,越來越多的設(shè)備和應(yīng)用需要實現(xiàn)互聯(lián)互通。而MQTT作為一種輕量級的發(fā)布/訂閱消息傳輸協(xié)議,在物聯(lián)網(wǎng)領(lǐng)域應(yīng)用廣泛,成為了許多設(shè)備之
    的頭像 發(fā)表于 11-15 17:23 ?1089次閱讀