最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

I2C、IIC通訊(填坑作,MPU6050數(shù)據(jù)讀取,STM32主控,附源碼)

2019-07-08 12:49 作者:叭布-  | 我要投稿

上圖的VCC?接 3.3V,GND接地,SCL和SDA分別接上單片機引腳,并加上上拉電阻,AD0接地。

代碼鏈接:https://pan.baidu.com/s/1AvuMYvgX8Xy8g81S0Ay5Yg?

提取碼:sce0?

初始化單片機引腳,并置1

程序里引腳的變化順序還有延時的位置一定不要錯。

IIC起始信號;SDA置零,等待,SCL置零

寫入一次數(shù)據(jù),IIC每次寫入的數(shù)據(jù)長度都是8Bit,寫入順序是從最高位寫到最低位。

SCL置0,SDA存放數(shù)據(jù)的最高位,數(shù)據(jù)左移1位,等待,SCL置1,數(shù)據(jù)起效,等待。

右移7位:1000?0000會變成0000 0001。(0X80?>> 0X01)?

左移1位:1101 0000會變成1010 0000。(0XD0 >> 0XA0)?

每次寫完數(shù)據(jù)都要接收一次 “應(yīng)答信號” ,把SDA改為輸入模式并置1,等待,SCL置1,如果這時SDA收到0就算收到應(yīng)答。

以下為IIC通訊的測試程序,IIC通訊的首個數(shù)據(jù)一定是芯片地址,手冊上MPU6050的默認地址是1011 00xx,第一個x由AD0引腳決定,這里我把它接到了GND,所以這個x就是0,第二個x由你的目的決定,如果你打算寫入,這個x就是0,如果你打算讀取,這個x就是1,所以這里寫入的最終數(shù)據(jù)是0XD0。

如果通訊成功了,LED就會閃爍,如果LED不閃爍,就檢查芯片地址對不對,AD0引腳和芯片地址是否相符,通訊程序是否正確,每次延時給得夠不夠。

指定時間內(nèi)接收? “應(yīng)答信號” ,若等待超時就當通訊失敗,并停止通訊。

每次通訊的最后一定是停止信號;把SDA設(shè)為輸出模式,SCL置0,SDA置0,等待,SCL先置1,SDA再置1,等待。

有了這些就可以進行一次完整的寫入了,下面的程序只修改一個寄存的數(shù)據(jù),

發(fā)起起始信號;寫入芯片地址,接收應(yīng)答,寫入寄存器地址,接收,寫入數(shù)據(jù),接收應(yīng)答,停止通訊,返回"NICE",每次接收應(yīng)答的失敗都會導(dǎo)致通訊停止。


讀取一次數(shù)據(jù);先設(shè)SDA為輸入模式,把SCL設(shè)為0,等待,把SCL設(shè)為1,等待,數(shù)據(jù)左移1位,把SDA的狀態(tài)放到數(shù)據(jù)的最低位,循環(huán)八次,最后發(fā)送應(yīng)答。

如果讀取的是最后一個數(shù)據(jù)或只讀取一個數(shù)據(jù),就發(fā)送 “非應(yīng)答信號”;SCL置0,SDA置為輸出并置1,等待,SCL置1,等待,SCL置0。

讀取芯片的單個數(shù)據(jù);發(fā)起起始信號,寫入芯片地址,寫入寄存器,發(fā)起起始信號,寫入(芯片地址+1)表示讀取,讀取數(shù)據(jù),并選擇“非應(yīng)答信號”,停止通訊,返回“NICE”表示成功。

有了這些就可以完成MPU6050的數(shù)據(jù)讀取了,首先是MPU6050寫入和讀取程序的定義

MPU6050初始化和數(shù)據(jù)讀取

主函數(shù)


I2C、IIC通訊(填坑作,MPU6050數(shù)據(jù)讀取,STM32主控,附源碼)的評論 (共 條)

分享到微博請遵守國家法律
射阳县| 黄浦区| 泾川县| 丹江口市| 绥宁县| 新蔡县| 宁海县| 永清县| 尖扎县| 惠东县| 建昌县| 南郑县| 枝江市| 应用必备| 什邡市| 绥棱县| 花垣县| 介休市| 宜州市| 凤阳县| 墨竹工卡县| 墨脱县| 吉林市| 沅陵县| 丰原市| 武邑县| 栖霞市| 马龙县| 泊头市| 南乐县| 惠水县| 佛教| 常山县| 南宁市| 布尔津县| 休宁县| 东源县| 个旧市| 疏附县| 廊坊市| 左贡县|