0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

硬件I2C控制器保持稳定需要哪些条件呢

冬至配饺子 来源:TopSemic嵌入式 作者:TopSemic 2022-08-15 17:24 次阅读

EEPROM可以掉电保存数据,是一种在产品中经常使用的器件,24Cxx 系列更是被广泛采用。文章附件的工程在 24LC02 上调试通过,实现了字节读写和页读写。MCUSTM32F030。采用了 MCU 的硬 I2C 控制器。24LC02硬件连接:A2,A1,A0 接 GND, 地址为 A0。WP 接 GND,允许写入。24LC02 Page size 是 8 Bytes, 一共 256 个字节大小。如果要移植代码到其它芯片,需要注意 Page size 和页地址的不同。

pYYBAGL6D_2AI1KcAAD7jHiwlWI294.png

网上有很多抱怨使用硬件 I2C 控制器不稳定,常常死机,所以转而采用 GPIO 模拟 I2C 时序的同学。我们还是不推荐用模拟的方法,它会耗费比较多的MCU 系统时间。硬件 I2C 其实也是可以稳定运行的,需要注意以下几点:

1. 看一下芯片勘误表 Errata,有没有已知 Bug。

2. I2C 操作中途被打断,或受到脉冲干扰,SCL, SDA 可能被拉低锁死。尝试用 SCL 产生 9 个时钟脉冲让从器件或主控制器释放总线。这种方法可以解决掉绝大部分问题。这里需要注意,拉低总线的并不一定是从器件,有客户在总线锁死后,把 SCL SDA 线割断后发现这两根线任然是拉低的(主控制器模块因为时序问题进入死锁)。

3. 总线上加具有总线恢复功能的缓冲器,如 LTC4307。

4. 选用带复位输人的 I2C 从器件。5. 控制 I2C 从设备的电源,死锁后重新上电。采用哪些方法,还是要综合考虑可靠性要求和成本。

下面是实测的 24C02 读写时序:

Byte Write

pYYBAGL6EB6APaDFAABv2L74gHw400.png

Byte Read

pYYBAGL6EDGAc6DdAAB42WphtR0205.png

Page Write

poYBAGL6EESAYuEHAAB5EWDYjNY381.png

Page Read

poYBAGL6EF2ARUmEAACDxavnWb4351.png


审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • EEPROM
    +关注

    关注

    9

    文章

    1010

    浏览量

    81395
  • I2C控制器
    +关注

    关注

    0

    文章

    6

    浏览量

    6975
  • STM32F030
    +关注

    关注

    1

    文章

    33

    浏览量

    6626
收藏 人收藏

    评论

    相关推荐

    I2C总线的电路设计

      I2C协议已经用了很多了,但是,在硬件设计方面,基本也是只会抄抄电路,并没有理解其中的原理和细节。这一章我们具体要说说需要怎么设计I2C
    发表于 07-27 16:51 1.1w次阅读
    <b class='flag-5'>I2C</b>总线的电路设计

    实现I2C总线控制器的VHDL源代码

    I2C总线控制器 altera提供 The I2C Controller was designed for the MC68307 uC, provides a simplified
    发表于 05-20 10:25 251次下载

    LM3S系列微控制器I2C应用文档

    LM3S系列微控制器I2C应用文档基于LM5749的I2C从机功能,模拟24C02传输协议操作。
    发表于 04-03 14:29 52次下载

    I2C总线在Linux系统中的驱动设计

    介绍I2C总线的基本概念和工作原理,叙述I2C总线扩展器件ZLG7290的功能特点。在以S3C2410为微控制器,ZLG7290为I2C总线
    发表于 12-29 16:52 40次下载

    I2C控制lP在成像系统中的应用

    1 IP的硬件结构及寄存 1.1 IP硬件结构 IP内部结构如图1所示。主要由波特率时钟寄存、寄存
    发表于 07-01 09:10 1400次阅读
    <b class='flag-5'>I2C</b><b class='flag-5'>控制</b>lP在成像系统中的应用

    基于Verilog的I2C控制器的设计与综合

    为满足嵌入式系统中专用芯片功能不能达到系统要求的现状,设计出一种功能可扩展的I2C slave控制器,这种控制器与传统的专用I2C芯片不同。专用的I
    发表于 10-25 16:58 60次下载
    基于Verilog的<b class='flag-5'>I2C</b><b class='flag-5'>控制器</b>的设计与综合

    Firefly-RK3128主板I2C控制器

    Firefly-RK3128 开发板上有 4 个片上 I2C 控制器。本文主要描述如何在该开发板上配置 I2C
    的头像 发表于 11-29 08:47 1430次阅读
    Firefly-RK3128主板<b class='flag-5'>I2C</b><b class='flag-5'>控制器</b>

    i2c总线用来做什么_i2c总线数据传输过程

    I2C总线控制器为微控制器或微处理提供控制I2C总线的接口,它
    发表于 11-24 14:16 7217次阅读

    嵌入式内核及驱动开发-09IIC子系统框架使用(I2C协议和时序,I2C驱动框架,I2C从设备驱动开发,MPU6050硬件连接

    从设备adapter i2c 控制器对象数据包对象读写数据设备树中添加MPU6050信息内核选配添加设备树节点编写驱动程序 mpu6050_i2c_drv.cI2c协议和时序I2c介绍
    发表于 12-06 14:06 17次下载
    嵌入式内核及驱动开发-09IIC子系统框架使用(<b class='flag-5'>I2C</b>协议和时序,<b class='flag-5'>I2C</b>驱动框架,<b class='flag-5'>I2C</b>从设备驱动开发,MPU6050<b class='flag-5'>硬件</b>连接

    硬件I2C与模拟I2C

    硬件I2C对应芯片上的I2C外设,有相应I2C驱动电路,其所使用的I2C管脚也是专用的,因而效率要远高于软件模拟的
    发表于 12-28 19:14 81次下载
    <b class='flag-5'>硬件</b><b class='flag-5'>I2C</b>与模拟<b class='flag-5'>I2C</b>

    两个PS I2C控制器的回环测试

    I2C 总线的两根信号线 SCL 和 SDA 需要上拉才能正常工作,当板卡上没有合适的硬件设置或者没有合适的 I2Cslave 设备,我们就无法进行
    的头像 发表于 04-13 08:35 2304次阅读

    如何在Versal平台实现两个PS I2C控制器的回环

    I2C 总线的两根信号线 SCL 和 SDA 需要上拉才能正常工作,当板卡上没有合适的硬件设置或者没有合适的 I2Cslave 设备,我们就无法进行
    发表于 08-02 09:23 554次阅读
    如何在Versal平台实现两个PS <b class='flag-5'>I2C</b><b class='flag-5'>控制器</b>的回环

    I2C控制器驱动介绍

    控制器驱动 I2C 总线驱动重点是 I2C 适配器驱动,这里要用到两个重要的数据结构:i2c_adapter 和 i2c_algorithm
    的头像 发表于 07-22 15:38 1418次阅读
    <b class='flag-5'>I2C</b><b class='flag-5'>控制器</b>驱动介绍

    如何保持宽电压输入而供电电流能够保持稳定

    如何保持宽电压输入而供电电流能够保持稳定保持宽电压输入,同时保持稳定的电流是各种电子设备设计中需要
    的头像 发表于 10-26 11:38 934次阅读

    stm32 I2c硬件驱动程序不稳定该怎么解决?

    硬件问题: a. 电源问题:I2C 总线需要稳定的电源供应。如果电源波动较大,会导致通信错误。解决方法是检查电源供应,并确保其稳定。 b.
    的头像 发表于 01-16 17:11 2803次阅读