52 lines
1.6 KiB
C
52 lines
1.6 KiB
C
#include "Chassis_CtoC.h"
|
|
#include "can.h"
|
|
#include "BMI088.h"
|
|
#include "BMI088driver.h"
|
|
Remote_Data Remote_RxData;//遥控器接收数据
|
|
extern BMI088_Init_typedef BMI088_Data;
|
|
|
|
void CToC_CANDataProcess(uint32_t ID,uint8_t *Data)
|
|
{
|
|
if(ID==0x149)//接收遥控器拨杆数据
|
|
{
|
|
Remote_RxData.Remote_R_RL=(int16_t)((uint16_t)Data[0]<<8 | Data[1]);//右摇杆右左
|
|
Remote_RxData.Remote_R_UD=(int16_t)((uint16_t)Data[2]<<8 | Data[3]);//右摇杆上下
|
|
Remote_RxData.Remote_L_RL=(int16_t)((uint16_t)Data[4]<<8 | Data[5]);//左摇杆右左
|
|
Remote_RxData.Remote_L_UD=(int16_t)((uint16_t)Data[6]<<8 | Data[7]);//左摇杆上下
|
|
}
|
|
// else if(ID==0x189)//接收遥控器控制数据
|
|
// {
|
|
// Remote_Status=Data[0];//遥控器连接状态
|
|
// Remote_RxData.Remote_RS=Data[1];//遥控器右侧拨动开关
|
|
// Remote_RxData.Remote_KeyPush_Ctrl=Data[2];//键盘Ctrl状态
|
|
// Remote_RxData.Remote_KeyPush_Shift=Data[3];//键盘Shift状态
|
|
// Remote_StartFlag=Data[4];//遥控器启动标志位
|
|
// Remote_RxData.Remote_LS=Data[5];//遥控器左侧拨动开关
|
|
// }
|
|
}
|
|
|
|
void Chassis_CtoC_BMI088(BMI088_Init_typedef *data)
|
|
{
|
|
|
|
BMI088_GetData(data);
|
|
|
|
//定义缩放系数
|
|
float GYRO_SCALE = 100.0f; // rad/s → 0.01 rad/s per LSB
|
|
float ACCEL_SCALE = 100.0f; // m/s² → 0.001 m/s² per LSB
|
|
float TEMP_SCALE = 10.0f; // °C → 0.1°C per LSB
|
|
|
|
int16_t d1, d2, d3, d4;
|
|
|
|
// 3. 根据 CAN ID 决定发送内容
|
|
int16_t yaw = (int16_t)(data->Yaw * 100);
|
|
int16_t pitch = (int16_t)(data->Pitch * 100);
|
|
int16_t roll = (int16_t)(data->Roll * 10);
|
|
int16_t tmp = (int16_t)(data->Temp * TEMP_SCALE);
|
|
|
|
BMI088_Can_Angle(yaw, pitch, roll, tmp, &hcan2);
|
|
|
|
}
|
|
|
|
|
|
|