1. 程式人生 > 其它 >基於Apollo3 Blue MCU晶片的可穿戴產品解決方案開發之六軸加速度感測器適配

基於Apollo3 Blue MCU晶片的可穿戴產品解決方案開發之六軸加速度感測器適配

一 前記 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的介面協議屬於標準協議,只需要自己完成函式封裝即可,這裡不做贅述了。   三 效果展示:   從列印資訊來看,資料能完整讀取展現出來,如下圖所示:

 

 這裡接下來就是根據實際的應用,來做不同的演算法處理了。