精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

3天內不再提示

淺談I2C兼容接口讀取多字節數據時數據傳輸方法

電子設計 ? 來源:eeweb ? 作者:Maxim ? 2021-04-21 13:46 ? 次閱讀

本應用筆記討論了通過I2C兼容接口讀取多字節數據時的注意事項。討論了一次讀取一個字節的陷阱,并給出了一些具體示例。本文還介紹了處理此類數據傳輸的正確方法。**

I2C嵌入式系統中使用的串行數據傳輸協議之一。它用于將低速外圍設備連接到嵌入式微處理器。它還用于中低數據速率通信。EPROM實時時鐘系統存儲設備,遠程溫度傳感器和I / O端口擴展器是慢速外圍設備的一些示例。

兼容I2C的兩線式接口是一種強大的機制,可用于將微控制器或微處理器與低速外圍設備接口,例如具有集成模數轉換器ADC)的外圍設備。通過該總線進行通信的最基本形式(即一次向/從從寄存器寫入/讀取單個字節)非常簡單。但是,為簡單起見,將自己限制在這種方法上存在一些陷阱。

通過1字節通道傳輸2字節數據

與其他任何與外圍設備(尤其是傳感器)的數字接口一樣,我們需要從設備的內部寄存器中讀取正確的數據。當寄存器的數據在讀取過程中發生變化時,這一點尤其重要。如果在數據傳輸時ADC運行其轉換或更新寄存器,則數據可能會發生變化。許多設備具有內部緩沖區(通常不能從外部訪問),該緩沖區包含轉換的最新結果。當沒有I2C活動時,設備使用新數據更新所謂的“客戶可訪問”寄存器。

I2C協議一次傳輸1個字節的數據。因此,如果感興趣的總量數據長于8位并且傳輸處理不正確,則可能會出現問題。例如,MAX44000的環境光傳感器(ALS)數據寄存器最多可包含14位數據(加上1位表示溢出,這意味著應增加計數/照度設置)。

我們無法直接通過I2C讀取所有ALSDATA [13:0],因此我們必須首先讀取寄存器0x04的內容,然后讀取寄存器0x05的內容,并將數據連接到至少一個16位寄存器中。但是,我們必須注意如何讀取此數據。可以簡單地執行兩個以STOP(P)條件終止的單次讀取,如圖1所示。

pIYBAGB_u9aAex7SAAAdMdS59uw910.png

這種方法有一個致命的缺陷。具體來說,發送STOP條件會向器件發出信號,要求其返回以更新“客戶可見”寄存器。因此,從寄存器0x04獲取數據后,實際上14位數據可以在讀取寄存器0x05之前進行更新。在某些情況下,此缺陷可能會造成災難性的后果。

一個例子是,如果光照水平在一定水平,MAX44000環境光傳感器處于10位,12位或14位模式。假設電平徘徊在某個區域內,則寄存器0x04和0x05中的14位計數總計為255或256,這可能是由于光線緩慢增加或少量噪聲引起的。考慮圖2所示表中的三種情況。

o4YBAGB_u-KAberfAABWLVjuLOg334.png

單字節讀取。

在最后兩種情況下,我們讀取0或511,而不是讀取255或256。這是一個很大的問題。發生這種情況的原因是在發送STOP條件之后,在第一次讀取和第二次讀取之間更新了寄存器0x04和0x05中的數據。在第一種有問題的情況下,正確讀取了第一個字節。但是到讀取第二個字節時,數據讀取的總數為256,其中最低字節為零。因此,我們從該設備獲得零讀數。在第二個有問題的情況下,數據也總計為256個計數。由于在發送STOP條件之后但在讀取第二個字節之前數據減少了一個計數,因此該計數似乎變為511個計數。有關在多次讀取中發生這種情況的次數的示例,請參見圖3。

pIYBAGB_u_GAfbomAAAe7_MfcV4018.png

單字節的實際讀數可讀取許多樣本。

如圖4所示,通過一次讀取2個字節可以輕松避免此問題,這是通過在讀取第一個數據字節之后發送REPEATED START而不是STOP條件來完成的,并且非常容易實現。通過讀取2個字節,即使我們在兩個器件之間總體上發送了相同數量的位,也阻止了該部分執行更多的I2C寄存器更新。

o4YBAGB_u_6AbDSJAAAUjZ-GVh8882.png

2字節讀取的插圖。

上面的例子適用于MAX44000和MAX44009,它們在進行多次讀取時不會自動遞增寄存器指針。您的設備的行為可能有所不同,但是原理始終相同。這很容易擴展為讀取N個字節。

編輯:hfy

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

    關注

    48

    文章

    7496

    瀏覽量

    151085
  • 寄存器
    +關注

    關注

    31

    文章

    5325

    瀏覽量

    120052
  • 模數轉換器
    +關注

    關注

    26

    文章

    3144

    瀏覽量

    126747
  • 時鐘系統
    +關注

    關注

    1

    文章

    99

    瀏覽量

    11707
收藏 人收藏

    評論

    相關推薦

    Micro USB接口數據傳輸速率分析

    Micro USB接口數據傳輸速率分析,可以從以下幾個方面進行: 一、Micro USB版本與傳輸速率 Micro USB接口存在不同的版本,主要包括Micro USB 2.0和Mi
    的頭像 發表于 11-27 10:05 ?68次閱讀

    波特率對實時數據傳輸的影響

    在現代通信系統中,實時數據傳輸是至關重要的。無論是工業自動化、遠程醫療、在線游戲還是物聯網(IoT)應用,都需要快速、可靠的數據傳輸來保證系統的正常運行和用戶體驗。 波特率的定義 波特率,也稱為符號
    的頭像 發表于 11-22 10:03 ?135次閱讀

    LORA模塊的數據傳輸速率

    LoRa(Long Range)是一種用于物聯網(IoT)應用的低功耗廣域網(LPWAN)技術。它以其長距離通信能力和低功耗特性而聞名。LoRa模塊的數據傳輸速率可以根據不同的配置和地區的規定
    的頭像 發表于 10-31 17:03 ?605次閱讀

    是德萬用表USB 接口數據傳輸

    在現代電子測量領域,數據傳輸界面技術的發展日新月異,已成為電子測量設備中不可或缺的一部分。是德公司作為電子測量領域的領導者,其萬用表產品也配備了多種數據傳輸接口,包括USB接口。USB
    的頭像 發表于 10-22 16:56 ?181次閱讀
    是德萬用表USB <b class='flag-5'>接口</b><b class='flag-5'>數據傳輸</b>

    網絡數據傳輸速率的單位是什么

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

    高速串行總線,數據傳輸離不開它!#高速串行總線 #電路知識 #數據傳輸

    電路數據傳輸
    安泰儀器維修
    發布于 :2024年08月20日 15:42:00

    邊OTG邊充電芯片如何實現充電與數據傳輸并行?

    邊OTG邊充電芯片實現充電與數據傳輸并行的功能,主要依賴于其內部的設計和與USB Type-C接口標準的結合。
    的頭像 發表于 07-14 10:35 ?518次閱讀

    以太網接口數據傳輸原理詳解

    以太網接口作為計算機網絡中的關鍵組成部分,承擔著數據傳輸的重要職責。在了解以太網接口數據傳輸原理之前,我們首先需要明確以太網的基本概念和工作機制。以太網是一種廣泛應用的局域網技術,它
    的頭像 發表于 05-29 16:47 ?1517次閱讀

    Android14在BLE中,當MTU超過517字節時應如何處理數據傳輸?

    /behavior-changes-all#mtu-set-to-517 我們在應用更改后進行了測試,但遇到了無法傳輸超過 512 字節數據的問題。 由于客戶的工作數據通常超過 512 字節
    發表于 05-28 06:41

    如何在AURIX TC375控制器中向DFLASH存儲器寫入單字節數據?

    我可以使用頁面地址在 DFLASH 存儲器中寫入 8 字節數據。 我需要在任意內存地址寫入一個字節數據。 是否可以在任何內存地址位置寫入單字節數據?
    發表于 05-27 07:03

    3針M5公頭接口速度和數據傳輸效率怎樣

      德索工程師說道在電子設備和系統的連接與通信中,接口的速度和數據傳輸效率是衡量其性能的重要指標。3針M5公頭接口作為一種常見的連接標準,其速度與數據傳輸效率直接影響到設備的性能和使用
    的頭像 發表于 05-13 17:46 ?344次閱讀
    3針M5公頭<b class='flag-5'>接口</b>速度和<b class='flag-5'>數據傳輸</b>效率怎樣

    請問NFC數據傳輸如何保證數據安全?

    NFC數據傳輸如何保證數據安全
    發表于 04-07 06:18

    串口數據傳輸共用體與結構體之間的轉換技巧

    如果我們從串口接收到4個字節數據{0x43,0x67,0x80,0x00},如何把這4個字節數據轉換為float型呢?
    的頭像 發表于 03-22 12:28 ?667次閱讀
    串口<b class='flag-5'>數據傳輸</b>共用體與結構體之間的轉換技巧

    can總線的數據幀中數據長度碼和數據字節數的關系?

    can總線的數據幀中數據長度碼和數據字節數的關系? CAN總線是一種常用于數據通信的協議,它使用數據幀來
    的頭像 發表于 01-31 11:31 ?2206次閱讀

    使用ADXL345的FIFO采集數據,讀上來的數據不正確怎么解決?

    是正確的,后面的數據都基本為0x00。 我使用的是4線SPI協議,讀取算法如下,請指教。 1、ADXL345片選設為0 2、發送0xF2,多字節讀取+data0地址 3、
    發表于 12-25 08:28