其功能是51單片機向mpu寫入一個字節,然后有mpu在串行數據線(SDA)給51一個應答信號;
根據文檔的說明:如下:
2.png (270.68 KB, 下載次數: 36)
下載附件
2023-3-2 01:04 上傳
3.png (118.23 KB, 下載次數: 32)
下載附件
2023-3-2 01:04 上傳
我對應答信號的理解是:
51向mpu發送完8位數據,如果mpu應答,會在第9個時鐘時,拉低數據線SDA.所以我的應答代碼如下:
void Write_ACK()
{
SCL=1;
SDA=1;
while(SDA); //用while判斷SDA有沒有被拉低,
}
或
void Write_ACK()
{
SCL=1;
while(SCL); //如果從設備忙,他會使SCL保持在低電平.用while判斷mpu是不是在忙,
}
事實情況是這兩種都不理想;第一個進入死循環,第二個沒收到過反饋;
1.png (86.32 KB, 下載次數: 30)
下載附件
2023-3-2 01:04 上傳
這是在網上找的51單片機與mpu6050通信代碼的一段.
他是用PSW寄存器的進位標志位CY進行數據發出的,
他接收應答用的還是CY,返回CY后,并沒有對CY做任何判斷,
他是怎么判斷有沒有收到mpu的應答信號的?
還是CY有什么特性?(我在網上沒找到相關知識);
|