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

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

3天內不再提示

GD32 MCU硬件I2C不可靠不如軟件I2C?來看看紅楓派開發版的硬件I2C驅動如何做到穩得一批

聚沃科技 ? 2024-02-23 09:37 ? 次閱讀

在一個評論中,看到網友對硬件I2C的討論,硬件I2C Busy找不到原因、軟件I2C穩得一批。

那么為什么會出現I2C BUSY?硬件I2C真的不如軟件I2C嗎?怎么讓硬件I2C也穩得一批,讓我們來一探究竟。

首先我們從I2C時序分析下I2C總線掛死是如何產生的。

我們來看下I2C的時序和流程:

wKgZomXX9piAC-JfAABf-fjP0y0517.png

wKgaomXX9p6AdZ9vAABj3Ag6XSg389.png

所以總線掛死可能會有幾個原因:

1、主機信號掛死了:

主機IO口損壞、I2C狀態機異常軟件死機

2、主機程序異常:

I2C通信需要主機來主導,主機軟件本身異常了I2C信號也不會繼續產生。

3、從機拉死了總線:

I2C是線與的,所以從機拉低后總線也掛了,主機無法再次拉高發起新的通信。這種情況一般在信號被干擾時從機丟失clock或者增加了clock導致雙方時序沒對齊,從機還維持住一個發送0 bit的狀態就把SDA拉低了。

首先原因1和2是和程序相關,I2C的狀態機流程較多,自行編寫驅動確實容易出現問題,只要使用成熟驅動就可以。大家可以直接使用紅楓派的I2C驅動就避免這類問題,紅楓派的驅動可靠性不比原廠驅動低,經受RTOS、多中斷、干擾等全方面打擊。

wKgZomXX9qSAORzqAAAowZ6DO9Y088.png

對于原因3,既然是干擾多了clock和少了clock導致從機維持拉低SDA的狀態,那我們補齊clock結束這次異常通信不就可以了?

其實這個方法在最新的I2C協議標準中也有說明,不管I2C當前丟失或增加幾個clcok,我們只要讓主機連續補齊9個clock,在9個clock內時序一定會補齊到ACK環節,此時主機維持SDA高狀態就可以讓這次通信以NACK進行結束,從機自然會釋放總線,這個比強制用推挽模式拉高SDA更安全合理。

那么這個異?;謴驮诩t楓派的驅動里也已經為大家考慮好了,當總線狀態出現異常時,驅動里會自動進行處理恢復總線。

wKgaomXX9qyAeRWWAABEaGqe-dI730.png

那么軟件I2C的弊端在哪里呢?

軟件I2C一般通過IO口控制和延時進行模擬,這意味著整個通信過程會完全依靠并占用CPU,如果我們運行RTOS、或者有高頻中斷就會出現模擬時序過程被打斷,波形會出現頻率變化,波形中途停止等情況,一方面是降低通信效率,另外也可能導致主機沒有在關鍵時間采樣或者輸出數據,出現通信錯誤。

紅楓派開發板上板載了一個I2C的EEPROM,歡迎大家在軟件極其嚴苛、硬件I2C接口隨機進行干擾下驗證例程,體驗下穩得一批的硬件I2C。

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

    關注

    6008

    文章

    44062

    瀏覽量

    622631
  • 嵌入式
    +關注

    關注

    5001

    文章

    18394

    瀏覽量

    291024
  • 硬件
    +關注

    關注

    11

    文章

    2943

    瀏覽量

    65059
  • IIC
    IIC
    +關注

    關注

    11

    文章

    287

    瀏覽量

    37903
  • GD32
    +關注

    關注

    7

    文章

    351

    瀏覽量

    23785
收藏 人收藏

    評論

    相關推薦

    請問STM32硬件I2C存在什么缺陷?

    我看野火的庫函數開發手冊里面感覺用I2C用的挺順的呀 為什么張洋卻說STM32的I2C有缺陷 不推薦用 請問下 各位在使用I2C的時候碰到過什么情況嗎 我怎么都沒感覺到
    發表于 05-16 07:46

    請問數字(硬件)I2C和模擬I2C的優缺點?

    請教哈各位同仁: 1. 數字(硬件)I2C和模擬I2C的優缺點? 2.他們在正常模式下的功耗對比,哪個較好?
    發表于 05-13 06:10

    GD32 MCU硬件I2C不可靠不如軟件I2C?#IIC #MCU #嵌入式開發 #單片機

    單片機mcu
    聚沃科技
    發布于 :2024年02月23日 09:43:01

    最簡單的總線通訊!I2C通訊總線的原理原來這么好懂

    通訊I2C
    安泰儀器維修
    發布于 :2024年01月02日 11:16:31

    時鐘延展導致I2C通信不可靠的解決方案

    ,而 MPEG 解碼芯片為 MASTER節點。在產品調試過程中,發現該通信不可靠。在系統運行段時間后,該通信會出現故障而導致整個系統死機。使用示波器測量,發現這時 I2C 總線的 SCL 信號持續為低電平。
    發表于 09-08 06:58

    全面掌握面試必考題I2C協議 - 第13節

    I2C協議
    充八萬
    發布于 :2023年09月01日 19:08:34

    全面掌握面試必考題I2C協議 - 第12節

    I2C協議
    充八萬
    發布于 :2023年09月01日 19:07:43

    全面掌握面試必考題I2C協議 - 第11節

    I2C協議
    充八萬
    發布于 :2023年09月01日 19:06:53

    全面掌握面試必考題I2C協議 - 第10節

    I2C協議
    充八萬
    發布于 :2023年09月01日 19:06:03

    全面掌握面試必考題I2C協議 - 第7節

    I2C協議
    充八萬
    發布于 :2023年09月01日 19:03:32

    全面掌握面試必考題I2C協議 - 第6節

    I2C協議
    充八萬
    發布于 :2023年09月01日 19:02:42

    80 第23.1講 I2C實驗-I2C協議和6U的I2C控制器詳解 - 第7節 #硬聲創作季

    程序代碼I2C協議
    充八萬
    發布于 :2023年08月17日 10:07:44

    80 第23.1講 I2C實驗-I2C協議和6U的I2C控制器詳解 - 第4節 #硬聲創作季

    程序代碼I2C協議
    充八萬
    發布于 :2023年08月17日 10:05:14

    80 第23.1講 I2C實驗-I2C協議和6U的I2C控制器詳解 - 第3節 #硬聲創作季

    程序代碼I2C協議
    充八萬
    發布于 :2023年08月17日 10:04:23

    80 第23.1講 I2C實驗-I2C協議和6U的I2C控制器詳解 - 第2

    程序代碼I2C協議
    充八萬
    發布于 :2023年08月17日 10:03:33
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>