在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何使用數據包錯誤檢查來保護您的溫度讀數

星星科技指導員 ? 來源:ADI ? 作者:ADI ? 2023-02-13 10:48 ? 次閱讀

“數據包錯誤檢查”(PEC)是一種在數據傳輸過程中廣泛使用的錯誤檢測機制。Maxim集成產品采用PEC模式,以提高數據傳輸的可靠性。本應用筆記討論了PEC字節在具有1線和2線接口的溫度傳感器產品上的詳細實現。

背景

通信無處不在,錯誤會導致通信效率下降。為了使溝通更準確,人們使用不同的方法來檢測溝通錯誤。例如,在為網站登錄創建新密碼時,用戶需要輸入兩次密碼,以減少密碼中出現拼寫錯誤的機會。

當人們寫銀行路由號碼等號碼時,他們可能會犯錯誤。創建校驗位是為了捕獲這些轉錄錯誤。校驗位是一種冗余校驗,由算法從序列中的其他數字計算出的一個或多個數字組成。銀行路由號碼的最后一位數字是根據前八位數字計算的校驗位,用于在交易過程中驗證銀行路由號碼的真實性。

數據通信可能會出錯,例如通道噪聲、電氣失真、隨機位錯誤和串擾。循環冗余校驗 (CRC) 是一種錯誤檢測代碼,用于檢測數據傳輸中的意外錯誤。CRC用于多款具有1-Wire接口的Maxim溫度傳感器產品(即DS18B20、MAX31850)。部分產品帶有 I?2C/SMBus兼容串行接口(即DS1862、MAX31875)以分組錯誤檢查(PEC)的形式實現CRC,這是最初在SMBus中定義的機制。在數據傳輸系統中,可以在每個事務的末尾附加一個PEC字節作為錯誤檢測代碼。PEC 字節是根據多項式 C(X) = X 表示的 CRC-8 字節計算的8+ X2+ X1+ 1.PEC 機制提高了可靠性和通信魯棒性,PEC 實現對于 SMBus 設備是可選的。

描述

每款1-Wire器件都有一個唯一的64位串行碼存儲在板載ROM中。當多個設備在同一總線上時,總線主站使用64位唯一ROM ID唯一標識總線上的每個從設備,這允許主站確定從設備的數量及其設備類型。當主設備想要與一個特定的從設備通信時,主機向總線上的設備發出命令,然后是目標設備的64位ROM代碼序列,以尋址該特定的從設備。只有與64位ROM碼序列完全匹配的從機才會響應主站發出的功能命令。

在1-Wire接口產品中,CRC字節作為64位ROM碼的一部分(圖1)和暫存器存儲器的第9個字節(圖2)提供。64位ROM碼中的CRC字節是從ROM碼的前56位計算得出的,其中包括序列號和家族代碼。

暫存器內存中的 CRC 字節從暫存器的字節 0 到 7 計算得出,并在暫存器中的數據更改時更改。暫存器中的 CRC 字節是只讀的。例如,為了從1-Wire溫度傳感器讀取溫度值,主機發出讀取暫存器命令以讀取暫存器,包括CRC字節。然后,主站從暫存器重新計算前八個數據字節的CRC字節,并將計算出的CRC字節與讀取的CRC字節進行比較。如果它們匹配,則接收到的數據沒有錯誤。

poYBAGPppO-ARxHLAAAQYd2YLno455.png?imgver=1

圖1.64位1線ROM碼。

pYYBAGPppPCAffPjAADfXMY7rYw088.png?imgver=1

圖2.DS18B20暫存存儲器。

對于我2支持PEC、CRC字節的C/SMBus組件可用于寫入和讀取。例如,MAX31875,一個微小的微功耗本地溫度傳感器,具有I2C/SMBus接口,支持可選PEC模式。

在寫事務中,主機寫入MAX31875的地址,等待MAX31875的ACK位,然后主機發送目標寄存器,然后發送MAX31875的另一個ACK位。主機寫入兩個數據字節,并從MAX31875接收每個數據字節的ACK位。PEC模式開啟時,主機再發送一個CRC字節,并從MAX31875接收最后一個ACK位,停止交易。該CRC字節是使用從地址、寄存器地址和傳輸的數據計算的。

對于讀事務,主機發送MAX31875的地址和目標寄存器地址,并從從機接收每次發送的ACK位。主機產生重復啟動(Sr)字節,寫入MAX31875地址和讀位。MAX31875確認地址/讀字節并發送兩個數據字節。PEC模式開啟時,數據傳輸后MAX31875附加一個PEC字節。CRC字節是使用具有寫入位的從地址,寄存器地址,具有讀取位的從地址以及傳輸的數據計算的。

poYBAGPppPKAEDGFAABw4ayjGB0363.png?imgver=1

圖3.2字節寫入MAX31875,PEC碼。

pYYBAGPppPOAJU3aAACG5GvnnK4852.png?imgver=1

圖4.SMBus 2 字節與 PEC 字節一起讀取。

示例1:使用CRC進行1線讀取

DS18B20是Maxim采用1-Wire接口的數字溫度計之一。CRC字節作為DS18B20的64位ROM碼的一部分和暫存器存儲器的第9個字節提供。 DS18B20的ROM CRC字節采用48位序列號和8位家族碼(28h)計算。表 1 中的示例使用序列號 04 16 74 8A 15 FF。

格式 CRC-8 (MSB) 序號 家庭代碼
十六進制 72 04 16 74 8安 15 FF 28
二元的 0111 0010 0000 0100 0001 0110 0111 0100 1000 1010 0001 0101 1111 1111 0010 1000

為了計算CRC-8字節,主站使用多項式生成器,如圖5所示。CRC發生器由移位寄存器和XOR門組成,所有移位寄存器位初始化為0。從ROM代碼的最低有效位開始,一次將一位移入移位寄存器。從ROM移入第56位后,多項式發生器包含一個8位CRC值。

poYBAGPppPWAD7a5AACcZOxTCnA644.png?imgver=1

圖5.用于 CRC 的 CRC 發生器 = X8+ X5+ X4+ 1.

有關示例 CRC 字節計算的更多詳細信息 ?

在此示例中,主站根據接收到的 8 位 ROM 代碼計算 CRC-56 字節,從而產生值0x72。主機將計算出的CRC值(0x72)與存儲在DS18B20的ROM (0x72)中的CRC字節進行比較,后者與計算值相同,并確認主站讀數正確。

DS18B20的暫存存儲器CRC字節使用暫存器中的字節0至字節7計算。有關暫存器內存內容的示例,請參閱表 2。

字節 8
CRC 字節
字節 7 字節 6 字節 5 字節 4 字節 3 字節 2 字節 1
溫度 MSB
字節 0
溫度 LSB
0 瓦 1 0 0 攝氏度 F F 7 % 1 8 1 字節 0 5 5 0
0000 0101 0001 0000 0000 1100 1111 1111 0111 1111 0001 1000 0001 1011 0000 0101 0101 0000

從暫存器中字節 0 的最低有效位 (LSB) 開始,一次一個位移入 CRC 發生器的移位寄存器。從暫存器移入第 0 位后,主機將05x8計算為 64 位 CRC 值。

主機將計算值 (0x05) 與暫存器 CRC 字節 (0x05) 進行比較。如果匹配,則大師確認暫存器中的讀數正確。

示例 2:I2使用 PEC 編寫 C/SMBus

溫度閾值寄存器(T這) 用于設置MAX31875的溫度限值。如果MAX31875測得的溫度超過TOS,則配置寄存器顯示過熱狀態。TOS 的上電狀態為 80°C (0x5000),地址0x03。設置 T 的步驟這至95°C (0x5F00),主機寫入MAX31875,如表3所示。

方向 M->S M->S M->S S->M M->S S->M M->S S->M M->S S->M M->S S->M M->S
內容 S 從地址 水利 一個 寄存器地址 一個 數據高 一個 數據低 一個 PEC 字節 一個 P
二元的 1001 000 0 0000 0011 0101 1111 0000 0000 0010 0100

主機使用圖 8 所示的 PEC 生成器計算 PEC-6 字節。從從地址(MSB)的第一位開始,0x90035F00一次移入移位寄存器以計算0x24。

主機向MAX0發送90035x0024F31875并接收ACK,因為0x24與從機產生的PEC字節匹配。如果收到的PEC字節是匹配的,則從站向主站發送ACK。

pYYBAGPppPaAJ1WCAAChAlhjG0U963.png?imgver=1

圖6.用于 CRC 的 PEC 發生器 = X8+ X2+ X1+ 1.

示例 3:I2帶 PEC 的 C/SMBus 讀取

將MAX31875分辨率設置為12位。LSB的值為0.0625°C。 PEC模式開啟時,讀取MAX31875的溫度寄存器值(地址0x00)。MAX31875溫度數據格式為16位,二進制補碼,寄存器以2個字節讀出:上字節和下字節。溫度寄存器位 D[15:3] 包含溫度數據。為了讀取MAX31875的溫度寄存器,主機通過寫命令(0x90)發送從地址,接收ACK位,發送溫度寄存器地址(0x00),并接收ACK位。繼續重復啟動,主機通過讀命令(0x91)發送從地址,接收ACK位,MAX31875發回兩個數據字節值,并附加一個PEC字節。

表4是MAX31875溫度寄存器值23.00°C (0x1700)的主讀數示例。

方向 M->S M->S M->S S->M M->S S->M ... M->S M->S M->S S->M S->M M->S S->M M->S S->M M->S M->S
內容 S 從地址 水利 一個 寄存器地址 一個 1 從地址 研發 一個 數據高 一個 數據低 一個 PEC 字節 N P
二元的 1001 000 0 0000 0011 1001 000 1 0001 0111 0000 0000 0101 1011

在讀取操作期間,MAX31875向主機發送溫度寄存器值(0x1700)和PEC字節(0x5B)。主站使用圖 6 所示的 PEC 生成器計算 PEC 字節。從從地址的MSB開始,0x9000911700一次移入移位寄存器。主機將接收到的PEC字節與PEC發生器計算出的PEC字節進行比較,后者的值相同,并確認溫度寄存器的讀數正確。

結論

通過使用CRC或PEC,主站和從站可以驗證接收到的數據并檢測傳輸錯誤。特別是在多個設備同時連接同一主機的情況下,循環冗余檢查提供了一種有效的錯誤檢查方法。

審核編輯:郭婷

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 傳感器
    +關注

    關注

    2560

    文章

    52064

    瀏覽量

    760759
  • ROM
    ROM
    +關注

    關注

    4

    文章

    577

    瀏覽量

    86747
  • 總線
    +關注

    關注

    10

    文章

    2934

    瀏覽量

    89045
收藏 人收藏

    評論

    相關推薦

    NONOS如何檢查是否實際發送了UDP數據包

    我發現進入深度睡眠通常無法傳輸發送的最后一個 UDP 數據包。我現在將睡眠延遲 30 毫秒,這是一個黑客。 我寧愿有一種方法檢查是否可以休眠,或者以其他方式能夠注冊指示數據包已發送
    發表于 07-12 06:14

    怎么跟蹤每個連接間隔的數據包

    你好,我想知道是否有一種方法跟蹤每個連接間隔發送的數據包的數量。實際使用一個延遲等于我的連接間隔的計時器計算我使用BLE堆棧API推送數據的次數。但我正在尋找其他解決方案。我需要這
    發表于 09-16 06:14

    uart引導加載程序數據包長度無效

    加載程序的例子。我修改的項目支持UART bootloader和它不工作。我收到以下錯誤:“引導程序報告錯誤數據包長度無效:數據包的長度不符合要求的
    發表于 09-26 12:21

    怎樣發送接收一個完整的數據包

    怎樣發送接收一個完整的數據包
    發表于 12-09 06:52

    如何發送音頻/視頻ISOC數據包

    我想開發帶有音頻和/或視頻類的 USB 主機應用程序。是否有任何工作示例項目或代碼片段?我檢查了 STM32 HCD 驅動文件 - -ux_hcd_stam32_periodic_schedule.c,但它總是生成 EP_TYPE_INTR 數據包。如何發送音頻/視頻 I
    發表于 12-26 08:18

    網絡數據包捕獲機制研究

    網絡數據包捕獲技術,是實現入侵檢測、網絡安全審計的關鍵技術。本文改進了國外傳統的數據包捕獲函數庫Libpcap 捕獲數據包的方案。原方案在網卡捕獲到數據包后,
    發表于 09-01 10:09 ?9次下載

    基于Jpcap的數據包捕獲器的設計與實現

    本文研究了以太網數據包的捕獲機制,實現了基于JPcap的網絡數據包捕獲工具,其基本原理是通過調用Jpcap庫捕獲本地網絡上的所有數據包,然后對數據包進行協議解碼,從而可以實
    發表于 01-15 13:47 ?38次下載

    數據包過濾原理

    數據包過濾技術數據包過濾原理              數據包過濾技術是防火墻最常用的技術。對于一
    發表于 06-16 23:44 ?4686次閱讀
    <b class='flag-5'>數據包</b>過濾原理

    什么是數據包

    什么是數據包? 您在互聯網上做的一切都涉及到數據包。例如,接收的每個網頁都以一系列數據包的形式傳入,發送的每封電子郵件都以一系列
    發表于 08-03 09:13 ?2115次閱讀

    ZigBee3.0數據包解析

    ZigBee3.0是ZigBee聯盟推出的可以互聯互通的標準協議,用之前的Packet Sniffer抓包工具是無法解析ZigBee3.0的數據包,因ZigBee3.0的安全機制所有的數據包都是加密
    發表于 02-28 11:48 ?2795次閱讀
    ZigBee3.0<b class='flag-5'>數據包</b>解析

    數據包的發送流程

    一個數據包,從聊天框里發出,消息會從聊天軟件所在的用戶空間拷貝到內核空間的發送緩沖區(send buffer),數據包就這樣順著傳輸層、網絡層,進入到數據鏈路層,在這里數據包會經過流控
    的頭像 發表于 08-19 14:38 ?2834次閱讀

    網絡數據包分析軟件wireshark的基本使用

    Wireshark(前稱Ethereal)是一個網絡數據包分析軟件。網絡數據包分析軟件的功能是截取網絡數據包,并盡可能顯示出最為詳細的網絡數據包數據
    的頭像 發表于 09-29 14:48 ?3344次閱讀

    如何使用數據包錯誤檢查保護溫度讀數

    發表于 11-16 21:01 ?0次下載
    如何使用<b class='flag-5'>數據包</b><b class='flag-5'>錯誤</b><b class='flag-5'>檢查</b><b class='flag-5'>來</b><b class='flag-5'>保護</b><b class='flag-5'>您</b>的<b class='flag-5'>溫度</b><b class='flag-5'>讀數</b>

    虹科分享 | 什么是深度數據包檢測(DPI)

    深度數據包檢測(DPI)是一種分析通過網絡發送的流量的高級方法。DPI使用數據處理檢查數據包的特定細節,作為
    的頭像 發表于 10-13 09:48 ?1934次閱讀
    虹科分享 | 什么是深度<b class='flag-5'>數據包</b>檢測(DPI)

    虹科分享 | 網絡流量監控 | 數據包丟失101

    是我們在線發送或接收的所有內容的構建塊。當下載圖像、發送電子郵件、登錄縮放通話或使用阿里巴巴購物車結賬時,數據包會為所有這些行為提供支持。什么是丟?當一個或多
    的頭像 發表于 03-15 14:15 ?985次閱讀
    虹科分享 | 網絡流量監控 | <b class='flag-5'>數據包</b>丟失101
    主站蜘蛛池模板: 中文在线资源链接天堂 | 精品国产欧美一区二区最新 | 免费艹逼视频 | 免费一看一级毛片全播放 | www.97色| 亚洲一区二区在线视频 | 午夜毛片福利 | 中国一级特黄视频 | 一区不卡在线观看 | 亚洲免费视频一区二区三区 | 久久精品国产精品亚洲精品 | ccc36色影 | 天堂va| 欧美日一区二区三区 | 婷婷sese| 网色视频 | 最新在线视频 | 免费人成年激情视频在线观看 | 中国一级生活片 | 久久频这里精品99香蕉久网址 | 精品视频日本 | 在线观看亚洲天堂 | 欧美色图网站 | vvvv98国产成人综合青青 | 三级黄a| 国产精品欧美激情在线播放 | 成人欧美一区二区三区黑人免费 | 亚洲va中文字幕无码 | 两性色午夜视频免费播放 | 四虎网址大全 | 日韩一级视频 | 亚洲香蕉毛片久久网站老妇人 | 日不卡| 国内真实下药迷j在线观看 国内自拍 亚洲系列 欧美系列 | 久久久精品免费 | 免费a级毛片出奶水 | 天堂电影免费在线观看 | 欧美在线性 | 中文字幕第一页在线 | 天堂最新版资源www在线 | 狠狠躁夜夜躁人人爽天天天天 |