一 前记
MPU-60X0 是全球首例9 轴运动处理传感器。它集成了3 轴MEMS 陀螺仪,3 轴MEMS加速度计,以及一个可扩展的数字运动处理器DMP(Digital Motion Processor),可用I2C接口连接一个第三方的数字传感器,比如磁力计。扩展之后就可以通过其I2C 或SPI 接口输出一个9 轴的信号(SPI 接口仅在MPU-6000 可用)。MPU-60X0 也可以通过其I2C 接口连接非惯性的数字传感器,比如压力传感器。该传感器在可穿戴市场应用十分广泛。把该传感器和超低功耗的mcu芯片结合,可以实现穿戴式设备的小尺寸,超长待机等特点。
 
二 源码解析
 
笔者用的是该mcu芯片的I2C接口和该传感器做通信接口,具体初始化代码如下:
uint32_t app_mpu6050_init(void)
{
int ret = 0; //reset mpu6050
sensor_write(MPU_PWR_MGMT1_REG,0x80); am_util_delay_ms(100); //wake up mpu6050
sensor_write(MPU_PWR_MGMT1_REG,0x00);
MPU_Set_Gyro_Fsr(3);
MPU_Set_Accel_Fsr(0);
MPU_Set_Rate(50); sensor_write(MPU_INT_EN_REG,0x00); // close all irq
sensor_write(MPU_USER_CTRL_REG,0x00); // i2c master closed
sensor_write(MPU_FIFO_EN_REG,0x00); // close fifo mode
sensor_write(MPU_INTBP_CFG_REG,0x80); //init low en uint8_t rx_addr = 0;
rx_addr = sensor_read(MPU_DEVICE_ID_REG);
am_util_stdio_printf("i2c rx addr is:0x%x \n\r",rx_addr);
if(rx_addr == MPU_ADDR)
{
sensor_write(MPU_PWR_MGMT1_REG,0x01);
sensor_write(MPU_PWR_MGMT2_REG,0x00); //acceleration and gyros
MPU_Set_Rate(50); //设置采样率为50Hz
}
else
{
am_util_stdio_printf("app_mpu6050_init failed:0x%x \n",ret); return 1;
} am_util_stdio_printf("app_mpu6050_init success:0x%x \n",ret); return 0;
}
处理函数:
void app_mpu6050_process(void)
{
short aacx,aacy,aacz;
short gyrox,gyroy,gyroz;
uint32_t i2c_cnt = 0; while(1)
{
short temp_per = MPU_Get_Temperature(); MPU_Get_Gyroscope(&gyrox,&gyroy,&gyroz);
MPU_Get_Accelerometer(&aacx,&aacy,&aacz);
am_util_stdio_printf("get_temp:%d \n",temp_per);
am_util_stdio_printf("get_gyroscope is x:%d y:%d z:%d \n",gyrox,gyroy,gyroz);
am_util_stdio_printf("get_acceleromoeter is x:%d y:%d z:%d \n",aacx,aacy,aacz); am_util_delay_ms(1000);
am_util_stdio_printf("i2c_cnt:%d \n",i2c_cnt++); };
}
这里I2C的接口协议属于标准协议,只需要自己完成函数封装即可,这里不做赘述了。
 
三 效果展示:
 
从打印信息来看,数据能完整读取展现出来,如下图所示:

这里接下来就是根据实际的应用,来做不同的算法处理了。


基于Apollo3 Blue MCU芯片的可穿戴产品解决方案开发之六轴加速度传感器适配的更多相关文章

  1. 全球主流8位MCU芯片详细解剖No.2:英飞凌 XC866 - 全文

    [导读] XC866是新型8位微控制器系列(XC800)的第一代系列产品,集成高性能8051核.片内FLASH及功能强大的外设集.此外,XC800系列产品内部集成的片 内振荡器和支持3.3V或5.0V ...

  2. 基于STM32F1的时钟芯片DS1302驱动

    目录 DS1302.h源代码 DS1302.c源代码 DS1302.h源代码 /** ********************************************************* ...

  3. uboot的GPIO驱动分析--基于全志的A10芯片【转】

    本文转载自:http://blog.csdn.net/lw2011cg/article/details/68954707 uboot的GPIO驱动分析--基于全志的A10芯片 转载至:http://b ...

  4. 基于xilinx Zynq UltraScale MPSoC平台的核心板及开发板介绍-米尔科技

    近日,米尔科技推出国内首款基于xilinx Zynq UltraScale+MPSoC 平台的核心板及开发板.其优势主要有:采用16纳米制程,相比Znyq7000系列每瓦性能提升5倍,且单芯片融合4核 ...

  5. 基于英特尔® 至强™ 处理器 E5 产品家族的多节点分布式内存系统上的 Caffe* 培训

    原文链接 深度神经网络 (DNN) 培训属于计算密集型项目,需要在现代计算平台上花费数日或数周的时间方可完成. 在最近的一篇文章<基于英特尔® 至强™ E5 产品家族的单节点 Caffe 评分和 ...

  6. 【Open Search产品评测】-- 淘点点:基于OpenSearch,轻松实现一整套O2O类搜索解决方案

     [Open Search产品评测]--  淘点点:基于OpenSearch,轻松实现一整套O2O类搜索解决方案   [使用背景] 我们淘点点团队应该可以算是内网首批使用opensearch来搭建应用 ...

  7. 基于 Aliexpress API 的小程序 : 批量 Copy 产品到不同的店铺

    第一个基于 Aliexpress API 的小程序 : 批量 Copy 产品到不同的店铺 还没来得及用 API 重写软件, 先写个小程序来缓解一下手工压力: 批量Copy 产品到不同的店铺. 开网店 ...

  8. Cola Cloud 基于 Spring Boot, Spring Cloud 构建微服务架构企业级开发平台

    Cola Cloud 基于 Spring Boot, Spring Cloud 构建微服务架构企业级开发平台: https://gitee.com/leecho/cola-cloud

  9. 基于Jmeter跟Jenkins的自动化性能测试的一站式解决方案(转)

    www.MyException.Cn  网友分享于:2015-08-26  浏览:0次   基于Jmeter和Jenkins的自动化性能测试的一站式解决方案 作者: Yu, Qingguo Shen, ...

  10. 基于 Express+Gulp+BrowserSync 搭建一套高性能的前端开发环境

    基于 Express+Gulp+BrowserSync 搭建一套高性能的前端开发环境 Express 是比较经典的,也是最常用的 Nodejs Web框架. 一.Express 快速构建一个web应用 ...

随机推荐

  1. Go语言实现八大排序|排序算法|超详细保姆级别注释

    前言 那么这里博主先安利一些干货满满的专栏了! 首先是博主的高质量博客的汇总,这个专栏里面的博客,都是博主最最用心写的一部分,干货满满,希望对大家有帮助. 高质量博客汇总https://blog.cs ...

  2. MyBatis动态sql之foreach标签 构建 in 语句

    <foreach> 元素主要用在构建 in 条件中,它可以在 SQL 语句中迭代一个集合.<foreach> 元素的属性主要有 item.index.collection.op ...

  3. Flink CDC实时同步PG数据库到Kafka

    一.安装规划 操作系统 服务器IP 主机名 硬件配置 CentOS7.6 192.168.80.131 hadoop01 内存:2GB,CPU:2核,硬盘:100GB CentOS7.6 192.16 ...

  4. 跨界协作:借助gRPC实现Python数据分析能力的共享

    gRPC是一个高性能.开源.通用的远程过程调用(RPC)框架,由Google推出.它基于HTTP/2协议标准设计开发,默认采用Protocol Buffers数据序列化协议,支持多种开发语言. 在gR ...

  5. CF-928(已更新:B C E)

    CF-928 排名四千多,目前为止排名最高的一场~ E题我赛时基本上是猜的结论(但是也推了快一小时才想到有这个可能性),因此目前只能放个码在这(⊙﹏⊙) D的话问了学长思路,正在补了0-^-0 --但 ...

  6. 【解决方案】Java 互联网项目如何防止集合堆内存溢出(一)

    目录 前言 一.代码优化 1.1Stream 流自分页 1.2数据库分页 1.3其它思考 二.硬件配置 2.1云服务器配置 三.文章小结 前言 OOM 几乎是笔者工作中遇到的线上 bug 中最常见的, ...

  7. 使用SYS_CONTEXT

    使用SYS_CONTEXT 1.什么是SYS_CONTEXT? SYS_CONTEXT 函数是Oracle提供的一个获取环境上下文信息的预定义函数. 该函数用来返回一个指定namespace下的par ...

  8. Java判断是否为闰年

    题目: 判断一个输入的整数是否为闰年? 1.需要对输入的数据类型进行验证 2.支持多次输入和结束符号判断,例如输入q代表退出程序. 分析: 闰年的判断规则如下: (1)若某个年份能被4整除但不能被10 ...

  9. 骨牌铺方格 SDUT

    状态转移方程:dp[i] = dp[i - 1] + dp[i - 2]. 当前行,可能是由上一行转移过来的,那么当前行就只能横着铺,所以方案数是dp[i - 1]. 当前行,可能是由i-2行转移过来 ...

  10. std::vector<std::string> 与 char** 的转换

    vecotr 容器中插入多条字符串,再将 vector 的地址转换为 char** 代码如下: #include <stdio.h> #include <string> #in ...