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

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

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

3天內不再提示

關于從I2C接口上的ADC讀取數據及處理方法

星星科技指導員 ? 來源:ADI ? 作者:ADI ? 2023-01-29 15:53 ? 次閱讀

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

介紹

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

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

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

I2C協議一次傳輸1字節的數據。因此,如果感興趣的數據總量超過 8 位并且傳輸處理不當,則可能會出現問題。例如,MAX44000的環境光傳感器(ALS)數據寄存器可以有多達14位數據(加上1位表示溢出,這意味著應增加計數/勒克斯設置)。

表 1.MAX44000 ALS數據寄存器

注冊 B7 B6 B5 B4 B3 B2 B1 B0 注冊地址
ADC 高字節 (ALS) 奧福 數據[13:8] 0x04
模數轉換器低字節 (ALS) 數據[7:0] 0x05

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

pYYBAGPWJpqAV-Y8AAAeK9MruX8058.png


圖1.單字節讀取。

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

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

表 2.故障圖示

poYBAGPWJpSABZ7VAAAp33B8-94257.png

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

poYBAGPWJoiAe5UOAAAat8iuC-Y957.png


圖2.單字節讀取多個樣本的實際讀數。

通過一次讀取 2 個字節可以輕松避免此問題,如圖 3 所示。這是通過在讀取第一個數據字節后發送 REPEAT START 而不是 STOP 條件來完成的,并且實現起來相當簡單。通過讀取2個字節,我們可以防止器件執行更多的I2C寄存器更新,即使我們在兩個器件之間發送相同數量的位。

pYYBAGPWJoCAcoZhAAAZE2lBo9g278.png


圖3.2 字節讀取的圖示。

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

審核編輯:郭婷

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

    關注

    2561

    文章

    52208

    瀏覽量

    761954
  • 寄存器
    +關注

    關注

    31

    文章

    5401

    瀏覽量

    122839
  • adc
    adc
    +關注

    關注

    99

    文章

    6612

    瀏覽量

    547814
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    HDMI信號在Type-c接口上是如何分配的?

    關于Type-c 傳輸HDMI是否有相關案例,資料提供?HDMI信號在Type-c接口上是如何分配的?
    發表于 02-29 08:28

    為什么用Maixpy i2c無法讀取jy901b數據

    Maixpy i2c無法讀取jy901b數據,串口可以讀取數據關于
    發表于 02-24 19:15

    9位1.2 GSPS DDR并行LVDS輸出ADC連續讀取數據的最佳方法是什么

    使用Virtex 7器件從這種ADC讀取數據的最有效方法是什么。我是FPGA編程的初學者,所以不知道使用什么或天氣不好我可以使用GTX / P收發器。任何幫助都表示贊賞,是的,我在這個
    發表于 03-13 06:56

    I2C總線接口模塊設計

    本實驗是基于EasyFPGA030的I2C總線接口模塊設計,用EasyFPGA030開發套件通過I2C協議實現對二線制I2C串行EEPROM的讀寫操作,先把
    發表于 11-02 17:01 ?41次下載

    基于ADJC702x的I2C總線接口設計

    闡明了 I2C總線 的特性,以基于ARM7TDMI 體系結構的新型ADC702x 系列MicroConverter ADC7020 為例子,介紹了內帶I2C
    發表于 06-07 16:56 ?24次下載
    基于ADJC702x的<b class='flag-5'>I2C</b>總線<b class='flag-5'>接口</b>設計

    通過I2C兼容接口讀取ADC數據

    本應用筆記討論了通過I2C兼容接口讀取多字節數據時需要特別注意的地方。介紹了每次讀取一個字節時容易出現的問題,并給出了幾個具體示例。本文也描
    發表于 08-26 22:13 ?935次閱讀
    通過<b class='flag-5'>I2C</b>兼容<b class='flag-5'>接口</b><b class='flag-5'>讀取</b><b class='flag-5'>ADC</b><b class='flag-5'>數據</b>

    I2C設備控制方法的實現

    本文介紹AT91SAM7X256的I2C控制器TWI接口(two-wired interface)的使用方法,并實現AT91SAM7X256對時間數據
    發表于 03-01 10:22 ?4706次閱讀
    <b class='flag-5'>I2C</b>設備控制<b class='flag-5'>方法</b>的實現

    MPU6050+I2C讀取數據+-精簡版

    MPU6050+I2C讀取數據+-精簡版 值得學習
    發表于 11-03 10:28 ?0次下載

    如何將各種串行ADC連接到DSP(TMS320C50)的標準串口上方法

    DSP系統的設計者經常需要重寫他們的接口軟件,當期望的系統性能的增加需要用更高的速度或分辨率的設備替換當前的A到D轉換器。本文介紹了一種將各種串行ADC連接到DSP(TMS320C50)的標準串
    發表于 05-24 14:48 ?8次下載
    如何將各種串行<b class='flag-5'>ADC</b>連接到DSP(TMS320<b class='flag-5'>C</b>50)的標準串<b class='flag-5'>口上</b>的<b class='flag-5'>方法</b>

    LTC2481:帶Easy Drive輸入電流抵消和I2C接口的16位Delta Sigma ADC數據

    LTC2481:帶Easy Drive輸入電流抵消和I2C接口的16位Delta Sigma ADC數據
    發表于 05-24 15:29 ?162次下載
    LTC2481:帶Easy Drive輸入電流抵消和<b class='flag-5'>I</b>2<b class='flag-5'>C</b><b class='flag-5'>接口</b>的16位Delta Sigma <b class='flag-5'>ADC</b><b class='flag-5'>數據</b>表

    EE-204:用于配置I2C?設備的Blackfin?處理器SCCB軟件接口

    EE-204:用于配置I2C?設備的Blackfin?處理器SCCB軟件接口
    發表于 05-27 20:24 ?4次下載
    EE-204:用于配置<b class='flag-5'>I2C</b>?<b class='flag-5'>從</b>設備的Blackfin?<b class='flag-5'>處理</b>器SCCB軟件<b class='flag-5'>接口</b>

    I2C總線讀取MPU6050

    基于MSP430處理器的 I2C總線讀取MPU6050傳感器數據
    發表于 12-06 13:36 ?15次下載
    <b class='flag-5'>I2C</b>總線<b class='flag-5'>讀取</b>MPU6050

    關于I2C接口上ADC讀取數據

    本應用筆記討論了通過I2C兼容接口讀取多字節數據時需要注意的問題。討論了一次讀取一個字節的陷阱,
    的頭像 發表于 04-04 10:59 ?876次閱讀
    <b class='flag-5'>關于</b><b class='flag-5'>從</b><b class='flag-5'>I</b>2<b class='flag-5'>C</b><b class='flag-5'>接口上</b>的<b class='flag-5'>ADC</b><b class='flag-5'>讀取</b><b class='flag-5'>數據</b>

    什么是I3C接口 I3C和SPI接口有什么區別

    I3C接口使用兩根通信線,一根是數據線(SDL),另一根是時鐘線(SCL)。與I2C總線一樣,I3C接口
    的頭像 發表于 03-05 16:50 ?3574次閱讀
    什么是<b class='flag-5'>I3C</b><b class='flag-5'>接口</b> <b class='flag-5'>I3C</b>和SPI<b class='flag-5'>接口</b>有什么區別

    EE-204:Blackfin處理器SCCB軟件接口,用于配置I2C器件

    電子發燒友網站提供《EE-204:Blackfin處理器SCCB軟件接口,用于配置I2C器件.pdf》資料免費下載
    發表于 01-07 14:32 ?0次下載
    EE-204:Blackfin<b class='flag-5'>處理</b>器SCCB軟件<b class='flag-5'>接口</b>,用于配置<b class='flag-5'>I2C</b><b class='flag-5'>從</b>器件
    主站蜘蛛池模板: 性videofree极品另类 | 国产三级日本三级美三级 | 国产盗摄女厕美女嘘嘘 | 亚洲最大的黄色网址 | 成人午夜精品久久久久久久小说 | 国产成人精品三级 | 婷婷激情狠狠综合五月 | 欧美一级片免费在线观看 | 伊人色综合久久天天爱 | 性欧美暴力猛交69hd | 免费久久久久 | 欧美一级视频在线高清观看 | аⅴ天堂 在线 | 亚洲国产成人久久77 | 狠狠色丁香六月色 | 亚洲国产成人在线 | 午夜日本一区二区三区 | 奇米影视四色7777 | 久久五月女厕所一区二区 | 国产精品乳摇在线播放 | 午夜视频免费观看 | 伊人久久大香线蕉资源 | 日本三级在线播放线观看2021 | av2014天堂网| 色视频免费版高清在线观看 | 思思99re66在线精品免费观看 | 久精品视频村上里沙 | 永久免费视频网站在线观看 | 免费一级在线 | 午夜剧场刺激性爽免费视频 | 国产精品vv在线 | 国产一二三区在线观看 | 色五丁香| 欧美日韩中文字幕 | 日韩成人毛片高清视频免费看 | 国产在线观看福利 | 男人你懂的在线观看视频 | 欧美性xxxxxbbbbbb精品 | 男人j进女人j的视频一进一出 | 欧美猛交xxxx乱大交 | 77788色淫网站女女免费视频 |