智能车制作

标题: 直立mpu6050数据处理,上位机显示 [打印本页]

作者: mxg663954589    时间: 2018-12-27 20:43
标题: 直立mpu6050数据处理,上位机显示
各位车友,我想问一下,我对6050原始数据处理后,发送到上位机上,为什么显示不出来,是我的数据问题吗,在此附上图片,望老司机解答
float accel_angle_y;   //加速度计y轴角度
float gryo_acc_x_zero=0;//陀螺仪x轴加速度零票
float gryo_acc_x;     //陀螺仪x轴加速度
float gryo_ang_x_intergal;                //陀螺仪x轴角度积分
float angle;
float tg=4;
float car_angle_set;
float angle_control_p;
float angle_control_d;
float car_angle_speed_set;
float angle_control_out_max;
float angle_control_out_min;

void AngleCalculate(void) //角度融合
{
       
        int16 temp,temps;
        temp = mpu_acc_y/sqrt((mpu_acc_x * mpu_acc_x + mpu_acc_z * mpu_acc_z)); //角度//调用加速度计原始数据
        accel_angle_y = atan(temp)*180/3.14;          //加速度计角度
        gryo_acc_x=(gryo_acc_x+gryo_acc_x_zero)/16.4; //陀螺仪角速度
        angle=gryo_ang_x_intergal;
        temps=(accel_angle_y-angle)/tg;
        gryo_ang_x_intergal+=(gryo_acc_x+temps)*0.05;
       
}

int main(void)
{   
    get_clk();

    simiic_init();
          mpu6050_init_hardware();
          uart_init(USART_0, 115200, UART0_TX_A25, UART0_RX_A24);
    uart_rx_irq(USART_0,1);       // 打开串口0接收中断
    //中断函数在isr.c文件内 函数名为FLEXCOMM0_DriverIRQHandler
    EnableInterrupts;


    while(1)
    {
      get_accdata_hardware();//获取加速度计值
                        get_gyro_hardware();//获取陀螺仪值
                        AngleCalculate();//角度计算
                        data_conversion(gryo_ang_x_intergal, mpu_acc_y, mpu_acc_z, accel_angle_y, &virtual_scope_data[0]);//将陀螺仪积分值放进去就不行
      systick_delay_ms(100);
    }
}

void data_conversion(int16 data1, int16 data2, int16 data3, int16 data4, uint8 *dat)//这个是调用的函数,那位大佬帮个忙,看看,为何串口发不了gryo_ang_x_intergal的数据
{
    uint16 CRC16 = 0;

    dat[0] = (uint8)((uint16)data1&0xff);
    dat[1] = (uint8)((uint16)data1>>8);

    dat[2] = (uint8)((uint16)data2&0xff);
    dat[3] = (uint8)((uint16)data2>>8);

    dat[4] = (uint8)((uint16)data3&0xff);
    dat[5] = (uint8)((uint16)data3>>8);

    dat[6] = (uint8)((uint16)data4&0xff);
    dat[7] = (uint8)((uint16)data4>>8);

    CRC16  = CRC_CHECK(dat,8);
    dat[8] = (uint8)(CRC16&0xff);
    dat[9] = (uint8)(CRC16>>8);

    uart_putbuff(USART_0,dat,10);  //数据转换完成后,使用串口发送将数组的内容发送出去






欢迎光临 智能车制作 (http://111.231.132.190/) Powered by Discuz! X3.2