![]() |
發布時間: 2020-2-10 00:04
正文摘要:初學i2c接口,編寫個程序i2c讀器件ACK 如:"ack=i2c_SendData(0x46);“反復嘗試了3個I2C器件,始終只有MPU6050(Addr:0xD0)返回ACK為低電平。反復嘗試N次后使本人失去了學習的勇氣,太詭異了。請各位 ... |
1.線接對了沒有;2.速率是否符合要求;3.給你發一下我的這個發送函數你對照著看看吧 bit I2C_Write(unsigned char dat) { bit ack; unsigned char pos; for (pos=0x80; pos; pos>>=1) { if (dat & pos) I2C_SDA = 1; else I2C_SDA = 0; I2C_Delay(0); I2C_SCL = 1; I2C_Delay(1); I2C_SCL = 0; I2C_Delay(0); } I2C_SDA = 1; //釋放SDA I2C_Delay(0); I2C_SCL = 1; I2C_Delay(0); ack = I2C_SDA; // I2C_Delay(0); I2C_SCL = 0; I2C_Delay(1); return !ack; } |