我正在嘗試使用I2C協議與氣壓傳感器MS5611進行通信。我的微型是STM32f3discovery。傳感器的地址是發送的,但不是命令。該代碼在等待TXIE位置1的while循環中被佔用。 TXIE不是「一」的原因是MS5611的確認位沒有顯示出來。 I2C狀態寄存器還設置了NACK(not acknowledge),STOPF(停止標誌)位。I2C通信沒有給我一個ACK位
MS5611傳感器的地址是11101100.這可以在第12頁的數據表中看到。在我的情況下,CSB的值爲零。
但O型範圍顯示我不同的畫面。我已經嘗試過兩種方式,CSB在CSB中爲零,但沒有成功。
CSB零:O-scope picture 1
CSB之一:在某個地方我的意見:)
...我不能粘貼圖片或鏈接,因爲我沒有足夠的聲望值: -/
我一直在這樣想: 可能是因爲我的時機關閉了。我認爲這是因爲第9次SCL脈衝的停止條件。在這個地方ACK位應該進入而不是STOP位。
那麼,爲什麼第9個脈衝高? 誰給第9脈衝,微或傳感器?
版數UNO:到目前爲止,我試圖發送讀命令時,與兩個組合(11101101或11101111),變更爲其他的I2C裝置。該控制器具有兩個I2C模塊(I2C1和I2C2),更改了引腳(從PB6,PB7到PA9和PA10)。沒有成功。另一方面,我使用相同的引腳(PB6,PB7)和相同的代碼對st板上的mems電子溫度計傳感器進行了解決。唯一的區別是I2C定時寄存器中的時序值和地址。像魅力一樣工作。
很明顯,我的結論是我的計時值或傳感器I2C協議有問題。但是,我使用ST參考手冊中的時序設置示例。因此,除此之外,我還沒有其他方法可以進入調試器模式,並深入瞭解I2C定時值。
我將不勝感激您的幫助:)任何附加信息,並感謝
CSB引腳上的電壓是多少? –
如何從設備讀取數據,在這種情況下是否會承認?試用11101101或11101111. –