void Init_mpu6050() { Single_WriteI2C(PWR_MGMT_1, 0x00); //解除休眠状态 Single_WriteI2C(SMPLRT_DIV, 0x07); Single_WriteI2C(CONFIG, 0x06); Single_WriteI2C(GYRO_CONFIG, 0x18); Single_WriteI2C(ACCEL_CONFIG, 0x01); }
//************************************** //初始化MPU6050 //************************************** void InitMPU6050() { Single_WriteI2C(PWR_MGMT_1, 0x00); //解除休眠状态 Single_WriteI2C(SMPLRT_DIV, 0x07); //陀螺仪125hz Single_WriteI2C(CONFIG, 0x04); //21HZ滤波 延时A8.5ms G8.3ms 此处取值应相当注意,延时与系统周期相近为宜 Single_WriteI2C(GYRO_CONFIG, 0x08); //陀螺仪500度/S 65.5LSB/g Single_WriteI2C(ACCEL_CONFIG, 0x08);//加速度+-4g 8192LSB/g }
/*************************************************************** ** 函数名称: MPU6050Init ** 功能描述: MPU6050初始化函数 ** 输 入: ** 输 出: ** 全局变量: ** 作 者: 喵呜实验室 ** 淘 宝: Http://miaowlabs.taobao.com ** 日 期: 2014年08月01日 ***************************************************************/ void MPU6050Init(void) { Single_WriteI2C(PWR_MGMT_1, 0x00) ; //解除休眠状态 Single_WriteI2C(SMPLRT_DIV, 0x07) ; //陀螺仪125hz Single_WriteI2C(CONFIG, 0x04) ; //Accelerometer:21hz 8.5ms ; Gyroscope:20hz 8.3ms Single_WriteI2C(GYRO_CONFIG, 0x18) ; //±2000°/s Single_WriteI2C(ACCEL_CONFIG, 0x01); //±2g }
//************************************** //初始化MPU6050 //************************************** void mpu6050_Configuration(void) { IIC_Configuration(); Single_WriteI2C(PWR_MGMT_1, 0x00); //解除休眠状态 Single_WriteI2C(SMPLRT_DIV, 0x07); Single_WriteI2C(CONFIG, 0x06); Single_WriteI2C(GYRO_CONFIG, 0x18); Single_WriteI2C(ACCEL_CONFIG, 0x01); }
/* ********************************************************** * * 初始化MPU6050 * ********************************************************** */ void InitMPU6050(void) { Single_WriteI2C(PWR_MGMT_1, 0x00);//电源管理,典型值:0x00(正常启用) delay_ms(2); Single_WriteI2C(SMPLRT_DIV, 0x04);//陀螺仪采样率,典型值:0x04,五分频 delay_ms(2); Single_WriteI2C(CONFIG2, 0x02);//低通滤波频率,典型值:0x02(截止频率100Hz) delay_ms(2); Single_WriteI2C(GYRO_CONFIG, 0x18);//陀螺仪自检及测量范围,典型值:0x18(不自检,2000deg/s) delay_ms(2); Single_WriteI2C(ACCEL_CONFIG, 0x10);//加速计自检、测量范围及高通滤波频率,典型值:0x10(不自检,8G,5Hz) delay_ms(2); }
//#include "i2c.h" void Init_mpu6050() { Single_WriteI2C(PWR_MGMT_1,0x00); Single_WriteI2C(SMPLRT_DIV, 0x07); Single_WriteI2C(CONFIG, 0x06); Single_WriteI2C(GYRO_CONFIG, 0x18); Single_WriteI2C(ACCEL_CONFIG, 0x01); /* I2CA_WriteData(PWR_MGMT_1,0x00); I2CA_WriteData(SMPLRT_DIV, 0x07); I2CA_WriteData(CONFIG, 0x06); I2CA_WriteData(GYRO_CONFIG, 0x18); I2CA_WriteData(ACCEL_CONFIG, 0x01);*/ }
int main(void) { u32 i = 0, j = 0; float distance = 0.0; float light = 0.0; //SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK); //SysTick_Config(72); delay_init(); //延时函数初始化 NVIC_Configuration(); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级 TIM_Config(); uart_init(115200); //串口初始化为115200 KEY_Init(); LED_Init(); //LED端口初始化 SW_I2C_Init(); // HW_I2C2_Init(); Single_WriteI2C(SlaveAddress1, 0x02, 0x72); while(1) { distance = 0.0; light = 0.0; delay_ms(400); // ks103测距 if (distance_flag) { distance = Read_KS10X_Data(SlaveAddress1, 0xb0); printf("-%04d- distance: %04.3f cm\r\n", i++, distance); } // ks103测光强 if (light_flag) { light = Read_KS10X_Data(SlaveAddress1, 0xa0); printf("-%04d- light: %04.3f cd\r\n", j++, light); } if (distance_flag | distance_flag) LED0 = !LED0; /* t1 = tick; delay2x(1000); // 延时167us t2 = tick; printf("time: %d us\r\n", t2 - t1); */ } }
void InitMPU6050(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); GPIO_InitStructure.GPIO_Pin = SCL | SDA; //圆点博士:配置使用的I2C口 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //圆点博士:设置I2C口最大允许输出速度 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD; //圆点博士:设置I2C为开漏输出 GPIO_Init(I2C_PORT, &GPIO_InitStructure); Single_WriteI2C(PWR_MGMT_1, 0x00); //解除休眠状态 Single_WriteI2C(SMPLRT_DIV, 0x4F); //Sample Rate = Gyroscope Output Rate / (1 + SMPLRT_DIV) 100HZ Single_WriteI2C(CONFIG, 0x06); //EXT_SYNC_SET=0 Input disabled,DLPF_CFG=7 RESERVED Single_WriteI2C(GYRO_CONFIG, 0x18); //± 1000 °/s Single_WriteI2C(ACCEL_CONFIG, 0x01); //± 2g // Single_WriteI2C(SIGNAL_PATH_RESET, 0x07); //reset // Single_WriteI2C(PWR_MGMT_1, 0x00); //解除休眠状态 Single_WriteI2C(SMPLRT_DIV, 0x07); // Single_WriteI2C(CONFIG, 0x06); // Single_WriteI2C(GYRO_CONFIG, 0x18); // Single_WriteI2C(ACCEL_CONFIG, 0x01); }