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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

硬件I2C控制器保持穩(wěn)定需要哪些條件呢

冬至配餃子 ? 來(lái)源:TopSemic嵌入式 ? 作者:TopSemic ? 2022-08-15 17:24 ? 次閱讀

EEPROM可以掉電保存數(shù)據(jù),是一種在產(chǎn)品中經(jīng)常使用的器件,24Cxx 系列更是被廣泛采用。文章附件的工程在 24LC02 上調(diào)試通過(guò),實(shí)現(xiàn)了字節(jié)讀寫(xiě)和頁(yè)讀寫(xiě)。MCUSTM32F030。采用了 MCU 的硬 I2C 控制器。24LC02硬件連接:A2,A1,A0 接 GND, 地址為 A0。WP 接 GND,允許寫(xiě)入。24LC02 Page size 是 8 Bytes, 一共 256 個(gè)字節(jié)大小。如果要移植代碼到其它芯片,需要注意 Page size 和頁(yè)地址的不同。

pYYBAGL6D_2AI1KcAAD7jHiwlWI294.png

網(wǎng)上有很多抱怨使用硬件 I2C 控制器不穩(wěn)定,常常死機(jī),所以轉(zhuǎn)而采用 GPIO 模擬 I2C 時(shí)序的同學(xué)。我們還是不推薦用模擬的方法,它會(huì)耗費(fèi)比較多的MCU 系統(tǒng)時(shí)間。硬件 I2C 其實(shí)也是可以穩(wěn)定運(yùn)行的,需要注意以下幾點(diǎn):

1. 看一下芯片勘誤表 Errata,有沒(méi)有已知 Bug。

2. I2C 操作中途被打斷,或受到脈沖干擾,SCL, SDA 可能被拉低鎖死。嘗試用 SCL 產(chǎn)生 9 個(gè)時(shí)鐘脈沖讓從器件或主控制器釋放總線(xiàn)。這種方法可以解決掉絕大部分問(wèn)題。這里需要注意,拉低總線(xiàn)的并不一定是從器件,有客戶(hù)在總線(xiàn)鎖死后,把 SCL SDA 線(xiàn)割斷后發(fā)現(xiàn)這兩根線(xiàn)任然是拉低的(主控制器模塊因?yàn)闀r(shí)序問(wèn)題進(jìn)入死鎖)。

3. 總線(xiàn)上加具有總線(xiàn)恢復(fù)功能的緩沖器,如 LTC4307。

4. 選用帶復(fù)位輸人的 I2C 從器件。5. 控制 I2C 從設(shè)備的電源,死鎖后重新上電。采用哪些方法,還是要綜合考慮可靠性要求和成本。

下面是實(shí)測(cè)的 24C02 讀寫(xiě)時(shí)序:

Byte Write

pYYBAGL6EB6APaDFAABv2L74gHw400.png

Byte Read

pYYBAGL6EDGAc6DdAAB42WphtR0205.png

Page Write

poYBAGL6EESAYuEHAAB5EWDYjNY381.png

Page Read

poYBAGL6EF2ARUmEAACDxavnWb4351.png


審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • EEPROM
    +關(guān)注

    關(guān)注

    9

    文章

    1008

    瀏覽量

    81245
  • I2C控制器
    +關(guān)注

    關(guān)注

    0

    文章

    6

    瀏覽量

    6968
  • STM32F030
    +關(guān)注

    關(guān)注

    1

    文章

    33

    瀏覽量

    6600
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    I2C總線(xiàn)的電路設(shè)計(jì)

      I2C協(xié)議已經(jīng)用了很多了,但是,在硬件設(shè)計(jì)方面,基本也是只會(huì)抄抄電路,并沒(méi)有理解其中的原理和細(xì)節(jié)。這一章我們具體要說(shuō)說(shuō)需要怎么設(shè)計(jì)I2C
    發(fā)表于 07-27 16:51 ?1.1w次閱讀
    <b class='flag-5'>I2C</b>總線(xiàn)的電路設(shè)計(jì)

    實(shí)現(xiàn)I2C總線(xiàn)控制器的VHDL源代碼

    I2C總線(xiàn)控制器 altera提供 The I2C Controller was designed for the MC68307 uC, provides a simplified
    發(fā)表于 05-20 10:25 ?251次下載

    LM3S系列微控制器I2C應(yīng)用文檔

    LM3S系列微控制器I2C應(yīng)用文檔基于LM5749的I2C從機(jī)功能,模擬24C02傳輸協(xié)議操作。
    發(fā)表于 04-03 14:29 ?52次下載

    I2C總線(xiàn)在Linux系統(tǒng)中的驅(qū)動(dòng)設(shè)計(jì)

    介紹I2C總線(xiàn)的基本概念和工作原理,敘述I2C總線(xiàn)擴(kuò)展器件ZLG7290的功能特點(diǎn)。在以S3C2410為微控制器,ZLG7290為I2C總線(xiàn)
    發(fā)表于 12-29 16:52 ?40次下載

    I2C控制lP在成像系統(tǒng)中的應(yīng)用

    1 IP的硬件結(jié)構(gòu)及寄存 1.1 IP硬件結(jié)構(gòu) IP內(nèi)部結(jié)構(gòu)如圖1所示。主要由波特率時(shí)鐘寄存、寄存
    發(fā)表于 07-01 09:10 ?1378次閱讀
    <b class='flag-5'>I2C</b><b class='flag-5'>控制</b>lP在成像系統(tǒng)中的應(yīng)用

    基于Verilog的I2C控制器的設(shè)計(jì)與綜合

    為滿(mǎn)足嵌入式系統(tǒng)中專(zhuān)用芯片功能不能達(dá)到系統(tǒng)要求的現(xiàn)狀,設(shè)計(jì)出一種功能可擴(kuò)展的I2C slave控制器,這種控制器與傳統(tǒng)的專(zhuān)用I2C芯片不同。專(zhuān)用的I
    發(fā)表于 10-25 16:58 ?60次下載
    基于Verilog的<b class='flag-5'>I2C</b><b class='flag-5'>控制器</b>的設(shè)計(jì)與綜合

    Firefly-RK3128主板I2C控制器

    Firefly-RK3128 開(kāi)發(fā)板上有 4 個(gè)片上 I2C 控制器。本文主要描述如何在該開(kāi)發(fā)板上配置 I2C。
    的頭像 發(fā)表于 11-29 08:47 ?1399次閱讀
    Firefly-RK3128主板<b class='flag-5'>I2C</b><b class='flag-5'>控制器</b>

    i2c總線(xiàn)用來(lái)做什么_i2c總線(xiàn)數(shù)據(jù)傳輸過(guò)程

    I2C總線(xiàn)控制器為微控制器或微處理提供控制I2C總線(xiàn)的接口,它
    發(fā)表于 11-24 14:16 ?7176次閱讀

    嵌入式內(nèi)核及驅(qū)動(dòng)開(kāi)發(fā)-09IIC子系統(tǒng)框架使用(I2C協(xié)議和時(shí)序,I2C驅(qū)動(dòng)框架,I2C從設(shè)備驅(qū)動(dòng)開(kāi)發(fā),MPU6050硬件連接

    從設(shè)備adapter i2c 控制器對(duì)象數(shù)據(jù)包對(duì)象讀寫(xiě)數(shù)據(jù)設(shè)備樹(shù)中添加MPU6050信息內(nèi)核選配添加設(shè)備樹(shù)節(jié)點(diǎn)編寫(xiě)驅(qū)動(dòng)程序 mpu6050_i2c_drv.cI2c協(xié)議和時(shí)序I2c介紹
    發(fā)表于 12-06 14:06 ?17次下載
    嵌入式內(nèi)核及驅(qū)動(dòng)開(kāi)發(fā)-09IIC子系統(tǒng)框架使用(<b class='flag-5'>I2C</b>協(xié)議和時(shí)序,<b class='flag-5'>I2C</b>驅(qū)動(dòng)框架,<b class='flag-5'>I2C</b>從設(shè)備驅(qū)動(dòng)開(kāi)發(fā),MPU6050<b class='flag-5'>硬件</b>連接

    硬件I2C與模擬I2C

    硬件I2C對(duì)應(yīng)芯片上的I2C外設(shè),有相應(yīng)I2C驅(qū)動(dòng)電路,其所使用的I2C管腳也是專(zhuān)用的,因而效率要遠(yuǎn)高于軟件模擬的
    發(fā)表于 12-28 19:14 ?81次下載
    <b class='flag-5'>硬件</b><b class='flag-5'>I2C</b>與模擬<b class='flag-5'>I2C</b>

    兩個(gè)PS I2C控制器的回環(huán)測(cè)試

    I2C 總線(xiàn)的兩根信號(hào)線(xiàn) SCL 和 SDA 需要上拉才能正常工作,當(dāng)板卡上沒(méi)有合適的硬件設(shè)置或者沒(méi)有合適的 I2Cslave 設(shè)備,我們就無(wú)法進(jìn)行
    的頭像 發(fā)表于 04-13 08:35 ?2273次閱讀

    如何在Versal平臺(tái)實(shí)現(xiàn)兩個(gè)PS I2C控制器的回環(huán)

    I2C 總線(xiàn)的兩根信號(hào)線(xiàn) SCL 和 SDA 需要上拉才能正常工作,當(dāng)板卡上沒(méi)有合適的硬件設(shè)置或者沒(méi)有合適的 I2Cslave 設(shè)備,我們就無(wú)法進(jìn)行
    發(fā)表于 08-02 09:23 ?537次閱讀
    如何在Versal平臺(tái)實(shí)現(xiàn)兩個(gè)PS <b class='flag-5'>I2C</b><b class='flag-5'>控制器</b>的回環(huán)

    I2C控制器驅(qū)動(dòng)介紹

    控制器驅(qū)動(dòng) I2C 總線(xiàn)驅(qū)動(dòng)重點(diǎn)是 I2C 適配器驅(qū)動(dòng),這里要用到兩個(gè)重要的數(shù)據(jù)結(jié)構(gòu):i2c_adapter 和 i2c_algorithm
    的頭像 發(fā)表于 07-22 15:38 ?1335次閱讀
    <b class='flag-5'>I2C</b><b class='flag-5'>控制器</b>驅(qū)動(dòng)介紹

    如何保持寬電壓輸入而供電電流能夠保持穩(wěn)定

    如何保持寬電壓輸入而供電電流能夠保持穩(wěn)定? 保持寬電壓輸入,同時(shí)保持穩(wěn)定的電流是各種電子設(shè)備設(shè)計(jì)中需要
    的頭像 發(fā)表于 10-26 11:38 ?851次閱讀

    stm32 I2c硬件驅(qū)動(dòng)程序不穩(wěn)定該怎么解決?

    硬件問(wèn)題: a. 電源問(wèn)題:I2C 總線(xiàn)需要穩(wěn)定的電源供應(yīng)。如果電源波動(dòng)較大,會(huì)導(dǎo)致通信錯(cuò)誤。解決方法是檢查電源供應(yīng),并確保其穩(wěn)定。 b.
    的頭像 發(fā)表于 01-16 17:11 ?2572次閱讀