找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 1637|回復(fù): 4
打印 上一主題 下一主題
收起左側(cè)

關(guān)于mpu6050的應(yīng)答信號(hào),整不明白了

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
其功能是51單片機(jī)向mpu寫(xiě)入一個(gè)字節(jié),然后有mpu在串行數(shù)據(jù)線(SDA)給51一個(gè)應(yīng)答信號(hào);
根據(jù)文檔的說(shuō)明:如下:




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


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


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



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

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

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

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:844772 發(fā)表于 2023-3-2 08:31 | 只看該作者
你用while,就要加個(gè)延時(shí)自動(dòng)退出的判斷,否則容易死循環(huán),你找的程序只是接收了應(yīng)答,沒(méi)判斷,普通應(yīng)用經(jīng)常這么處理。
回復(fù)

使用道具 舉報(bào)

板凳
ID:1045628 發(fā)表于 2023-3-2 11:55 | 只看該作者
一般模擬總線,時(shí)鐘由主機(jī)控制,不可能像第二個(gè)去判斷時(shí)鐘,這個(gè)沒(méi)啥意義;第一個(gè)程序,先是SCL拉高,然后再SDA拉高,好嘛,總線通信結(jié)束了
回復(fù)

使用道具 舉報(bào)

地板
ID:152785 發(fā)表于 2023-3-2 15:18 | 只看該作者
rctty 發(fā)表于 2023-3-2 11:55
一般模擬總線,時(shí)鐘由主機(jī)控制,不可能像第二個(gè)去判斷時(shí)鐘,這個(gè)沒(méi)啥意義;第一個(gè)程序,先是SCL拉高,然后 ...

謝謝,受教了
回復(fù)

使用道具 舉報(bào)

5#
ID:1045628 發(fā)表于 2023-3-2 17:07 | 只看該作者

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

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表