高级会员

- 积分
- 561
- 威望
- 344
- 贡献
- 101
- 兑换币
- 223
- 注册时间
- 2018-11-1
- 在线时间
- 58 小时
|
10贡献
各位车友,我想问一下,我对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); //数据转换完成后,使用串口发送将数组的内容发送出去
|
|