R2_NEW/User/bsp/protocol.h
2025-07-08 07:44:04 +08:00

105 lines
2.0 KiB
C

/*
视觉与电控通信协议
协议中 主要包含了 数据帧 和CRC校验
其中数据帧用了自定义的结构体 在结构体中修改所需要的数据域的内容
*/
#include <stdint.h>
#ifdef __cplusplus
extern "C" {
#endif
#define HEAD (0xFF)
#define TAIL (0xFE)
#define IMU_ID (0x01)
#define CMD_ID (0x02)
#define TYPE (0x09)
#define NAVI (0x05)
#define PICK (0x06)
#define TEAM_RED (0x01)
#define TEAM_BLUE (0x02)
typedef uint8_t Protocol_ID_t;
/* 电控 -> 视觉 MCU数据结构体*/
typedef struct __attribute__((packed)) {
int remain;
} Protocol_UpDataMCU_t;
/* 视觉 -> 电控 底盘数据结构体*/
typedef struct __attribute__((packed)) {
Protocol_ID_t recv_id;//作为帧头使用确认通信ID正确
struct __attribute__((packed)) {
float wz; /* z轴转动速度 */
float dis;
}navi;
} Protocol_DownDataChassis_t;
/* 电控 -> 视觉 IMU数据结构体*/
typedef struct __attribute__((packed))
{
struct __attribute__((packed))
{
float x;
float y;
float z;
} gyro; /* 陀螺仪数据 */
struct __attribute__((packed))
{
float x;
float y;
float z;
} accl; /* 四元数 */
struct __attribute__((packed))
{
float q0;
float q1;
float q2;
float q3;
} quat; /* 四元数 */
} Protocol_UpDataIMU_t;
typedef struct __attribute__((packed))
{
uint8_t status;
} Protocol_UpDataCMD_t;
/* 视觉 -> 电控 上层机构数据结构体*/
typedef struct __attribute__((packed)) {
float angle; // 角度信息
float dis; // 位移信息
} Protocol_DownDataUpper_t;
typedef struct __attribute__((packed)) {
Protocol_UpDataMCU_t data;
} Protocol_UpPackageMCU_t;
typedef struct __attribute__((packed)) {
Protocol_DownDataChassis_t data;
} Protocol_DownPackageChassis_t;
typedef struct __attribute__((packed)) {
Protocol_DownDataUpper_t data;
} Protocol_DownPackageUpper_t;
#ifdef __cplusplus
}
#endif