[STM32F0] STM32F070读取SHT40时I2C通信偶尔失败的问题

[复制链接]
 楼主| cr315 发表于 2025-7-19 15:08 | 显示全部楼层 |阅读模式
STM32F070读取SHT40时I2C通信偶尔失败怎么回事?
公羊子丹 发表于 2025-7-23 07:24 | 显示全部楼层
你用的 I2C 是硬件还是软件模拟的?F0 的 I2C 有时候拉不住时序。
周半梅 发表于 2025-7-23 07:26 | 显示全部楼层
SHT40 对 I2C 时序比较敏感,线长、拉电阻值都得调一调。
帛灿灿 发表于 2025-7-23 07:28 | 显示全部楼层
我之前碰到过,一次读太快了,测量还没准备好就去读,直接 NACK。
童雨竹 发表于 2025-7-23 07:30 | 显示全部楼层
检查下 HAL_I2C_Master_Transmit 和 HAL_I2C_Master_Receive 有没有超时返回。
万图 发表于 2025-7-23 07:32 | 显示全部楼层
建议上拉电阻先换 4.7k 或 10k 试试,有时候电容大了也会掉波形。
Wordsworth 发表于 2025-7-23 07:34 | 显示全部楼层
试试把 I2C 的速率调低一点,比如从 400k 改成 100k,看问题还在不在。
Bblythe 发表于 2025-7-23 07:36 | 显示全部楼层
如果用的是长线,最好走一对双绞线或者加个 I2C buffer。
Pulitzer 发表于 2025-7-23 07:38 | 显示全部楼层
有人会在出错的时候做 I2C 总线复位,拉低 SCL 若干次试试能不能拉回来。
Uriah 发表于 2025-7-23 07:40 | 显示全部楼层
也可以抓个波形看一下,是 START、ACK 还是 STOP 时出错,一眼就知道根源了。
Uriah 发表于 2025-7-23 07:42 | 显示全部楼层
我之前遇到类似的,最后发现是电源噪声干扰了,给 SHT40 单独加个滤波电容就好了。
stormwind123 发表于 2025-7-23 15:39 | 显示全部楼层
未配置上拉电阻或上拉电阻阻值不正确可能导致信号不稳定。
powerantone 发表于 2025-7-23 16:39 | 显示全部楼层
SHT40对供电电压敏感,电压波动可能导致数据不准确或通信失败。
probedog 发表于 2025-7-23 19:49 | 显示全部楼层
信号线未做滤波处理或I2C总线未正确配置上拉电阻,可能导致通信噪声干扰。
classroom 发表于 2025-7-23 20:40 | 显示全部楼层
I2C初始化配置不当可能导致通信失败。
flycamelaaa 发表于 2025-7-23 22:41 | 显示全部楼层
在软件中添加超时处理机制,避免程序一直死等检测应答信号。当发送超时情形时,可以尝试复位STM32 I2C外设或相关设备。
duo点 发表于 2025-7-23 22:42 | 显示全部楼层
定期进行两点校准或多点校准,在软件中实现滑动平均滤波或卡尔曼滤波算法去除噪声。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1448

主题

4810

帖子

0

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