版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
何配置MPU6050并從數(shù)據(jù)寄存器讀出測(cè)量值,而之后的數(shù)據(jù)處理很少涉及。這使得像我一樣的菜鳥(niǎo)們十分抓狂。所以在此開(kāi)辟專欄,希望大家集思廣益,共同征服MPU6050。對(duì)于那些還不知道MPU6050是啥玩意的童鞋們,百度文科會(huì)告訴你。由于對(duì)此傳感器的介紹鋪天蓋地,所以此處就一筆帶過(guò),不再詳細(xì)介紹。先上張圖:毫無(wú)疑問(wèn),無(wú)論是學(xué)習(xí)MPU6050,還是其他ICs,大家首先想到的是數(shù)據(jù)手冊(cè)。沒(méi)錯(cuò),MPU6050有兩個(gè)非常重要的數(shù)據(jù)手冊(cè),一個(gè)是PS-MPU-6000A,另一個(gè)是RM-MPU-6000A。其他的都是原廠評(píng)估板的相關(guān)使用手冊(cè),對(duì)我們屌絲來(lái)說(shuō)可以不用拜讀了。PS-MPU-6000A是產(chǎn)品說(shuō)明書(shū),主要介紹了內(nèi)部的結(jié)構(gòu)、技術(shù)參數(shù)以及封裝等內(nèi)容;RM-MPU-6000A(*)是寄存器映射和描述文檔,里面詳細(xì)介紹了MPU6050內(nèi)部各個(gè)寄存器的實(shí)現(xiàn)功能,對(duì)我們兩個(gè)手冊(cè)。下面就把自己的心得和大家一起分享一下(產(chǎn)品說(shuō)明書(shū)網(wǎng)上已有中文版,這里著重講一下第二個(gè)數(shù)據(jù)手冊(cè))。RM-MPU-6000A列出了將近100個(gè)寄存器,還有一部分寄存器沒(méi)有列出來(lái),估計(jì)是不對(duì)用線配置相關(guān)寄存器、中斷配置寄存器、數(shù)據(jù)寄存器、第三方傳感器配置寄存器、FIFO相關(guān)的MPU6050模塊并沒(méi)有外接第三方傳感器,所以需要配置的寄存器就更少了。下面我們就一起來(lái)學(xué)習(xí)一下一些比較重要的寄存器。系統(tǒng)配置寄存器該寄存器用來(lái)配置工作模式和時(shí)鐘源。此外,還可以通過(guò)配置該寄存器復(fù)位整個(gè)器件以及禁8MHZ的時(shí)鐘源。該寄存器用來(lái)配置加速度計(jì)模式下的喚醒頻率和待機(jī)模式。L2014年各行業(yè)工程師考試備考資料及真題集錦安全工程師電氣工程師物業(yè)管理師注冊(cè)資產(chǎn)評(píng)估師注冊(cè)化工工程師該寄存器用來(lái)添加加速度計(jì)上電的延遲時(shí)間,默認(rèn)是延時(shí)為4ms。該寄存器用來(lái)復(fù)位各個(gè)傳感器的信號(hào)通路。陀螺儀加速度配置寄存器該寄存器用來(lái)產(chǎn)生采樣率(SampleRate=GyroscopeOutputRate/(1+SMPLRT_DIV))。偶設(shè)FSYNC管腳采樣率和數(shù)字低通濾波器。該寄存器用來(lái)啟動(dòng)陀螺儀自檢和設(shè)置陀螺儀測(cè)量范圍(用戶可根據(jù)自己的要求進(jìn)行設(shè)置)。該寄存器用來(lái)啟動(dòng)加速度計(jì)自檢和設(shè)置加速度計(jì)測(cè)量范圍(用戶可根據(jù)自己的要求進(jìn)行設(shè)置)。手冊(cè)上說(shuō)也能配置高通濾波器,但剩余的低三位沒(méi)用到,不知如何設(shè)置?I2C配置相關(guān)寄存器配置寄存器該寄存器用來(lái)配置INT管腳的中斷行為。偶設(shè)置為0x30,推挽輸出,高電平有效,發(fā)生中該寄存器用來(lái)使能各種中斷源。偶設(shè)置為0x01,使能數(shù)據(jù)準(zhǔn)備好中斷。當(dāng)此中斷產(chǎn)生時(shí),道是怎么回事,偶這樣設(shè)置也能正常工作)。中斷狀態(tài)寄存器,可以通過(guò)讀取相應(yīng)中斷標(biāo)志位來(lái)清除中斷。*******************************************************************************//陀螺儀MPU6050IIC測(cè)試程序*******************************************************************************/#include"stm32f10x_lib.h"#include<math.h>//KeillibraryGPIO_InitTypeDefGPIO_InitStructure;ErrorStatusHSEStartUpStatus;#define#defineucharunsignedcharuintunsignedint//定義MPU6050內(nèi)部地址//****************************************#defineSMPLRT_DIV#defineCONFIG#defineGYRO_CONFIG#defineACCEL_CONFIG#define#define#define#define#define#defineACCEL_XOUT_HACCEL_XOUT_LACCEL_YOUT_HACCEL_YOUT_LACCEL_ZOUT_HACCEL_ZOUT_L//#defineTEMP_OUT_H//#defineTEMP_OUT_L//#define#define#define#define#define#defineGYRO_XOUT_HGYRO_XOUT_LGYROYOUT_HGYRO_YOUT_LGYRO_ZOUT_HGYRO_ZOUT_L#definePWR_MGMT_1//#defineWHO_AM_IzxA濾波頻率,典型值:0x06(5Hz)xBxCxDxEx3Fx40x41x42x43x44x45x46x47x480x75//IIC地址寄存器(默認(rèn)數(shù)值0x68,只讀)/****************************ADDRESS地址引腳不同修改rTXDATAunsignedcharBUF[10];chartest=0;//顯示據(jù)緩存區(qū)//接收數(shù)據(jù)緩存區(qū)//IIC用到//************************************擬IIC端口輸出輸入定義*/#defineSCL_HGPIOB->BSRR=GPIO_Pin_6#defineSCL_LGPIOB->BRR=GPIO_Pin_6#defineSDA_HGPIOB->BSRR=GPIO_Pin_7#defineSDA_LGPIOB->BRR=GPIO_Pin_7#defineSCL_readGPIOB->IDR&GPIO_Pin_6#defineSDA_readGPIOB->IDR&GPIO_Pin_7/*函數(shù)申明-----------------------------------------------*/voidRCC_Configuration(void);voidGPIO_Configuration(void);voidNVIC_Configuration(void);voidUSART1_Configuration(void);voidWWDG_Configuration(void);voidDelay(u32nTime);voidDelayms(vu32m);/*變量定義----------------------------------------------*//*******************************/voidDATA_printf(uchar*s,shorttemp_data){if(temp_data<0){temp_data=-temp_data;s}else*s='';*++s=temp_data/100+0x30;temp_data=temp_data%100;*++s=temp_data/10+0x30;temp_data=temp_data%10;*++s=temp_data+0x30;}//取余運(yùn)算//取余運(yùn)算/********************************************************************************FunctionName:I2C_GPIO_Config*Descriptionut:ConfigrationSimulationIICGPIO******************************************************************************voidI2C_GPIO_Config(void){GPIO_InitTypeDefGPIO_InitStructure;GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_OD;GPIO_Init(GPIOB,&GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_7;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_OD;GPIO_Init(GPIOB,&GPIO_InitStructure);}/********************************************************************************FunctionName:I2C_delay*Descriptionut:SimulationIICTimingseriesdelayvoidI2C_delay(void){while(i){}}voiddelay5ms(void){inti000;while(i){}/********************************************************************************FunctionName:I2C_Start*Description:MasterStartSimulationIICCommunication*Input:None*Output:None*Return:WheatherStart******************************************************************************boolI2C_Start(void){SDA_H;SCL_H;elayif(!SDA_read)returnFALSE;//SDA線為低電平則總線忙,退出SDA_L;elayif(SDA_read)returnFALSE;//SDA線為高電平則總線出錯(cuò),退出SDA_L;elayrnTRUE/********************************************************************************FunctionName:I2C_Stop*Descriptionut:MasterStopSimulationIICCommunication******************************************************************************voidI2C_Stop(void){SCL_L;elaySDA_L;elaySCL_H;elaySDA_H;elay/********************************************************************************FunctionName:I2C_Ack*Descriptionut:MasterSendAcknowledgeSingle******************************************************************************voidI2C_Ack(void){SCL_L;elaySDA_L;elaySCL_H;elaySCL_L;y/********************************************************************************FunctionName:I2C_NoAck*Descriptionut:MasterSendNoAcknowledgeSingle******************************************************************************voidI2C_NoAck(void){SCL_L;elaySDA_H;elaySCL_H;elaySCL_L;elay}/********************************************************************************FunctionName:I2C_WaitAck*Descriptionut:MasterReseriveSlaveAcknowledgeSingle:WheatherReseriveSlaveAcknowledgeSingle******************************************************************************lICWaitAckvoidACKACK{SCL_L;elaySDA_H;elaySCL_H;elayif(SDA_read){SCL_L;elay}SCL_L;elayrnTRUE/********************************************************************************FunctionName:I2C_SendByte*Descriptionut:MasterSendaBytetoSlave:WillSendDate******************************************************************************voidI2C_SendByte(u8SendByte)//數(shù)據(jù)從高位到低位//{while(i--){SCL_L;yif(SendByte&0x80)SDA_H;SDA_L;SendByte<<=1;ySCL_H;y}SCL_L;/********************************************************************************FunctionName:I2C_RadeByte*Descriptionut:MasterReseriveaByteFromSlaveomSlave******************************************************************************unsignedcharI2C_RadeByte(void)//數(shù)據(jù)從高位到低位//{uReceiveByte=0;SDA_H;while(i--){ReceiveByteSCL_L;SCL_H;DAread{ReceiveByte0x01;}}SCL_L;rnReceiveByte}//ZRX//單字節(jié)寫(xiě)入*******************************************boolSingle_Write(unsignedcharSlaveAddress,unsignedcharREG_Address,unsignedcharREG_data)//void{if(!I2C_Start())returnFALSE;I2C_SendByte(SlaveAddress);//發(fā)送設(shè)備地址+寫(xiě)信號(hào)//I2C_SendByte(((REG_Address&0x0700)>>7)|SlaveAddress&0xFFFE);//設(shè)置高起始地址+器件地址if(!I2C_WaitAck()){I2C_Stop();returnFALSE;}I2C_SendByte(REG_Address);//設(shè)置低起始地址aitAckI2C_SendByte(REG_data);Acktopdelayms);rnTRUE}//單字節(jié)讀取*****************************************unsignedcharSingle_Read(unsignedcharSlaveAddress,unsignedcharREG_Address){unsignedcharREG_data;if(!I2C_Start())returnFALSE;I2C_SendByte(SlaveAddress);//I2C_SendByte(((REG_Address&0x0700)>>7)|REG_Address&0xFFFE);//設(shè)置高起始地址+器件地址if(!I2C_WaitAck()){I2C_Stop();test=1;returnFALSE;}I2C_SendByte((u8)REG_Address);//設(shè)置低起始地址tAckI2C_SendByte(SlaveAddress+1);tAckREG_data=I2C_RadeByte();ICNoAck//returnTRUE;returnREGdata}/****************************************************************************voidRCC_Configuration(void){/*RCCsystemreset(fordebugpurpose)*/CCDeInit/*EnableHSE*/RCC_HSEConfig(RCC_HSE_ON);/*WaittillHSEisready*/HSEStartUpStatus=RCC_WaitForHSEStartUp();if(HSEStartUpStatus==SUCCESS){/*HCLK=SYSCLK*/RCC_HCLKConfig(RCC_SYSCLK_Div1);/*PCLK2=HCLK*/RCC_PCLK2Config(RCC_HCLK_Div1);/*PCLK1=HCLK/2*/RCC_PCLK1Config(RCC_HCLK_Div2);/*Flash2waitstate*/FLASH_SetLatency(FLASH_Latency_2);/*EnablePrefetchBuffer*/FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);/*PLLCLK=8MHz*9=72MHz*/RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_9);/*EnablePLL*/RCC_PLLCmd(ENABLE);/*WaittillPLLisready*/while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)==RESET){}/*SelectPLLassystemclocksource*/RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);/*WaittillPLLisusedassystemclocksource*/while(RCC_GetSYSCLKSource()!=0x08){}}/*EnableGPIOA,GPIOB,GPIOC,GPIOD,GPIOE,GPIOF,GPIOGandAFIOclocks*/RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB,RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOD,ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE|RCC_APB2Periph_GPIOF,ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOG|RCC_APB2Periph_AFIO,ENABLE);}/*******************************************************************************************************************************************************voidGPIO_Configuration(void){GPIO_InitTypeDefGPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOD,ENABLE);/*ConfigureUSART1Tx(PA.09)asalternatefunctionpush-pull*/GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOA,&GPIO_InitStructure);//復(fù)用推挽輸出50MHz/*ConfigureUSART1Rx(PA.10)asinputfloating*/GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10;//選中管腳10GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;//浮空輸入GPIO_Init(GPIOA,&GPIO_InitStructure);//選擇A端口}/*******************************************************************************************************************************************************voidUSART1_Configuration(void){USART_InitTypeDefUSART_InitStructure;USART_ClockInitTypeDefUSART_ClockInitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1|RCC_APB2Periph_USART1,ENABLE);USART_ClockInitStructure.USART_Clock=USART_Clock_Disable;平活動(dòng)USART_ClockInitStructure.USART_CPOL=USART_CPOL_Low;平USART_ClockInitStructure.USART_CPHA=USART_CPHA_2Edge;個(gè)邊沿進(jìn)行數(shù)據(jù)捕獲USART_ClockInitStructure.USART_LastBit=USART_LastBit_Disable;/*ConfiguretheUSART1synchronousparamters*/USART_ClockInit(USART1,&USART_ClockInitStructure);初始化設(shè)置//時(shí)鐘低電 //時(shí)鐘低電 //時(shí)鐘第二//最后一位數(shù)據(jù)//時(shí)鐘參數(shù)USART_InitStructure.USART_BaudRate=9600;USART_InitStructure.USART_WordLength=USART_WordLength_8b;據(jù)USART_InitStructure.USART_StopBits=USART_StopBits_1;USART_InitStructure.USART_Parity=USART_Parity_No;//波特率為://8位數(shù)//在幀結(jié)尾傳//奇偶失能USART_InitStructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None;//硬件流控制失能USART_InitStructure.USARTUSART_InitStructure.USART_Mode=USART_Mode_Rx|USART_Mode_Tx;送使能+接收使能/*ConfigureUSART1basicandasynchronousparamters*/USART_Init(USART1,&USART_InitStructure);/*EnableUSART1*/USART_ClearFlag(USART1,USART_IT_RXNE);USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);USART_Cmd(USART1,ENABLE);}//USART1總開(kāi)關(guān):開(kāi)啟/*******************************************************************************************************************************************************voidNVIC_Configuration(void){NVIC_InitTypeDefNVIC_InitStructure;NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);NVIC_InitStructure.NVIC_IRQChannel=WWDG_IRQChannel;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;NVIC_Init(&NVIC_InitStructure);}/*******************************************************************************************************************************************************voidWWDG_Configuration(void){RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG,ENABLE);WWDG_SetPrescaler(WWDG_Prescaler_8);=(PCLK1/4096)/8=244Hz(~4ms)//WWDGclockcounterWWDG_SetWindowValue(0x41);x41WWDG_Enable(0x50);WWDGtimeout=~4ms*64=262ms//SetWindowvalueto//EnableWWDGandsetcountervalueto0x7F,WWDG_ClearFlag();WWDG_EnableIT();}//ClearEWIflag//EnableEWinterrupt/*******************************************************************************************************************************************************voidDelay(vu32nCount){for(;nCount!=0;nCount--);}/*******************************************************************************************************************************************************voidDelayms(vu32m){ifor(;m!=0;m--)for(i=0;i<50000;i++);}/******************************************************************************輸**輸**返voidWWDG_IRQHandler(void){/*UpdateWWDGcounter*/WWDG_SetCounter(0x50);/*ClearEWIflag*/WWDG_ClearFlag();}//************************************************voidUSART1_SendData(ucharSendData){USART_SendData(USART1,SendData);s}//初始化MPU6050,根據(jù)需要請(qǐng)參考pdf進(jìn)行修改************************voidInit_MPU6050(void){Single_Write(MPU6050_Addr,PWR_MGMT_1,0x00);//解除休眠狀態(tài)Single_Write(MPU6050_Addr,SMPLRT_DIV,0x07);Single_Write(MPU6050_Addr,CONFIG,0x06);Single_Write(MPU6050_Addr,GYRO_CONFIG,0x18);Single_Write(MPU6050_Addr,ACCEL_CONFIG,0x01);}//******讀取MPU6050數(shù)據(jù)****************************************voidREAD_MPU6050(void){BUF[0]=Single_
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 結(jié)合中西醫(yī)療技術(shù)的探索
- 化工安全生產(chǎn)與環(huán)境保護(hù)管理措施研究
- 石河子大學(xué)《債法》2022-2023學(xué)年第一學(xué)期期末試卷
- 石河子大學(xué)《土木工程材料》2022-2023學(xué)年第一學(xué)期期末試卷
- 石河子大學(xué)《人力資源管理》2023-2024學(xué)年第一學(xué)期期末試卷
- 石河子大學(xué)《當(dāng)代國(guó)際共產(chǎn)主義運(yùn)動(dòng)》2023-2024學(xué)年第一學(xué)期期末試卷
- 沈陽(yáng)理工大學(xué)《運(yùn)動(dòng)控制基礎(chǔ)》2022-2023學(xué)年期末試卷
- 沈陽(yáng)理工大學(xué)《汽車(chē)構(gòu)造》2022-2023學(xué)年第一學(xué)期期末試卷
- 造價(jià)年終總結(jié)匯報(bào)
- 沈陽(yáng)理工大學(xué)《工程力學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 公安機(jī)關(guān)辦理行政案件程序規(guī)定習(xí)題庫(kù)及參考答案
- 基礎(chǔ)會(huì)計(jì)教材電子版
- 【課件】讀后續(xù)寫(xiě):思維導(dǎo)圖情節(jié)構(gòu)建 課件-2023屆高三英語(yǔ)寫(xiě)作專項(xiàng)
- 政府機(jī)關(guān)辦公樓物業(yè)管理服務(wù)方案專業(yè)完整版
- 風(fēng)險(xiǎn)分級(jí)管控清單(完整版)
- 醫(yī)院服務(wù)-PPT課件
- SYB創(chuàng)業(yè)培訓(xùn)全課件(ppt)
- 危險(xiǎn)化學(xué)品儲(chǔ)存、經(jīng)營(yíng)企業(yè)專業(yè)檢查表(長(zhǎng)輸管線)
- GB∕T 24694-2021 玻璃容器 白酒瓶質(zhì)量要求
- 下肢動(dòng)脈硬化閉塞癥臨床路徑
- 精裝修驗(yàn)房最全表格
評(píng)論
0/150
提交評(píng)論