可以在传感器的采集时序函数里面设置返回值,调用时序函数时再检查一下有没ack返回。我也碰到跟你一样的问题,就这样解决了。 |
通过I2C读取从器件的ID值, 有ack就是有设备存在, 没有就是没有设备存在. |
device沒回應ack,就代表不存在。 |
请问是只有添加了上拉电阻才能解决吗 |
Y_G_G 发表于 2023-6-11 10:53 正解,支持一下 |
这IIC的波形质量好差 |
Hephaestus 发表于 2023-6-12 12:16 但是I2C通信要设置为开漏输出模式不是吗 |
_BEAR_ 发表于 2023-6-11 22:06 STM32可以设置内部上拉,你没有打开。 |
读取器件信息即可知道 |
已解决:BH1750模块已经内置上拉电阻,所以直接连接就可以进行I2C通信,但是当没有外设连接的时候还想让SCL和SDA处于高电平需要额外接上拉电阻。 还有个疑问:在没有释放总线之前SCL和SDA都是主机控制,那没有设备连接时不应该也能检测到不完整的输出波形吗?为什么我用示波器没有检测到 |
已解决:BH1750模块内置上拉电阻,所以STM32直接连接就可以通信,但是当没有设备连接还想让SCL和SDA处于高电平就得额外接上拉电阻。 |
根据应答信号 检测从设备是否在线和损坏或者掉线;仔细看一下IIC的通讯协议,就清楚了; 硬件上面 我一般习惯IIC的总线额外添加3.3K-10K的上拉电阻; 5V设备一般用4K7就可以了; |
iic是有应答机制的,有应答就是有设备,没有应答就是没有设备 |
你IIC总线上有上拉电阻吗? |
采集来的数据在正常范围,说明设备存在。 |