找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

MCU如何检测I2C设备是否存在?

查看数: 4065 | 评论数: 15 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2023-6-10 18:32

正文摘要:

1.部分代码:(软件模拟I2C连接BH1750模块,来自正点原子代码示例) /* ********************************************************************************************************* *     ...

回复

ID:1109406 发表于 2024-1-17 10:32
可以在传感器的采集时序函数里面设置返回值,调用时序函数时再检查一下有没ack返回。我也碰到跟你一样的问题,就这样解决了。
ID:517951 发表于 2024-1-17 07:34
通过I2C读取从器件的ID值, 有ack就是有设备存在, 没有就是没有设备存在.
ID:43600 发表于 2024-1-17 01:22
device沒回應ack,就代表不存在。
ID:1109406 发表于 2024-1-16 15:53
请问是只有添加了上拉电阻才能解决吗
ID:77589 发表于 2023-6-16 15:25
Y_G_G 发表于 2023-6-11 10:53
iic是有应答机制的,有应答就是有设备,没有应答就是没有设备

正解,支持一下
ID:612392 发表于 2023-6-16 13:55
这IIC的波形质量好差
ID:1083229 发表于 2023-6-16 13:42
Hephaestus 发表于 2023-6-12 12:16
STM32可以设置内部上拉,你没有打开。

但是I2C通信要设置为开漏输出模式不是吗
ID:883242 发表于 2023-6-12 12:16
_BEAR_ 发表于 2023-6-11 22:06
已解决:BH1750模块内置上拉电阻,所以STM32直接连接就可以通信,但是当没有设备连接还想让SCL和SDA处于高 ...

STM32可以设置内部上拉,你没有打开。
ID:1034262 发表于 2023-6-12 11:00
读取器件信息即可知道
ID:1083229 发表于 2023-6-11 22:15
已解决:BH1750模块已经内置上拉电阻,所以直接连接就可以进行I2C通信,但是当没有外设连接的时候还想让SCL和SDA处于高电平需要额外接上拉电阻。
还有个疑问:在没有释放总线之前SCL和SDA都是主机控制,那没有设备连接时不应该也能检测到不完整的输出波形吗?为什么我用示波器没有检测到
ID:1083229 发表于 2023-6-11 22:06
已解决:BH1750模块内置上拉电阻,所以STM32直接连接就可以通信,但是当没有设备连接还想让SCL和SDA处于高电平就得额外接上拉电阻。
ID:230500 发表于 2023-6-11 13:35
根据应答信号 检测从设备是否在线和损坏或者掉线;仔细看一下IIC的通讯协议,就清楚了; 硬件上面 我一般习惯IIC的总线额外添加3.3K-10K的上拉电阻; 5V设备一般用4K7就可以了;
ID:401564 发表于 2023-6-11 10:53
iic是有应答机制的,有应答就是有设备,没有应答就是没有设备
ID:1083310 发表于 2023-6-11 07:16
你IIC总线上有上拉电阻吗?
ID:94031 发表于 2023-6-11 05:50
采集来的数据在正常范围,说明设备存在。

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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