标题:
MPU6050 S9KEA128AMLK GPIO模拟程序 串口输出
[打印本页]
作者:
Xiaowen_MA
时间:
2018-7-8 20:03
标题:
MPU6050 S9KEA128AMLK GPIO模拟程序 串口输出
S9KEA128AMLK串口输出模拟程序
0.png
(40.19 KB, 下载次数: 59)
下载附件
2018-7-9 02:00 上传
单片机源程序如下:
#include"MPU6050.h"
#include "soft_i2c.h"
//寄存器读写函数
#define MUP_WR(reg,data) soft_i2c_write_reg(MPU6050_DEV_ADDR,reg,data)
#define MUP_RD(reg) soft_i2c_read_reg(MPU6050_DEV_ADDR,reg,IIC)
#define MPU6050_DEV_ADDR 0xD0>>1 //IIC写入时的地址字节数据,+1为读取
//****************************************
// 定义MPU6050内部地址
//****************************************
#define SMPLRT_DIV 0x19 //陀螺仪采样率,典型值:0x07(125Hz)
#define CONFIG 0x1A //低通滤波频率,典型值:0x06(5Hz)
#define GYRO_CONFIG 0x1B //陀螺仪自检及测量范围,典型值:0x18(不自检,2000deg/s)
#define ACCEL_CONFIG 0x1C //加速计自检、测量范围及高通滤波频率,典型值:0x01(不自检,2G,5Hz)
#define ACCEL_XOUT_H 0x3B
#define ACCEL_XOUT_L 0x3C
#define ACCEL_YOUT_H 0x3D
#define ACCEL_YOUT_L 0x3E
#define ACCEL_ZOUT_H 0x3F
#define ACCEL_ZOUT_L 0x40
#define GYRO_XOUT_H 0x43
#define GYRO_XOUT_L 0x44
#define GYRO_YOUT_H 0x45
#define GYRO_YOUT_L 0x46
#define GYRO_ZOUT_H 0x47
#define GYRO_ZOUT_L 0x48
#define PWR_MGMT_1 0x6B //电源管理,典型值:0x00(正常启用)
#define WHO_AM_I 0x75 //IIC地址寄存器(默认数值0x68,只读)
#define SlaveAddress 0xD0 //IIC写入时的地址字节数据,+1为读取
int16 mpu_gyro_x,mpu_gyro_y,mpu_gyro_z;
int16 mpu_acc_x,mpu_acc_y,mpu_acc_z;
void main_test(void)
{
InitMPU6050();
//在线调试查看mpu_gyro_x mpu_gyro_y mpu_gyro_z mpu_acc_x mpu_acc_y mpu_acc_z三个变量即可
for(;;)
{
//采集MPU6050数据
Get_Gyro();
Get_AccData();
printf("mpu_gyro_x=%d\n",mpu_gyro_x);
printf("mpu_gyro_y=%d\n",mpu_gyro_y);
printf("mpu_gyro_z=%d\n\n",mpu_gyro_z);
printf("mpu_acc_x=%d\n",mpu_acc_x);
printf("mpu_acc_y=%d\n",mpu_acc_y);
printf("mpu_acc_z=%d\n\n",mpu_acc_z);
systick_delay_ms(30);//延时30ms
}
}
//**************************************
//初始化MPU6050
//**************************************
void InitMPU6050(void)
{
soft_i2c_init();
MUP_WR(PWR_MGMT_1, 0x00); //解除休眠状态
MUP_WR(SMPLRT_DIV, 0x07);
MUP_WR(CONFIG, 0x06);
MUP_WR(GYRO_CONFIG, 0x18);
MUP_WR(ACCEL_CONFIG, 0x10);
}
//-------------------------------------------------------------------------------------------------------------------
// @brief 获取MPU6050加速度计数据
// @param NULL
// @return void
// @since v1.0
// Sample usage: 执行该函数后,直接查看对应的变量即可
//-------------------------------------------------------------------------------------------------------------------
void Get_AccData(void)
{
uint8 dat[6];
soft_i2c_read_regs(MPU6050_DEV_ADDR, ACCEL_XOUT_H, dat, 6, IIC);
mpu_acc_x = (int16)(((uint16)dat[0]<<8 | dat[1]));
mpu_acc_y = (int16)(((uint16)dat[2]<<8 | dat[3]));
mpu_acc_z = (int16)(((uint16)dat[4]<<8 | dat[5]));
}
//-------------------------------------------------------------------------------------------------------------------
// @brief 获取MPU6050陀螺仪数据
// @param NULL
// @return void
// @since v1.0
// Sample usage: 执行该函数后,直接查看对应的变量即可
//-------------------------------------------------------------------------------------------------------------------
void Get_Gyro(void)
{
uint8 dat[6];
soft_i2c_read_regs(MPU6050_DEV_ADDR, GYRO_XOUT_H, dat, 6, IIC);
mpu_gyro_x = (int16)(((uint16)dat[0]<<8 | dat[1]));
mpu_gyro_y = (int16)(((uint16)dat[2]<<8 | dat[3]));
mpu_gyro_z = (int16)(((uint16)dat[4]<<8 | dat[5]));
}
复制代码
所有资料51hei提供下载:
KEA_MPU6050_App.rar
(4.72 KB, 下载次数: 20)
2018-7-8 20:03 上传
点击文件名下载附件
下载积分: 黑币 -5
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1