![]() |
發(fā)布時間: 2023-6-10 18:32
正文摘要:1.部分代碼:(軟件模擬I2C連接BH1750模塊,來自正點原子代碼示例) /* ********************************************************************************************************* * ... |
可以在傳感器的采集時序函數(shù)里面設(shè)置返回值,調(diào)用時序函數(shù)時再檢查一下有沒ack返回。我也碰到跟你一樣的問題,就這樣解決了。 |
通過I2C讀取從器件的ID值, 有ack就是有設(shè)備存在, 沒有就是沒有設(shè)備存在. |
device沒回應(yīng)ack,就代表不存在。 |
請問是只有添加了上拉電阻才能解決嗎 |
Y_G_G 發(fā)表于 2023-6-11 10:53 正解,支持一下 |
這IIC的波形質(zhì)量好差 |
Hephaestus 發(fā)表于 2023-6-12 12:16 但是I2C通信要設(shè)置為開漏輸出模式不是嗎 |
_BEAR_ 發(fā)表于 2023-6-11 22:06 STM32可以設(shè)置內(nèi)部上拉,你沒有打開。 |
讀取器件信息即可知道 |
已解決:BH1750模塊已經(jīng)內(nèi)置上拉電阻,所以直接連接就可以進行I2C通信,但是當沒有外設(shè)連接的時候還想讓SCL和SDA處于高電平需要額外接上拉電阻。 還有個疑問:在沒有釋放總線之前SCL和SDA都是主機控制,那沒有設(shè)備連接時不應(yīng)該也能檢測到不完整的輸出波形嗎?為什么我用示波器沒有檢測到 |
已解決:BH1750模塊內(nèi)置上拉電阻,所以STM32直接連接就可以通信,但是當沒有設(shè)備連接還想讓SCL和SDA處于高電平就得額外接上拉電阻。 |
根據(jù)應(yīng)答信號 檢測從設(shè)備是否在線和損壞或者掉線;仔細看一下IIC的通訊協(xié)議,就清楚了; 硬件上面 我一般習(xí)慣IIC的總線額外添加3.3K-10K的上拉電阻; 5V設(shè)備一般用4K7就可以了; |
iic是有應(yīng)答機制的,有應(yīng)答就是有設(shè)備,沒有應(yīng)答就是沒有設(shè)備 |
你IIC總線上有上拉電阻嗎? |
采集來的數(shù)據(jù)在正常范圍,說明設(shè)備存在。 |
Powered by 單片機教程網(wǎng)