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