IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> MPU6050调试记录 -> 正文阅读

[嵌入式]MPU6050调试记录

1. 硬件部分

使用的是淘宝上销售最多的6050模块
参考如图
在这里插入图片描述
下图是模块的原理图
在这里插入图片描述
使用了模块上的4根线,VCC,GND ,SCL,SDA 。具体接线方式请自行想象。

设备因为在原理图上将AD0,连接到了GND,
所以它
7位地址是 1101000 (0x68)
八位写地址 0xD1(11010001)

PS:不知道是不是板子上的LDO不好,在正负电源接反后,会烧掉LDO,以及芯片。所以请注意不要将电压接反了。

2 芯片寄存器

0x6B寄存器。设定值为0x00,

可以开始读取陀螺仪、加速度以及温度的参数。否则读出来的全为0
在这里插入图片描述

0x19寄存器。设定值为0x07

采样率分频器 SMPLRT_DIV
采样率 = 陀螺仪输出率 / (1 + SMPLRT_DIV) 陀螺仪输出率 DLPF_CFG(1A) 控制
在这里插入图片描述

0x1A寄存器。设定值为0x06

低通滤波器,以及采样频率的设置???还需要继续阅读
在这里插入图片描述

0x1C寄存器。设定值为0x00

加速度计配置
在这里插入图片描述
在这里插入图片描述

0x1B寄存器。设定值为0x08

在这里插入图片描述
在这里插入图片描述

加速度测量

在这里插入图片描述

温度

Temperature in degrees C = (TEMP_OUT Register Value as a signed quantity)/340 + 36.53
以摄氏度为单位的温度 = (TEMP_OUT 寄存器值作为有符号数)/340 + 36.53
在这里插入图片描述

陀螺仪测量

在这里插入图片描述

PS:以上寄存器信息仅作为速查参考,详情请配合MPU6050的寄存器数据手册食用。

3 软件代码

基础逻辑如下图所示

发送写指令:0xD0
发送读的起始地址:0x41
发送读指令:0xD1
接收数据:0xF2 ,0xC0
在这里插入图片描述
控制芯片使用的是恒烁的 CX32L003
官方资料连接:http://zbitsemi.com/display.php?id=44

2. 6050初始化代码

强调一下,0x6B这个地址必须要写数值进去,否则无法读出数据。

void MPU6050_INIT()
{
	
	int i=0,j=0;
  //在初始化之前要延时一段时间,若没有延时,则断电后再上电数据可能会出错??
  for(i=0;i<1000;i++)
  {
    for(j=0;j<1000;j++)
    {
      ;
    }
  }
	
	uint8_t Send_Data[2] = {0x6b,0x00};//解除休眠状态
	HAL_I2C_Master_Transmit(&i2c_test, 0xD1, Send_Data, 2);
	Send_Data[0] = 0x19;//采样率分频器  SMPLRT_DIV
	Send_Data[1] = 0x07;//采样率 = 陀螺仪输出率 / (1 + SMPLRT_DIV)  陀螺仪输出率  DLPF_CFG(1A) 控制
	HAL_I2C_Master_Transmit(&i2c_test, 0xD1, Send_Data, 2);
	
	Send_Data[0] = 0x1A;//EXT_SYNC_SET[2:0]  DLPF_CFG[2:0]低通滤波器的设置,截止频率是1K,带宽是5K
	Send_Data[1] = 0x06;//
	HAL_I2C_Master_Transmit(&i2c_test, 0xD1, Send_Data, 2);
	
	Send_Data[0] = 0x1C;//加速度计配置
	Send_Data[1] = 0x00;//± 2g
	HAL_I2C_Master_Transmit(&i2c_test, 0xD1, Send_Data, 2);

	Send_Data[0] = 0x1B;//陀螺仪配置
	Send_Data[1] = 0x08;//± 500 °/s
	HAL_I2C_Master_Transmit(&i2c_test, 0xD1, Send_Data, 2);
}

3. 主函数的操作代码

/**
  * @brief  The application entry point.
  * @retval int
  */
int main(void)
{
//	HAL_StatusTypeDef  ret = HAL_ERROR;
	
  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
	HAL_Init();		
	
  /* Configure the system clock to HIRC 24MHz*/
	SystemClock_Config();
	__HAL_RCC_GPIOA_CLK_ENABLE();
	__HAL_RCC_GPIOB_CLK_ENABLE();
	__HAL_RCC_GPIOC_CLK_ENABLE();
	__HAL_RCC_GPIOD_CLK_ENABLE();
	/* Initialize BSP Led for LED1 */	
	BSP_LED_Init(LED1);
  /* Configure uart1 for printf */	
	LogInit();//PD5 PD6
	printf("Printf success using UART1, PD5-TXD, PD6-RXD\r\n");

	I2CClock_Config();
	I2C_Init(); //PB4 PB5
	uint8_t pR2_Data[] = {0X00, 0X00,0X00, 0X00,0X00, 0X00,0X00, 0X00,0X00, 0X00,0X00, 0X00,0X00, 0X00};
	preg1_Data[0] = 0x41;
	MPU6050_INIT();
	while (1)
	{
		HAL_I2C_Master_Receive(&i2c_test, 0xD1, preg1_Data,1, pR2_Data, 14);
		printf("jiaodu = %u \r\n",jiaodu);
		BSP_LED_Toggle(LED1);
		HAL_Delay(100);
	}
}

主函数中只是将数据读取出来,并且存在数组 pR2_Data 中,后续的拟合完善后增加上信息。

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-02-28 15:45:41  更:2022-02-28 15:48:04 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 8:49:07-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码