哈哈哈哈哈操欧洲电影,久草网在线,亚洲久久熟女熟妇视频,麻豆精品色,久久福利在线视频,日韩中文字幕的,淫乱毛视频一区,亚洲成人一二三,中文人妻日韩精品电影

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

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

3天內不再提示

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

電子設計 ? 來源:eeweb ? 作者:Maxim ? 2021-04-21 13:46 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

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

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

通過1字節(jié)通道傳輸2字節(jié)數據

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

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

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

pIYBAGB_u9aAex7SAAAdMdS59uw910.png

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

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

o4YBAGB_u-KAberfAABWLVjuLOg334.png

單字節(jié)讀取。

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

pIYBAGB_u_GAfbomAAAe7_MfcV4018.png

單字節(jié)的實際讀數可讀取許多樣本。

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

o4YBAGB_u_6AbDSJAAAUjZ-GVh8882.png

2字節(jié)讀取的插圖。

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

編輯:hfy

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

    關注

    49

    文章

    8833

    瀏覽量

    165609
  • 寄存器
    +關注

    關注

    31

    文章

    5618

    瀏覽量

    130389
  • 模數轉換器
    +關注

    關注

    26

    文章

    4099

    瀏覽量

    130252
  • 時鐘系統(tǒng)

    關注

    1

    文章

    133

    瀏覽量

    13010
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    量水堰計是如何實現(xiàn)數據傳輸和遠程監(jiān)控的?

    現(xiàn)代磁致式量水堰計依托成熟的物聯(lián)網技術,已能夠實現(xiàn)高效可靠的數據傳輸與遠程監(jiān)控。其核心架構通常分為現(xiàn)場數據采集、數據傳輸與云端管理三個層面,共同構成完整的遠程監(jiān)測系統(tǒng)。在數據采集端,量
    的頭像 發(fā)表于 04-17 14:29 ?82次閱讀
    量水堰計是如何實現(xiàn)<b class='flag-5'>數據傳輸</b>和遠程監(jiān)控的?

    天碩(TOPSSD)技術深解:TBW(總寫入字節(jié)數)的工程實現(xiàn)

    在評估工業(yè)嵌入式存儲設備能否勝任長達數年的持續(xù)運行任務時,TBW(總寫入字節(jié)數)是比接口速度更為關鍵的量化指標。它直接回答了“這塊硬盤在退役前,總共能安全寫入多少數據?”這一根本問題。對于軌道交通日志記錄、工業(yè)視頻流存儲等高寫入
    的頭像 發(fā)表于 02-10 14:49 ?288次閱讀
    天碩(TOPSSD)技術深解:TBW(總寫入<b class='flag-5'>字節(jié)數</b>)的工程實現(xiàn)

    I2C的總線協(xié)議

    決定數據通信的發(fā)端和收端,發(fā)端每發(fā)送 1 個字節(jié)數據,收端必須回應 1 個 ACK 應答信號。數據傳輸完成后,主機發(fā)送 STOP 信號結束本次通信。
    發(fā)表于 12-15 08:07

    CW32單片機I2C接口來讀寫EEPROM芯片

    。此后根據主機發(fā)送的第 1 字 節(jié)的 W/R 位來決定數據通信的發(fā)端和收端,發(fā)端每發(fā)送 1個字節(jié)數據,收端必須回應 1個ACK 應答信號。數據傳輸完成后,主機發(fā)送 STOP 信號結束本次通信。 2.
    發(fā)表于 12-09 07:43

    多通道數據傳輸終端 LoRa/LTE雙模通信終端

    數據傳輸
    穩(wěn)控自動化
    發(fā)布于 :2025年10月24日 13:57:21

    使用fal api 來讀寫1024 字節(jié)數據,需要需要考慮被高優(yōu)先級線程打斷嗎?

    使用fal api 來讀寫1024 字節(jié)數據,需要需要考慮被高優(yōu)先級線程打斷嗎?
    發(fā)表于 10-10 07:16

    為什么rt_device_read()只能讀取到兩個字節(jié)數據

    已經確定了設備每次會發(fā)送9字節(jié)數據,但是每次都只能讀取到兩字節(jié)數據,而且串口的配置都沒問題 /* 接收數據回調函數 */ static rt_err_t uart_rx_ind
    發(fā)表于 09-17 06:24

    嵌入式接口通識知識之I2C接口

    時候SDA數據線才允許高電平或者低電平變化。每傳送一個數據位產生一個時鐘。在數據傳輸時,SDA線上面的每個字節(jié)數據長度必須是8位。每次傳輸
    發(fā)表于 08-14 14:46

    基于FPGA的USB數據傳輸

    你也許會有疑問,明明有這么多通信方式和數據傳輸(SPI、I2C、UART、以太網)為什么偏偏使用USB呢?
    的頭像 發(fā)表于 08-06 14:47 ?5056次閱讀
    基于FPGA的USB<b class='flag-5'>數據傳輸</b>

    數據傳輸卡頓?工控一體機接口兼容性問題與線纜選型聚徽全解析

    在工業(yè)自動化領域,工控一體機承擔著數據采集、處理與傳輸的重要任務,其數據傳輸的流暢性直接關系到生產系統(tǒng)的穩(wěn)定性與效率。然而,數據傳輸卡頓的現(xiàn)象卻時常出現(xiàn),這背后,
    的頭像 發(fā)表于 07-02 10:30 ?1177次閱讀

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

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

    像這樣一款體積小巧的DTU數據傳輸終端你見過嗎?

    數據傳輸
    才茂通信
    發(fā)布于 :2025年06月04日 14:33:29

    SPI數據傳輸緩慢問題求解

    我遇到了 SPI 數據傳輸速率問題。 盡管將 SPI 時鐘頻率設置為 20 MHz,但我只獲得了 2 Kbps 的數據傳輸速率。 我正在以 115200 的波特率通過 UART 監(jiān)控數據。 我正在 cyfxusbspidmamo
    發(fā)表于 05-15 08:29

    使用CyU3PDmaChannelCommitBuffer提交超過1024字節(jié)數據時usb包異常大怎么解決?

    你好,我正在嘗試使用fx3實現(xiàn)USB3Vision設備,但是當我使用CyU3PDmaChannelCommitBuffer函數提交超過1024字節(jié)數據時,主機獲取到的USB數據包變得非常大
    發(fā)表于 05-13 06:11

    【RA-Eco-RA4M2開發(fā)板評測】I2C讀取EEPROM(一)

    限制。當主機希望停止接收數據時,就向從機返回一個非應答信號,則從機自動停止數據傳輸。 2 RA4M2 的I2C架構及特性 瑞薩 RA4M2有兩個I2C通道,
    發(fā)表于 04-28 23:13
    库车县| 微山县| 枞阳县| 浠水县| 仙桃市| 灌南县| 双城市| 介休市| 西宁市| 南充市| 乳山市| 广宗县| 秦安县| 郴州市| 来安县| 青铜峡市| 偏关县| 乌鲁木齐市| 全南县| 武安市| 绵竹市| 杭州市| 紫阳县| 济南市| 轮台县| 枣庄市| 泽州县| 安宁市| 通化市| 筠连县| 鄂托克前旗| 望谟县| 陵川县| 万年县| 浪卡子县| 神农架林区| 镶黄旗| 南召县| 瑞丽市| 固安县| 天台县|