色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

    文章

    17123

    瀏覽量

    350992
  • 調試
    +關注

    關注

    7

    文章

    578

    瀏覽量

    33923
  • 通訊
    +關注

    關注

    9

    文章

    902

    瀏覽量

    34890
  • 總線
    +關注

    關注

    10

    文章

    2878

    瀏覽量

    88052
  • I2C
    I2C
    +關注

    關注

    28

    文章

    1484

    瀏覽量

    123620
收藏 人收藏

    評論

    相關推薦

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

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

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

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

    I2C地址切換電路

    I2C地址切換電路
    發表于 02-22 11:15 ?1501次閱讀
    <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與模擬I2C

    硬件I2C對應芯片上的I2C外設,有相應I2C驅動電路,其所使用的I2C管腳也是專用的,因而效率要遠高于軟件模擬的I2C;一般也較為穩定,但
    發表于 12-28 19:14 ?81次下載
    硬件<b class='flag-5'>I2C</b>與模擬<b class='flag-5'>I2C</b>

    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 ?1354次閱讀
    如何提高<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 ?6880次閱讀
    <b class='flag-5'>I2C</b>和<b class='flag-5'>I3C</b>的區別有哪些

    i2c采樣是上升沿嗎?

    i2c采樣是上升沿嗎?? I2C采樣是指在I2C總線上對數據進行采樣。在I2C總線上,數據的傳輸是通過2條線傳遞。一條是時鐘線(SCL),另
    的頭像 發表于 09-19 17:16 ?2721次閱讀
    主站蜘蛛池模板: 涩涩电影网| 打卡中国各地奋斗第一线| 久久久无码精品一区二区三区 | 无码日韩人妻精品久久蜜桃入口| brazzers巨臀系列| 不良网站进入窗口软件下载免费 | 国产CHINESE HD精品| 欧美性暴力变态xxxx| 幼儿交1300部一区二区| 国产亚洲欧美在线观看三区| 超碰免费视频在线观看| 免费a毛片| 无码99久热只有精品视频在线| 伊人久久精品AV无码一区| 国产精品久久久久久影院| 免费韩国伦理2017最新| 一二三四电影完整版免费观看| 九九精品视频一区二区三区| 色综合久久88一加勒比| 《乳色吐息》无删减版在线观看 | 高h肉辣文黄蓉| 日本欧美久久久久免费播放网 | 99久久香蕉国产线看观看| 老师破女学生特级毛片| 2019夜夜| 奶头好翘是不是想要了| 999zyz色资源站在线观看| 囯产精品一品二区三区| 色屁屁影院| 国产成人高清视频| 为什么丈夫插我我却喜欢被打着插 | 且试天下芒果免费观看| yellow日本动漫免费观看| 琪琪电影午夜理论片YY6080| 成人免费看片45分钟| 人曽交Z00Z0OA片| 高清大胆欧美videossexo| 玩弄放荡人妻一区二区三区| 国产日韩久久久精品影院首页 | 国产午夜精品理论片久久影视| 亚洲国产在线综合018|