熱門: 51單片機(jī) | 24小時(shí)必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
![]() |
發(fā)布時(shí)間: 2023-3-2 01:06
正文摘要:其功能是51單片機(jī)向mpu寫入一個(gè)字節(jié),然后有mpu在串行數(shù)據(jù)線(SDA)給51一個(gè)應(yīng)答信號(hào); 根據(jù)文檔的說明:如下: 這是在網(wǎng)上找的51單片機(jī)與mpu6050通信代碼的一段. 他是用PSW寄存器的進(jìn)位標(biāo)志位CY進(jìn)行數(shù)據(jù)發(fā)出的 ... |
關(guān)于第二個(gè)問題,CY單純是一個(gè)變量吧,理論上來將,他的第214行應(yīng)該是 if(I2C_RecvACK() == 0) { //應(yīng)答成功,繼續(xù)執(zhí)行其他 } 這樣,不過這個(gè)估計(jì)是默認(rèn)了應(yīng)答能成功,簡化掉了; 模擬總線一般用 while(--i); 這樣的操作去等待,i 為 0 的時(shí)候就直接獲取數(shù)據(jù)了, 至于i的值,應(yīng)該和你翻轉(zhuǎn)SCL的延時(shí)是一致的,保證時(shí)鐘的準(zhǔn)確性,雖然說IIC對(duì)時(shí)鐘要求不高 用死循環(huán)硬等是不行的 |
rctty 發(fā)表于 2023-3-2 11:55 謝謝,受教了 |
一般模擬總線,時(shí)鐘由主機(jī)控制,不可能像第二個(gè)去判斷時(shí)鐘,這個(gè)沒啥意義;第一個(gè)程序,先是SCL拉高,然后再SDA拉高,好嘛,總線通信結(jié)束了 |
你用while,就要加個(gè)延時(shí)自動(dòng)退出的判斷,否則容易死循環(huán),你找的程序只是接收了應(yīng)答,沒判斷,普通應(yīng)用經(jīng)常這么處理。 |
Powered by 單片機(jī)教程網(wǎng)