I2C串行EEPROM芯片写周期问题记录

本文讲述了作者在开发过程中遇到的I2C EEPROM写周期问题,通过状态机测试时,发现在写后立即读取数据导致未接收到ACK。解决办法是根据芯片手册确认5ms写周期限制,并调整代码在写操作后延时5ms再读取,最终解决了通信问题。推荐阅读《I2C串行EEPROM应用系统的健壮性设计》一文。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

I2C串行EEPROM芯片写周期问题记录

问题描述

最近在做I2C串行EEPROM芯片的读写测试时,我突发奇想做了如图1所示的策略,希望能验证所操作寄存器的好坏。我是用状态机实现该策略,但在进行板级调试时,我发现程序一直卡在“读出word_addr的数据”这一步,没有继续向下执行。
图1

问题定位

通过用Signaltap抓取波形,我发现我的程序在写周期期间,有收到应答信号(ACK);但是在读周期的开始,即写入器件的地址及控制命令后,没有收到ACK应答信号。初步猜测,是我对EEPROM器件操作太快,EEPROM仍处在向寄存器写入数据期间,无法对外界发出应答信号。
注1:我是在写操作完成后,立即进行读操作,中间大概隔了40ns。

解决问题

通过查阅EEPROM芯片的数据手册发现,EEPROM最大的写周期是5ms。我用的是EEPROM芯片型号是AT2402,图2是kexin(科信)对写周期的介绍,在倒数第二行有介绍芯片写周期为5ms。
图2
知道原因后,我在读数据前设计,先等待5ms。重新编译综合后,将新程序下载到开发板中,然后进行板级调试,功能实现,问题解决。

注2:在定位问题和解决的问题中,我发现一篇对IIC设计比较有帮助的文章,在这里记录下文章名:《I2C串行EEPROM应用系统的健壮性设计》。有兴趣的可以上网翻阅一下哈。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值