![]() |
注意:MPU_Write_Byte函數iic操作成功返回0,失敗返回1. 不管iic操作是否成功都要通過MPU_IIC_Stop函數釋放總線。 估計MPU_IIC_Wait_Ack函數的作用是100uS內有應答返回0,無應答返回1. 樓主可能習慣把1看成成功,0看成失敗,才有疑問。 |
看不太出來,需要抓波形吧 |
這邊應該是沒有應答的邏輯控制。 |
IIC屬于半雙工器件,任一時段主機只能和唯一指定的從機通訊。 |
沒有應答,就是出現了問題,停止總線,返錯誤代號1. |
你得把MPU_IIC_Stop函數發上來看看啊。不過據我的認識應該是主機釋放數據總線,把數據線拉高,這樣從機應答信號才能把數據線拉低,主機才能讀到正確的應答信號 |
if(MPU_IIC_Wait_Ack())中這個函數MPU_IIC_Wait_Ack()應答成功的話返回值應該是0,返回1肯定是應答失敗的情況才會執行if{}里面的語句退出,并且返回1告訴調用的地方通信失敗 |