|
發布時間: 2023-3-2 01:06
正文摘要:其功能是51單片機向mpu寫入一個字節,然后有mpu在串行數據線(SDA)給51一個應答信號; 根據文檔的說明:如下: 這是在網上找的51單片機與mpu6050通信代碼的一段. 他是用PSW寄存器的進位標志位CY進行數據發出的 ... |
v115488 發表于 2023-3-2 15:18 關于第二個問題,CY單純是一個變量吧,理論上來將,他的第214行應該是 if(I2C_RecvACK() == 0) { //應答成功,繼續執行其他 } 這樣,不過這個估計是默認了應答能成功,簡化掉了; 模擬總線一般用 while(--i); 這樣的操作去等待,i 為 0 的時候就直接獲取數據了, 至于i的值,應該和你翻轉SCL的延時是一致的,保證時鐘的準確性,雖然說IIC對時鐘要求不高 用死循環硬等是不行的 |
rctty 發表于 2023-3-2 11:55 謝謝,受教了 |
| 一般模擬總線,時鐘由主機控制,不可能像第二個去判斷時鐘,這個沒啥意義;第一個程序,先是SCL拉高,然后再SDA拉高,好嘛,總線通信結束了 |
| 你用while,就要加個延時自動退出的判斷,否則容易死循環,你找的程序只是接收了應答,沒判斷,普通應用經常這么處理。 |