资源简介
自己写的博世BMI160驱动,功能不太全,竟供参考。(基于STM32F030)。I2C通讯初始化相关不包含在内。

代码片段和文件信息
#include “BMI160.h“
#include “MCU_Driver.h“
#include “stm32f0xx_i2c.h“
#include “stm32f0xx_conf.h“
signed short acc[3] = {0};
signed short gry[3] = {0};
signed short mag[3] = {0};
uint8_t g_BMI160_Error = 0;
void BMI160_Init(void)
{
IIC_Init();
while(BMI160_ID != BMI160_CheckId());
BMI160_SetACC_Range(BMI160_ACC_Range16G);
BMI160_SetGRY_Range(BMI160_GRY_Range2000);
BMI160_SetMAG_Range(BMI160_MAG_Range50);
}
void BMI160_WriteOneByte(uint8_t WriteAddr uint8_t WriteData)
{
while(I2C_GetFlagStatus(I2C1 I2C_FLAG_BUSY) != RESET);//IF BUSY
I2C_TransferHandling(I2C1 BMI_WRITE_ADDR 2 I2C_AutoEnd_ModeI2C_Generate_Start_Write);
while(I2C_GetFlagStatus(I2C1 I2C_FLAG_TXIS) == RESET);//If Write OK
I2C_SendData(I2C1 WriteAddr);
while(I2C_GetFlagStatus(I2C1 I2C_FLAG_TXIS) == RESET);//If Write OK
I2C_SendData(I2C1 WriteData);
while(I2C_GetFlagStatus(I2C1 I2C_FLAG_STOPF) == RESET);
}
uint8_t BMI160_ReadOneByte(uint8_t ReadAddr)
{
uint8_t tmp;
while(I2C_GetFlagStatus(I2C1 I2C_FLAG_BUSY) != RESET);//IF BUSY
I2C_TransferHandling(I2C1 BMI_WRITE_ADDR 1 I2C_SoftEnd_ModeI2C_Generate_Start_Write); //softend 自动发送停止位
while(I2C_GetFlagStatus(I2C1 I2C_FLAG_TXIS) == RESET);//If Write OK
I2C_SendData(I2C1 ReadAddr);
while(I2C_GetFlagStatus(I2C1 I2C_FLAG_TC) == RESET);
I2C_TransferHandling(I2C1 BMI_READ_ADDR 1 I2C_AutoEnd_Mode I2C_Generate_Start_Read);
while(I2C_GetFlagStatus(I2C1 I2C_FLAG_RXNE) == RESET);
tmp = I2C_ReceiveData(I2C1);
return tmp;
}
uint8_t BMI160_CheckId(void)
{
return BMI160_ReadOneByte(BMI_CHIPID);
}
/************************************
* BMI160_GetPMU_Status
* use BMI160_PMU_STATUS_TRANSBMI160_PMU_STATUS_TRANS(status offset) to get trans
*
**************************************/
uint8_t BMI160_GetPMU_Status(void)
{
return BMI160_ReadOneByte(BMI_PMU_STATUS);
}
/**************************************
* BMI160_SetACC_Range
*range :
* BMI160_ACC_Range2G
* BMI160_ACC_Range4G
* BMI160_ACC_Range8G
* BMI160_ACC_Range16G
******************************************/
void BMI160_SetACC_Range(uint8_t range)
{
BMI160_WriteOneByte(BMI_ACC_RANGE range);
}
/**************************************
* BMI160_SetACC_Range
*range :
* BMI160_GRY_Range2000
* BMI160_GRY_Range1000
* BMI160_GRY_Range500
* BMI160_GRY_Range250
* BMI160_GRY_Range125
******************************************/
void BMI160_SetGRY_Range(uint8_t range)
{
BMI160_WriteOneByte(BMI_GYR_RANGE range);
}
/**************************************
* BMI160_SetACC_Range
*range :
* BMI160_MAG_Range25_32
* BMI160_MAG_Range25_16
* BMI160_MAG_Range25_8
* BMI160_MAG_Range25_4
* BMI160_MAG_Range25_2
* BMI160_MAG_Range25
* BMI160_MAG_Range50
*
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 14679 2018-10-26 15:55 BMI160.c
文件 1302 2018-10-26 13:44 BMI160.h
文件 15337 2018-10-26 13:55 BMI160_prm.h
----------- --------- ---------- ----- ----
31318 3
相关资源
- 陀螺仪MPU6050驱动
- STM32+陀螺仪+GPS代码
- STM32F1单片机MPU6050加速度计陀螺仪驱动
- LSM6DSL陀螺仪+加速度传感器带中断唤醒
- mpu6050\\mpu9150\\ms5611电路图可直接使用
- 9轴姿态传感器 BST BNO055 AN007-00 快速入
- SPI读取MPU9250 9轴加速度,陀螺仪,磁
- STM32F103陀螺仪程序
- 自动泊车系统.zip
- 基于STM32F103C8T6及NRF24L01的摔倒检测+
- stm32 mpu6050 串口输出
- MPU6050三轴陀螺仪串口读取数据并显示
- 一个简单的iOS全景图
- 基于蓝牙传输的计步器程序
- MPU9250&DMP;
- 惯导系统陀螺仪理论-郭秀中
- 陀螺仪原理及应用
- stm32陀螺仪,颜色识别抓球小车.zip
- stm32 mpu925 原始数据
- can通信+陀螺仪stm32f4
- 惯性导航秦永元编著
- 6050 6轴陀螺仪波形源程序
- stm32 MPU6050 OLED显示,绝对完整
- msp6050陀螺仪
- BMI160 (中文数据手册).rar
- 惯性导航 加速计和陀螺仪实现导航定
- k60 mpu6050例程
- 程序是STM32和陀螺仪的I2C通信程序
- STM32遥控平衡车,陀螺仪用的MPU6050,
- GY-85集成加速度传感器、陀螺仪、电子
评论
共有 条评论