你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

uboot初始化IIC1,跳转到应用程序中后,先读一字节AT24C04的数据,然后初始化IIC1(未复位),再读一字节AT24C04时,有概率一直检测到IIC处于busy状态。

[复制链接]
#YDJ666yyds_is_ 提问时间:2025-6-26 17:13 / 未解决

uboot初始化IIC1,跳转到应用程序中后,先读一字节AT24C04的数据,然后初始化IIC1(未复位),再读一字节AT24C04时,有概率一直检测到IIC处于busy状态。

IIC1总线只有STM32F405RGT6和AT24C04,IIC总线有10K的上拉电阻。

以下三种方式可降低出busy的概率:

1)跳转到应用程序中后,若先进行IIC1初始化(未复位),再去读一字节数据则正常;

2)跳转到应用程序中后,若IIC1初始化前,先复位一下,则后续读一字节数据正常;

3)跳转到应用程序中后,若不再初始化IIC1,则IIC通信正常。

但仍不清楚为什么原本程序有概率出现busy的状态。

赞 收藏 评论2 发布时间:2025-6-26 17:13

举报

2个回答
废鱼 回答时间:2025-6-26 21:47:32

用逻辑分析仪或者示波器看一下波形,是不是SDA或者CLK一直拉低导致到。如果是,说明之前的操作有异常导致的。在操作前重新初始化IIC,再进行正常操作。

butterflyspring 回答时间:2025-6-27 14:45:50
根据手册描述和I2C 协议特点,如果总线上有一定幅值的扰动,推测会被高速硬件识别到。

从而被认为总线在工作busy。

STM32F4 I2C BUSY .PNG
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版