打印
[STM32L4]

硬件iic为什么还有问题

[复制链接]
463|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
亚瑟|  楼主 | 2025-4-23 15:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用STM32L4的硬件I2C驱动OLED,用CubeMX配置后卡在HAL_I2C_IsDeviceReady。换成软件模拟I2C就正常,时钟速度调到10kHz都不行,有没有遇到过的大神?

使用特权

评论回复
沙发
chenqianqian| | 2025-4-23 21:03 | 只看该作者
不是说ST的硬件IIC是个硬伤吗

使用特权

评论回复
板凳
公羊子丹| | 2025-4-25 07:37 | 只看该作者
我也遇到过类似情况,最后发现是IO口复用没选对,用了不支持I2C功能的引脚导致一直超时。

使用特权

评论回复
地板
周半梅| | 2025-4-25 07:38 | 只看该作者
你有试过用逻辑分析仪看波形吗?有时候硬件I2C发送了start但对方没ack,导致一直等。

使用特权

评论回复
5
帛灿灿| | 2025-4-25 07:38 | 只看该作者
CubeMX配置完后,IO口要设置成开漏输出+上拉,不然有些OLED模块根本收不到信号。

使用特权

评论回复
6
童雨竹| | 2025-4-25 07:39 | 只看该作者
有些OLED上电初始化比较慢,建议上电延时加到100ms以上再跑HAL_I2C_IsDeviceReady试试看。

使用特权

评论回复
7
万图| | 2025-4-25 07:40 | 只看该作者
我用L4时发现如果I2C前面重启过或者曾经异常退出,可能会卡死在busy状态,复位一下I2C外设就好了。

使用特权

评论回复
8
Wordsworth| | 2025-4-25 07:41 | 只看该作者
你有没有试过换一组I2C引脚?STM32有些引脚复用容易冲突,换个口子有奇效。

使用特权

评论回复
9
Bblythe| | 2025-4-25 07:42 | 只看该作者
软件I2C能跑说明时序是OK的,问题大概率还是出在硬件I2C初始化或者兼容性上。

使用特权

评论回复
10
Pulitzer| | 2025-4-25 07:43 | 只看该作者
有些I2C设备在初始化时要特殊时序或者命令,比如先发一个dummy byte,建议查下OLED手册。

使用特权

评论回复
11
Uriah| | 2025-4-25 07:44 | 只看该作者
我之前遇到是SDA引脚被别的外设复用了,改IO口就没问题了,你确认一下有没有别的模块也在用同样的引脚?

使用特权

评论回复
12
Clyde011| | 2025-4-25 07:45 | 只看该作者
你可以尝试先不用HAL_I2C_IsDeviceReady,直接发命令写数据试试,有时候这个函数的时序对某些设备并不友好。

使用特权

评论回复
13
powerantone| | 2025-4-25 13:06 | 只看该作者
CubeMX中I2C引脚是否正确配置为复用开漏输出模式。若误设为推挽输出,SCL/SDA线可能无法正确拉高,导致通信失败。

使用特权

评论回复
14
stormwind123| | 2025-4-25 16:00 | 只看该作者
上拉电阻值过大或者过小?

使用特权

评论回复
15
probedog| | 2025-4-25 19:00 | 只看该作者
时钟树配置有误?

使用特权

评论回复
16
classroom| | 2025-4-25 20:00 | 只看该作者
更新HAL库。

使用特权

评论回复
17
夕阳接你| | 2025-4-27 11:18 | 只看该作者
GPIO 没有配置好

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

22

主题

431

帖子

0

粉丝