欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標(biāo)題: 關(guān)于mpu6050的應(yīng)答信號,整不明白了 [打印本頁]

作者: v115488    時間: 2023-3-2 01:06
標(biāo)題: 關(guān)于mpu6050的應(yīng)答信號,整不明白了
其功能是51單片機(jī)向mpu寫入一個字節(jié),然后有mpu在串行數(shù)據(jù)線(SDA)給51一個應(yīng)答信號;
根據(jù)文檔的說明:如下:




我對應(yīng)答信號的理解是:
51向mpu發(fā)送完8位數(shù)據(jù),如果mpu應(yīng)答,會在第9個時鐘時,拉低數(shù)據(jù)線SDA.所以我的應(yīng)答代碼如下:
void Write_ACK()
{
     SCL=1;
     SDA=1;
     while(SDA);   //用while判斷SDA有沒有被拉低,
}


void Write_ACK()
{
     SCL=1;
     while(SCL);   //如果從設(shè)備忙,他會使SCL保持在低電平.用while判斷mpu是不是在忙,
}


事實(shí)情況是這兩種都不理想;第一個進(jìn)入死循環(huán),第二個沒收到過反饋;



這是在網(wǎng)上找的51單片機(jī)與mpu6050通信代碼的一段.
他是用PSW寄存器的進(jìn)位標(biāo)志位CY進(jìn)行數(shù)據(jù)發(fā)出的,

他接收應(yīng)答用的還是CY,返回CY后,并沒有對CY做任何判斷,

他是怎么判斷有沒有收到mpu的應(yīng)答信號的?
還是CY有什么特性?(我在網(wǎng)上沒找到相關(guān)知識);


作者: glinfei    時間: 2023-3-2 08:31
你用while,就要加個延時自動退出的判斷,否則容易死循環(huán),你找的程序只是接收了應(yīng)答,沒判斷,普通應(yīng)用經(jīng)常這么處理。
作者: rctty    時間: 2023-3-2 11:55
一般模擬總線,時鐘由主機(jī)控制,不可能像第二個去判斷時鐘,這個沒啥意義;第一個程序,先是SCL拉高,然后再SDA拉高,好嘛,總線通信結(jié)束了
作者: v115488    時間: 2023-3-2 15:18
rctty 發(fā)表于 2023-3-2 11:55
一般模擬總線,時鐘由主機(jī)控制,不可能像第二個去判斷時鐘,這個沒啥意義;第一個程序,先是SCL拉高,然后 ...

謝謝,受教了
作者: rctty    時間: 2023-3-2 17:07
v115488 發(fā)表于 2023-3-2 15:18
謝謝,受教了

關(guān)于第二個問題,CY單純是一個變量吧,理論上來將,他的第214行應(yīng)該是
if(I2C_RecvACK() == 0)
{
    //應(yīng)答成功,繼續(xù)執(zhí)行其他
}
這樣,不過這個估計是默認(rèn)了應(yīng)答能成功,簡化掉了;
模擬總線一般用
while(--i);
這樣的操作去等待,i 為 0 的時候就直接獲取數(shù)據(jù)了,
至于i的值,應(yīng)該和你翻轉(zhuǎn)SCL的延時是一致的,保證時鐘的準(zhǔn)確性,雖然說IIC對時鐘要求不高
用死循環(huán)硬等是不行的




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1