久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

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

QQ登錄

只需一步,快速開始

搜索
查看: 2637|回復(fù): 0
收起左側(cè)

STM32讀取MPU6050陀螺儀芯片數(shù)據(jù)核心程序

[復(fù)制鏈接]
ID:55476 發(fā)表于 2020-6-5 11:15 | 顯示全部樓層 |閱讀模式
1  簡 介
   最近,想學(xué)角度融合算法在網(wǎng)上買一個(gè)JY61的模塊。他們家的模塊用起來還不錯(cuò)。模塊分為串口通訊和IIC通訊的。串口讀取數(shù)據(jù)他們家有例程,我就不說了。想分享給大家這個(gè)模塊的IIC是怎么去讀取MPU6050芯片數(shù)據(jù)的。
                                                      
    想要讀取MPU6050芯片,其實(shí)就是通過IIC去操作讀取寄存器。大致過程就是STM32和MPU6050先建立好IIC通訊。再去初始化MPU6050芯片。然后單片機(jī)再去讀取寄存器,就能把數(shù)據(jù)讀取出來了。
51hei.png
2  配置32單片機(jī)的IIC引腳

根據(jù)你32單片機(jī)的原理圖,找到你的IIC引腳。

a 時(shí)鐘RCC的配置,以我自己寫的為例子。


b GPIO口的配置


注意:SCL和SDA都得接上兩個(gè)4.7K的電阻。不然你是讀取不到MPU6050的數(shù)據(jù)。

c 32的IIC的配置


3  初始化 MPU6050

void MPU6050_Initialize()
{
MPU6050_I2C_ByteWrite(0xd0,0x00,MPU6050_RA_PWR_MGMT_1);
MPU6050_I2C_ByteWrite(0xd0,0x07,MPU6050_RA_SMPLRT_DIV);
MPU6050_I2C_ByteWrite(0xd0,0x06,MPU6050_RA_CONFIG);
MPU6050_I2C_ByteWrite(0xd0,0x01,MPU6050_RA_ACCEL_CONFIG);
MPU6050_I2C_ByteWrite(0xd0,0x18,MPU6050_RA_GYRO_CONFIG);
}

注意:0xD0 表示 MPU6050 的地址。MPU6050有 8 位的地址,前 7 位由 WHO AM I 確定,第 8 位由 AD0 的電平?jīng)Q定。WHO AM I 默認(rèn)值是 0x68H(1101000B),AD0 接低電平,所以 MPU6050 的 I2C 地址是 0xD0H(11010000B)。

4  核心讀取程序
總結(jié): 發(fā)送開始信號(hào) -> 起始成功? -> 發(fā)送 MPU6050 地址、狀態(tài)(寫)-> 寫地址成功? -> 發(fā)送 MPU6050內(nèi)部某個(gè)待寫寄存器地址 -> 發(fā)送成功? -> 發(fā)送要寫入的內(nèi)容 -> 發(fā)送成功? -> 發(fā)送結(jié)束信號(hào)

void MPU6050_I2C_BufferRead(u8 slaveAddr, u8* pBuffer, u8 readAddr, u16 NumByteToRead)

{

while(I2C_GetFlagStatus(I2C1, I2C_FLAG_BUSY));

I2C_GenerateSTART(I2C1, ENABLE);//發(fā)送開始條件

while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_MODE_SELECT));//在EV5上測(cè)試并清除

I2C_Send7bitAddress(I2C1, slaveAddr, I2C_Direction_Transmitter); //發(fā)送MOU6050地址進(jìn)行寫操作

while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED));//在EV6上測(cè)試并清除

I2C_Cmd(I2C1, ENABLE);//通過再次設(shè)置PE位來清除EV6

I2C_SendData(I2C1, readAddr);//發(fā)送MPU6050的內(nèi)部地址來寫入

while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_BYTE_TRANSMITTED));//在EV8上測(cè)試并清除

I2C_GenerateSTART(I2C1, ENABLE);//第二次發(fā)送STRAT條件

while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_MODE_SELECT));//在EV5上測(cè)試并清除

I2C_Send7bitAddress(I2C1, slaveAddr, I2C_Direction_Receiver);//發(fā)送MPU6050地址進(jìn)行寫操作

while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_RECEIVER_MODE_SELECTED));//在EV6上測(cè)試并清除

while(NumByteToRead)//當(dāng)有數(shù)據(jù)被讀取到的時(shí)候

{

if(NumByteToRead == 1)

{

I2C_AcknowledgeConfig(I2C1, DISABLE);//Acknowledge不使能

I2C_GenerateSTOP(I2C1, ENABLE);//發(fā)送停止條件

}

if(I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_BYTE_RECEIVED))//在EV7上測(cè)試并清除

{

*pBuffer = I2C_ReceiveData(I2C1);//從MPU6050讀取一個(gè)字節(jié)

pBuffer++;//指向?qū)⒈4孀x取的字節(jié)的下一個(gè)位置

NumByteToRead--;//讀取字節(jié)計(jì)數(shù)器減一

}

}

I2C_AcknowledgeConfig(I2C1, ENABLE);//啟用確認(rèn)以準(zhǔn)備再次接收

}

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 美女日皮网站 | 国产小视频在线 | 毛片视频观看 | 久草视频观看 | 国产精品福利在线 | 国产成人免费视频网站视频社区 | 日韩在线一区二区三区 | 在线视频亚洲 | 欧美精品在线一区二区三区 | 亚洲一区二区免费 | 日日摸夜夜爽人人添av | 亚洲女优在线播放 | 午夜视频导航 | 久久精品国产99国产精品 | 亚洲成人精品一区 | 四虎伊人 | 成人av一区二区三区 | 国产1区2区3区 | 91精品久久久久久久久久小网站 | 日韩中文字幕一区 | 亚洲 中文 欧美 日韩 在线观看 | 成人福利网站 | 男人天堂国产 | 91日日| 国产小视频精品 | 久久综合伊人一区二区三 | 亚洲国产精品久久久久秋霞不卡 | 天天影视综合 | 亚洲精品免费在线观看 | 青青草视频网 | 日韩精品在线播放 | 日韩久久中文字幕 | 成人精品区 | 精品国产高清一区二区三区 | 97精品国产手机 | 大伊人久久 | 日韩和的一区二区 | 在线视频a| 久久精品国产一区二区三区 | 颜色网站在线观看 | 国产69精品久久99不卡免费版 |