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

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

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

3天內不再提示

無法讀取I2C地址的調試案例

CHANBAEK ? 來源:硬件系統架構師 ? 作者: Timothy ? 2023-11-02 18:24 ? 次閱讀

引言:調試I2C從器件的第一步就是嘗試去讀它的地址,如果無法讀取地址或者向其發送讀寫命令卻沒有收到ACK回饋,都說明與器件通訊失敗。常規發生無法讀取I2C地址的情況時,第一懷疑點往往是硬件互聯出現問題,本節分享一個和軟件相關的調試案例。

1.問題背景

一枚視頻轉換芯片的I2C連接前端MCU上,調試時發現I2C通訊失敗,同一總線上的另外兩個器件地址均正常。發送讀寫命令波形也沒有ACK反饋,檢查過硬件互聯和Reset配置,均沒有問題。

2.懷疑點和排除過程

總線器件過多

考慮到一個I2C上掛載了三個從器件,分支和節點過多,并且走線也不短,所以懷疑是從器件過多導致Cload過大,無法和遠端通訊成功。于是摘掉和另外兩個器件的互聯電阻,再次嘗試,依然無法通訊,并且測量得到的波形質量并不差,如圖1-所示,我們向地址0X8A發送命令,卻沒有ACK回饋,說明并不是總線負載電容問題。

圖片

圖1-1:向設備發送讀寫命令波形

復位操作

雖然上電后復位Reset就為高電平,但是嘗試在從器件啟動后再復位一次,再嘗試讀取I2C地址,依然無法讀到,側面說明和時序沒有關系。為了驗證無法通訊是不是器件本身的問題,將其與MCU斷開,直接飛線I2C通過盒子連接到上位機,發現可以讀到地址,并且讀寫寄存器均正常,如下圖1-2是邏輯分析儀抓取到的波形圖,有明顯的ACK標志。

圖片

圖1-2:與上位機通訊抓取的讀寫波形

排除掉硬件互聯和引腳配置以及器件本身的問題,那么只有一個問題就是MCU端的I2C參數配置出現問題。

主器件I2C參數

那么主器件I2C涉及哪些參數呢,總線速度100KHz(標準),400KHz(快速),1MHz(超快速)、Data setup Time、Data hold Time等等這些參數可調,如圖1-4抓取上位機和器件通訊成功的波形,測試的Data hold Time大概為560ns,遠遠大于圖1-5器件手冊中的10-250ns,說明手冊中的此參數標注和實際不符,而MCU端I2C配置的是100ns,所以才通訊失敗。

圖片

圖1-3:與上位機通訊波形時間參數測量

圖片
圖1-4:與上位機通訊波形時間參數測量

圖片

圖1-5:器件手冊I2C時間參數

3.如何修正

如表1-5聯系原廠核對修改后的參數,修改主機I2C設置的Data hold time即可。

圖片

圖1-6:更正后的時間參數

4.總結

對于支持不同通訊速率的I2C設備,高速率的往往可以兼容低速率的,比如1MHz-I2C的A器件,它可以接收來自100KHz、400KHz、1MHz的速率信息,但是如果與它互聯的B器件只支持400KHz,那么B只能接收A發送100KHz、400KHz的信息。而100KHz、400KHz、1MHz的時間參數都有差異,在調試時不僅速率要匹配,與速率相關的時間參數也必須修改以保持兼容,因為芯片里面的I2C收發器ADC轉換速率與頻率f息息相關,而ADC轉換速率就決定著這些時間參數。

圖片

圖1-7:I2C主從機基本結構

從圖1-8可以明顯看出,三種速率下的數據保持時間和數據設置時間均有明顯的差異,以上述參數為例,Data hold time實際為560ns,說明器件僅支持到快速模式,但實際設置為100ns,而器件并不能支持這么快的采樣速度,所以無法識別Bit位,因此僅僅保持SCK一致,通訊也會fail。

圖片

圖片

圖1-8:幾種I2C模式的時間參數

另外有的器件支持好幾種系統時鐘(Syetem Clock),這時候其I2C時間參數可能就以System Clcok為單位,而不是直觀的us/ms,如圖1-9所示:

圖片

圖1-9:和系統時間掛鉤的I2C參數

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

    關注

    146

    文章

    17318

    瀏覽量

    352649
  • 調試
    +關注

    關注

    7

    文章

    589

    瀏覽量

    34064
  • 通訊
    +關注

    關注

    9

    文章

    911

    瀏覽量

    35082
  • 總線
    +關注

    關注

    10

    文章

    2903

    瀏覽量

    88395
  • I2C
    I2C
    +關注

    關注

    28

    文章

    1495

    瀏覽量

    124562
收藏 人收藏

    評論

    相關推薦

    MM32F013x上實現I2C地址的功能應用

    I2C中,通信是借助設備地址尋址實現的,大致可以分為兩類:一對多、多對多通信。在多主機通信時,從機如果想接收多個主機的數據,就需要使用到從機多地址的功能。 本文是針對在MM32F013x上實現
    發表于 01-05 11:43 ?2144次閱讀

    I2C地址跳變問題的調試案例

    引言:I2C作為使用最為廣泛的通訊接口,調試各類I2C器件,大家應該都很輕車熟路。一般對于外掛電阻配置器件的I2C地址,例如電阻上拉之后,器
    的頭像 發表于 11-22 10:51 ?1946次閱讀
    <b class='flag-5'>I2C</b><b class='flag-5'>地址</b>跳變問題的<b class='flag-5'>調試</b>案例

    I2C地址切換電路

    I2C地址切換電路
    發表于 02-22 11:15 ?1534次閱讀
    <b class='flag-5'>I2C</b><b class='flag-5'>地址</b>切換電路

    arduino讀取I2C總線上連接設備的地址

    這兩天研究了一下I2C總線,發現有好多I2C設備的地址并不知道,當然有的可以在網上查的到,但是如果遇到用過的I2C器件,設備地址被修改過,那
    發表于 11-23 16:58 ?11.2w次閱讀

    mpu6050對應i2c地址是什么_如何讀取數據

    本文主要介紹了mpu6050對應i2c地址是什么,并通過stm32的硬件讀取mpu6050的數據。MPU6050 的 I2C 地址是 0xD
    發表于 12-11 16:04 ?2.5w次閱讀
    mpu6050對應<b class='flag-5'>i2c</b><b class='flag-5'>地址</b>是什么_如何<b class='flag-5'>讀取</b>數據

    如何將I2C地址左移1位

      I2C總線讀寫中,新人會比較困惑,為什么I2C地址要左移1位?這是i2c協議決定的,i2c地址
    發表于 08-05 17:34 ?4次下載
    如何將<b class='flag-5'>I2C</b>從<b class='flag-5'>地址</b>左移1位

    I2C/SMBus地址轉換器

    I2C/SMBus地址轉換器
    發表于 04-20 10:44 ?5次下載
    <b class='flag-5'>I2C</b>/SMBus<b class='flag-5'>地址</b>轉換器

    嵌入式linux應用讀寫i2c示例

    long arg);cmd有I2C_SLAVE,I2C_SLAVE_FORCE,I2C_TENBIT,I2C_SET_SPEED幾個選項;I2C
    發表于 11-01 16:57 ?12次下載
    嵌入式linux應用讀寫<b class='flag-5'>i2c</b>示例

    I2C總線讀取MPU6050

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

    I2C掃描儀之如何在Arduino上查找I2C地址

    電子發燒友網站提供《I2C掃描儀之如何在Arduino上查找I2C地址.zip》資料免費下載
    發表于 01-31 10:19 ?2次下載
    <b class='flag-5'>I2C</b>掃描儀之如何在Arduino上查找<b class='flag-5'>I2C</b><b class='flag-5'>地址</b>

    如何提高I2C調試效率?

    一般情況下,我們想要調試這類 I2C 器件,都需要先找一塊主控 MCU 板卡,用杜邦線將 I2C 器件連接到板卡上,然后編寫 MCU 代碼,需包含 I2C 軟件驅動以及測試用例,最后將
    發表于 06-08 13:00 ?1501次閱讀
    如何提高<b class='flag-5'>I2C</b><b class='flag-5'>調試</b>效率?

    Android Things I2C地址掃描器

    電子發燒友網站提供《Android Things I2C地址掃描器.zip》資料免費下載
    發表于 06-13 17:02 ?0次下載
    Android Things <b class='flag-5'>I2C</b><b class='flag-5'>地址</b>掃描器

    I2CI3C的區別有哪些

    線。 I2C 傳輸速度最高 3.4MHz,I3C 可以 12.5MHz +。 I3C 向下兼容 I2C,但不兼容 10bit 的 I2C
    的頭像 發表于 07-22 16:20 ?7299次閱讀
    <b class='flag-5'>I2C</b>和<b class='flag-5'>I3C</b>的區別有哪些

    i2c采樣是上升沿嗎?

    i2c采樣是上升沿嗎?? I2C采樣是指在I2C總線上對數據進行采樣。在I2C總線上,數據的傳輸是通過2條線傳遞。一條是時鐘線(SCL),另
    的頭像 發表于 09-19 17:16 ?2910次閱讀

    I2C總線設備地址設置方法

    I2C總線是一種廣泛使用的串行通信協議,它允許多個設備在兩條線上(數據線SDA和時鐘線SCL)進行通信。每個設備都有一個唯一的地址,以確保數據能夠正確地發送到目標設備。 I2C地址概述
    的頭像 發表于 01-17 15:17 ?294次閱讀
    主站蜘蛛池模板: 性色视频在线 | 黄色特级毛片 | 国产成人三级视频在线观看播放 | 午夜女上男下xx00xx00动态 | 午夜网站免费版在线观看 | 日韩美女奶水喂男人在线观看 | 四虎永久在线精品网址 | 色综合欧美| 天天爽爽 | 草色在线| 亚洲一区二区在线视频 | 伊人久久大香线蕉电影院 | 18岁女人毛片 | 国产69精品久久久久9牛牛 | 性做久久久久久免费观看 | 欧美瑟瑟| 精品国产理论在线观看不卡 | 国漫在线观看 | 国内精品久久久久影 | 亚洲日本在线观看视频 | 韩国三级在线不卡播放 | 毛片在线网 | 三级四级特黄在线观看 | 久久99热精品免费观看无卡顿 | 天天做天天爱天天综合网 | 国产免费久久精品99 | 免费在线观看视频网站 | 黄色三级视频网站 | 一区在线观看视频 | 激情五月激情综合 | 啪啪小视频网站 | 日日噜噜夜夜狠狠va视频 | 天天做.天天爱.天天综合网 | 国产精品三级a三级三级午夜 | 涩狠狠狠狠色 | 欧美一区二区影院 | 欧美黑人换爱交换乱理伦片 | 天天摸夜夜摸爽爽狠狠婷婷97 | 国产日韩精品一区二区在线观看 | 生活片一级性 | 老色批午夜免费视频网站 |