【MEMS传感器】BMI160九轴传感器SPI驱动
BMI160为九轴传感器,这里只获取加速度与陀螺的原始数据。
初始化调用
BMI160_Init();
获取数据调用
BMI160_GetACC();BMI160_GetGRO();
头文件:
#ifndef BMI160_H_
#define BMI160_H_#include "include.h"#define BMI160 1#if BMI160
struct sensor_map
{
uint8_t Acc_conf ;
uint8_t Acc_range ;
};
#endifvoid BMI160_Read_ID(void);
void BMI160_Restart(void);
void BMI160_Init(void);
void BMI160_config(void);//配置 ODR resolution BW
void BMI160_GetGRO(void);
void BMI160_GetACC(void);#endif /* BMI160_H_ */
源文件:
#include "BMI160.h"
uint8_t read_BMI160_ID=0xff;struct sensor_map BMI160_reg={.Acc_conf =0x40,.Acc_range =0x41,};void BMI160_Read_ID(void)
{uint8_t temp_who_am_i,num;for (num=0;num<4;num++){SPI_master_read_register(0x00,1,&temp_who_am_i);if(temp_who_am_i == 0xD1){printf("who-am-i = %d, =0x%02x\r\n",temp_who_am_i,temp_who_am_i);break;}else if(num==3 && temp_who_am_i != 0xD1){read_BMI160_ID = false;printf("who-am-i = %d, =0x%02x\r\n",temp_who_am_i,temp_who_am_i);printf("NO BMI160\r\n");}}
}void BMI160_Restart(void)
{}void BMI160_Init(void)
{BMI160_Read_ID();if (read_BMI160_ID!=0){BMI160_Restart();}delay_ms(10);BMI160_config();delay_ms(20);
}void BMI160_config(void)//配置 ODR resolution BW
{uint8_t temp,ch ;temp=0x26;SPI_master_write_register(0x40, 1, &temp); //ACC ODR:25Hz acc_bwp=3db(defult:acc_us=0b0) temp=0x0C;SPI_master_write_register(0x41, 1, &temp); //Acc_range:16gtemp=0x26;SPI_master_write_register(0x42, 1, &temp); //Gro ODR:25Hz gro_bwp=3db temp=0x03;SPI_master_write_register(0x43, 1, &temp); //Gro_range:250dps//FIFO Configtemp=0xfe;SPI_master_write_register(0x47, 1, &temp); //enable//Set PMU mode Register(0x7E) CMD attention the commandtemp=0x11;SPI_master_write_register(0x7E, 1, &temp); //Acc normal modetemp=0x15;SPI_master_write_register(0x7E, 1, &temp); //Gro normal mode//check the PMU_status Register(0x03) SPI_master_read_register(0x03,1,&ch);if (ch == 0x14){printf("sensor is Normal \r\n");}
}void BMI160_GetGRO(void)
{uint8_t buf[6]={0};int16_t gry[3]={0};SPI_master_read_register(0x0c,6,&buf);gry[0] = (int16_t)((buf[0]) | (int16_t)buf[1] << 8);gry[1] = (int16_t)((buf[2]) | (int16_t)buf[3] << 8);gry[2] = (int16_t)((buf[4]) | (int16_t)buf[5] << 8);printf("Gro,%d,%d,%d\r\n",gry[0],gry[1],gry[2]);
}
void BMI160_GetACC(void)
{uint8_t buf[6]={0};int16_t Acc[3]={0};SPI_master_read_register(0x12,6,&buf);Acc[0] = (int16_t)((buf[0]) | (int16_t)buf[1] << 8);Acc[1] = (int16_t)((buf[2]) | (int16_t)buf[3] << 8);Acc[2] = (int16_t)((buf[4]) | (int16_t)buf[5] << 8);printf("Acc,%d,%d,%d\r\n",Acc[0],Acc[1],Acc[2]);
}
【MEMS传感器】BMI160九轴传感器SPI驱动相关推荐
- arduino调试BNO080高精准度九轴传感器模块
arduino调试BNO080高精准度九轴传感器模块 原文链接:https://www.yourcee.com/newsinfo/2925867.html 1.简介 2.原理图 3.使用前准备 4.接 ...
- 九轴传感器姿态----AHRS算法开源项目推荐
1. AHRS简介 九轴MEMS传感器(三轴陀螺仪+三轴加速度计+三轴磁强计)可以用来做航向和姿态参考系统,即AHRS(attitude &heading reference system), ...
- 三轴加速度计测量值生成算法matlab,[算法][三轴、六轴、九轴传感器算法分析] 1、分享一个三轴加速计matlab动态可视化脚本...
一.有啥用 这里用的是LIS3DH三轴加速计,输出为X.Y.Z轴的加速度,通过串口连接电脑,电脑里运行matlab脚本通过串口实时获取数据并做可视化显示. 这里虽然是针对LIS3DH的,其实稍作修改即 ...
- 三轴加速度传感器和六轴惯性传感器_[算法][三轴、六轴、九轴传感器算法分析] 1、分享一个三轴加速计matlab动态可视化脚本...
一.有啥用 这里用的是LIS3DH三轴加速计,输出为X.Y.Z轴的加速度,通过串口连接电脑,电脑里运行matlab脚本通过串口实时获取数据并做可视化显示. 这里虽然是针对LIS3DH的,其实稍作修改即 ...
- 九轴传感器MPU9250数据读取磁力计
有的小伙伴找不到MPU9250的中文资料,只能根据MPU6500的例程读取六轴. 关键的地方是MPU9250里已经说明了,看不到实在不应该. MPU9150里面是MPU6500+AK8975,MPU9 ...
- 四旋翼无人机学习第6节--SPL06气压传感器和MPU9250九轴传感器电路分析
文章目录 0 前言 1 SPL06气压传感器芯片手册示例图分析 2 原理图绘制成果分享 3 芯片IIC功能介绍 4 MPU9250气压传感器芯片手册示例图分析 5 原理图绘制成果分享 6 防护罩原理图 ...
- UAV021(三):九轴传感器(加速度计、陀螺仪和磁力计)校准方法
目录 序 一. 加速度计简单校准 二.陀螺仪简单校准 三.磁力计简单校准 序 UAV021(二)中使用STM32F4通过IIC协议实现了读取加速度.角速度以及Yaw角.然而,原始数据是不能用的,校准是 ...
- 六轴传感器基础知识学习:MPU6050特性,四元数,姿态解算,卡尔曼滤波
实际上,只要说到多少轴的传感器一般是就是指加速度传感器(即加速计).角速度传感器(即陀螺仪).磁感应传感器(即电子罗盘).这三类传感器测量的数据在空间坐标系中都可以被分解为X,Y,Z三个方向轴的力,因 ...
- 3轴/6轴/9轴传感器是什么, 加速计/陀螺仪/磁力计又是什么?
欢迎加入Unity业内qq交流群:956187480 qq扫描二维码加群 转自:加速计/陀螺仪/磁力计是什么,3轴/6轴/9轴传感器又是什么?_不积跬步,无以至千里!-CSDN博客 现在越来越多的设备 ...
- 【STM32Cube】学习笔记(三):六轴传感器
文章目录 摘要 一.简介 1.I2C原理 2.MPU6050介绍 3.MPU6050寄存器介绍 4.DMP使用 二.硬件电路设计 三.软件设计 1.CubeMX配置 2.CubeIDE代码 3.结果显 ...
最新文章
- 使用ffmpeg从mp4文件中提取视频流到h264文件中
- 失战于知识付费,会员与智能硬件将助蜻蜓FM打赢下半场战争?
- Window.navigator
- 2019-02-25-算法-进化
- jvm MinorGC和查看GC日志
- wildfly_从WildFly 9(子系统)中运行OkHttpClient
- Flex读取xml文件
- S2SH 第一次整合的经历
- 咏南中间件+开发框架中秋国庆大促
- 对比Vector、ArrayList、LinkedList有何区别(转)
- c语言贪心算法合并箭,贪心算法:用最少数量的箭引爆气球
- 设置finder窗口大小的5个小技巧!速看?
- STM32要怎么选型?
- linux格式化硬盘 中断,linux格式化硬盘【调解方案】
- 通过rundll32调用系统对话框
- ant下载与本地配置
- 小学生组词词典 官方
- Mac使用OBS直播配置教程|解疑答惑
- JavaScript——移动端网页特效
- 20189220 余超《Linux内核原理与分析》第五周作业
热门文章
- StretchDIBits速度测试(COLORONCOLOR)
- Win 10 蓝屏,出现DRIVER_POWER_STATE_FAILURE的解决方法
- 解决小米wifi在windows10无法创建问题
- [乱七八糟]《进化论——人类科学史上最大的谎言》
- 点到点(point-to-point) 与 端到端(end to end)
- iOS 实现时间线列表效果
- solidworks新建工程图默认单位为毫米
- 面试 — 海康威视(Android客户端开发)
- 从选课系统看软件开发周期
- phpQuery占用过多内存的解决方法