硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1155|回复: 5
收起左侧

[I2C] 中断时I2C驱动,老是进HAL_I2C_ERROR_AF错误?

[复制链接]

49

主题

386

回帖

533

积分

金牌会员

积分
533
发表于 2025-1-2 11:02:48 | 显示全部楼层 |阅读模式
请教一下,使用H7 HAL 库通过I2C接口(中断方式)读取Sensor数据,经常发生HAL_I2C_ERROR_AF错误,这个可能原因有哪些?


另,不是所有传感器都会发生。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117546
QQ
发表于 2025-1-2 14:13:00 | 显示全部楼层
H7的I2C主机方式没有使用过,从机方式使用过,没这种问题。
回复

使用道具 举报

49

主题

386

回帖

533

积分

金牌会员

积分
533
 楼主| 发表于 2025-1-2 14:19:01 | 显示全部楼层
eric2013 发表于 2025-1-2 14:13
H7的I2C主机方式没有使用过,从机方式使用过,没这种问题。

已经定位问题,手册提供的设备地址需要进行 <<1 处理,再调用 HAL_I2C_Master_Transmit_IT之类函数
回复

使用道具 举报

49

主题

386

回帖

533

积分

金牌会员

积分
533
 楼主| 发表于 2025-1-2 17:46:09 | 显示全部楼层
分析时序,发现ACK信号正常,但读取寄存器数据全为零


2025-01-02_16-57-51.jpg

回复

使用道具 举报

7

主题

24

回帖

50

积分

初级会员

积分
50
发表于 2025-1-3 06:43:24 | 显示全部楼层
I2C主机要考虑有噪声的情况,有时会有数据错误或者不应答,之前使用一个I2C的光传感器的时候发生过。一定要有容错处理。
回复

使用道具 举报

49

主题

386

回帖

533

积分

金牌会员

积分
533
 楼主| 发表于 2025-1-3 08:28:37 | 显示全部楼层
wanglehui_12 发表于 2025-1-2 17:46
分析时序,发现ACK信号正常,但读取寄存器数据全为零

定位了问题,必须严格按照传感器时序进行读写操作
2025-01-02_18-29-56.jpg

使用STM32 HAL API组织实现:


HAL_I2C_Master_Seq_Transmit_XX

HAL_I2C_Master_Seq_Receive_XX




回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-14 01:25 , Processed in 0.055287 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表