![]() |
發布時間: 2023-6-10 18:32
正文摘要:1.部分代碼:(軟件模擬I2C連接BH1750模塊,來自正點原子代碼示例) /* ********************************************************************************************************* * ... |
可以在傳感器的采集時序函數里面設置返回值,調用時序函數時再檢查一下有沒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總線上有上拉電阻嗎? |
采集來的數據在正常范圍,說明設備存在。 |