硬汉嵌入式论坛

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

[技术讨论] STM32的I2C

[复制链接]

5

主题

25

回帖

40

积分

新手上路

积分
40
发表于 2024-8-2 09:34:49 | 显示全部楼层 |阅读模式
最近使用STM32F103系列芯片的I2C遇到非常奇怪的问题,有请各位大佬帮忙分析一下


一、基于标准库(STD)配置STM32F103的I2C1、I2C2驱动外挂芯片,发现I2C1能够正常工作、I2C2始终不能正常工作。
1、对比了I2C1和I2C2初始化后I2C寄存器,发现两者一致。

二、使用CUBEMX配置一个基于(HAL)库的I2C2的驱动,I2C2能够正常工作。
1、对比了HAL库和STD库I2C初始化后的寄存器状态,发现两者一致

因此确实是软件的问题,难道STD库针对I2C2的驱动有坑??
我也用示波器抓取过I2C2的波形,SCK和SDA两条线,当启动发送数据时,一条线保持高电平,一条线保持被拉低了(因为前几天抓的,具体那条线被拉低我也忘了,等下飞线再看一下)
这个问题很奇怪,我看STD的I2C发送函数也是往I2C的DR寄存器推数据,有没有用过的大佬指点下?


回复

使用道具 举报

5

主题

25

回帖

40

积分

新手上路

积分
40
 楼主| 发表于 2024-8-2 10:06:06 | 显示全部楼层
补充:代码是卡在检测EV5事件的死循环里面
回复

使用道具 举报

5

主题

25

回帖

40

积分

新手上路

积分
40
 楼主| 发表于 2024-8-2 10:10:10 | 显示全部楼层
补充:I2C1使用的是PB6、PB7,I2C2使用的是PB10、PB11
回复

使用道具 举报

3

主题

295

回帖

304

积分

高级会员

积分
304
发表于 2024-8-2 10:12:12 | 显示全部楼层
F103读i2c从设备直接用GPIO模拟吧,说是F1这系列i2c硬件bug比较多
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
发表于 2024-8-2 10:20:59 | 显示全部楼层
103就推荐就别用硬件I2C了,bug最多。
回复

使用道具 举报

5

主题

25

回帖

40

积分

新手上路

积分
40
 楼主| 发表于 2024-8-2 10:21:57 | 显示全部楼层
我怀疑大概率是标准库针对I2C2的操作有坑,单步执行发送函数,I2C START后 I2C1表现位SR1的SB置位,I2C2的SR1的SB时钟为0,导致卡在EV5死循环。
回复

使用道具 举报

5

主题

25

回帖

40

积分

新手上路

积分
40
 楼主| 发表于 2024-8-2 10:25:05 | 显示全部楼层
eric2013 发表于 2024-8-2 10:20
103就推荐就别用硬件I2C了,bug最多。

好吧 当时也是项目非常紧急,暂时用IO口模拟I2C,解决了I2C2的问题,最近使用HAL驱动I2C2又发现能正常用,想找下原因
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
发表于 2024-8-2 14:40:41 | 显示全部楼层
Alex_Alex 发表于 2024-8-2 10:25
好吧 当时也是项目非常紧急,暂时用IO口模拟I2C,解决了I2C2的问题,最近使用HAL驱动I2C2又发现能正常用 ...

那确实可以深究下原因。
回复

使用道具 举报

5

主题

25

回帖

40

积分

新手上路

积分
40
 楼主| 发表于 2024-8-2 14:46:11 | 显示全部楼层
解决了 I2C2也可以正常使用了  原来的大工程中开始了串口3,这个跟I2C2的引脚是冲突的,唉,怼着寄存器调了半天。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
发表于 2024-8-2 14:52:05 | 显示全部楼层
Alex_Alex 发表于 2024-8-2 14:46
解决了 I2C2也可以正常使用了  原来的大工程中开始了串口3,这个跟I2C2的引脚是冲突的,唉,怼着寄存器调了 ...

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-12 06:35 , Processed in 0.040419 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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