熱門: 51單片機(jī) | 24小時(shí)必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
![]() |
發(fā)布時(shí)間: 2023-6-10 18:32
正文摘要:1.部分代碼:(軟件模擬I2C連接BH1750模塊,來自正點(diǎn)原子代碼示例) /* ********************************************************************************************************* * ... |
可以在傳感器的采集時(shí)序函數(shù)里面設(shè)置返回值,調(diào)用時(shí)序函數(shù)時(shí)再檢查一下有沒ack返回。我也碰到跟你一樣的問題,就這樣解決了。 |
通過I2C讀取從器件的ID值, 有ack就是有設(shè)備存在, 沒有就是沒有設(shè)備存在. |
device沒回應(yīng)ack,就代表不存在。 |
請(qǐng)問是只有添加了上拉電阻才能解決嗎 |
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)置上拉電阻,所以直接連接就可以進(jìn)行I2C通信,但是當(dāng)沒有外設(shè)連接的時(shí)候還想讓SCL和SDA處于高電平需要額外接上拉電阻。 還有個(gè)疑問:在沒有釋放總線之前SCL和SDA都是主機(jī)控制,那沒有設(shè)備連接時(shí)不應(yīng)該也能檢測(cè)到不完整的輸出波形嗎?為什么我用示波器沒有檢測(cè)到 |
已解決:BH1750模塊內(nèi)置上拉電阻,所以STM32直接連接就可以通信,但是當(dāng)沒有設(shè)備連接還想讓SCL和SDA處于高電平就得額外接上拉電阻。 |
根據(jù)應(yīng)答信號(hào) 檢測(cè)從設(shè)備是否在線和損壞或者掉線;仔細(xì)看一下IIC的通訊協(xié)議,就清楚了; 硬件上面 我一般習(xí)慣IIC的總線額外添加3.3K-10K的上拉電阻; 5V設(shè)備一般用4K7就可以了; |
iic是有應(yīng)答機(jī)制的,有應(yīng)答就是有設(shè)備,沒有應(yīng)答就是沒有設(shè)備 |
你IIC總線上有上拉電阻嗎? |
采集來的數(shù)據(jù)在正常范圍,說明設(shè)備存在。 |
Powered by 單片機(jī)教程網(wǎng)