[N32G43x] I2C2通信失败

[复制链接]
1277|14
 楼主| jaye_cui 发表于 2025-6-20 18:17 | 显示全部楼层 |阅读模式
我使用N32G435的芯片,使用I2C1通信正常,使用I2C2通信不正常。
现象:发送起始条件和地址后,从机正常回复ACK,但是I2C2的状态寄存器ADDR10F置位,而我使用的是7bit地址模式。等待EV6失败而退出通信。




请知道原因的大神指教,谢谢。
 楼主| jaye_cui 发表于 2025-6-23 08:35 | 显示全部楼层
本帖最后由 jaye_cui 于 2025-6-23 09:29 编辑

这是寄存器数据
企业微信截图_20250623092918.png
codingtuzi 发表于 2025-6-21 08:43 | 显示全部楼层
检查自己的代码吧!
大概率是自己的软件问题
 楼主| jaye_cui 发表于 2025-6-23 08:26 | 显示全部楼层
codingtuzi 发表于 2025-6-21 08:43
检查自己的代码吧!
大概率是自己的软件问题

代码是用的RT-Thread,配置和I2C1的代码完全一样
 楼主| jaye_cui 发表于 2025-6-23 08:34 | 显示全部楼层
这是寄存器的数据

 楼主| jaye_cui 发表于 2025-6-23 10:51 | 显示全部楼层
网上找到资料说,当地址的高5位为11110时,总线自动识别为10bit地址模式,所以ADDR10F位被置位,所以在地址为0xF0时,总线认为是10bit地址模式,因此置位了ADDR10F位。
tpgf 发表于 2025-6-25 10:10 | 显示全部楼层
确认SDA和SCL线正确连接且无短路/断路

检查I2C设备地址是否正确(使用逻辑分析仪或示波器验证)

测量上拉电阻值(通常4.7kΩ-10kΩ,根据总线电容调整)
flycamelaaa 发表于 2025-7-31 15:19 | 显示全部楼层
I2C2的SCL引脚是否外接了4.7kΩ上拉电阻至VCC。若电阻值过大或未连接,可能导致信号无法正确拉高,引发ADDR10F误置位。
elephant00 发表于 2025-7-31 15:22 | 显示全部楼层
用逻辑分析仪抓取波形看看,若ADDR10F误置位,可能是波形异常导致硬件误判。
cr315 发表于 2025-7-31 15:59 | 显示全部楼层
检查中断优先级。
powerantone 发表于 2025-7-31 16:19 | 显示全部楼层
PB10和PB11的复用功能是否已正确配置为I2C2。
probedog 发表于 2025-7-31 16:20 | 显示全部楼层
优先处理EV5事件,再处理EV6事件。
stormwind123 发表于 2025-7-31 17:19 | 显示全部楼层
清除ADDR10F标志位。
classroom 发表于 2025-7-31 17:20 | 显示全部楼层
在I2C初始化时明确配置为7位地址模式。
jcky001 发表于 2025-7-31 18:21 | 显示全部楼层
在初始化代码中是否正确使能I2C2的时钟。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

6

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部