#ifndef _SENSOR_STAR_H_ #define _SENSOR_STAR_H_ #include #define CAK_TLM_1_Info_Length 64 typedef union { uint8_t ext; struct { unsigned int str_state1_data4 : 1; // 1(默认) unsigned int str_state1_data3 : 1; // 0:光信号激励(默认)1:电信号激励 unsigned int str_state1_data2 : 2; //01:数据有效(姿态测量更新) //10:数据无效 //00:数据有效(姿态滤波更新) unsigned int str_state1_data1 : 4; //0001:星跟踪模式 //0010:全天识别模式 //0100:测试模式 //1000:星图成像及数据下传模式 //1010:启动模式 //1111:待机模式 unsigned int str_state2_data5 : 1; //0:在轨标定关(默认)1:在轨标定开 unsigned int str_state2_data4 : 1; //0:PPS校时使能开1:PPS信号使能关 unsigned int str_state2_data3 : 1; //0:UTC校时有1:UTC校时无 unsigned int str_state2_data2 : 2; //001:执行Flash第一份用户程序(默认) // 010:执行Flash第二份用户程序 //011:执行Flash第三份用户程序 unsigned int str_state2_data1 : 2; //01:执行第一份BOOT程序(默认) //10:执行第二份BOOT程序 //11:执行第三份BOOT程序 unsigned int pro_state_data8 : 1; // APP3程序校验状态。1:正确,0:错误 unsigned int pro_state_data7 : 1; // APP2程序校验状态。1:正确,0:错误 unsigned int pro_state_data6 : 1; // APP1程序校验状态。1:正确,0:错误 unsigned int pro_state_data5 : 1; // 默认0 unsigned int pro_state_data4 : 1; // BOOT3程序校验状态,1:正确,0:错误 unsigned int pro_state_data3 : 1; // BOOT2程序校验状态,1:正确,0:错误 unsigned int pro_state_data2 : 1; // BOOT1程序校验状态,1:正确,0:错误 unsigned int pro_state_data1 : 1; // Loader程序校验状态,1:正确,0:错误 }; } Bitpara_State; typedef struct __attribute__((__packed__)) { uint16_t FRAME_HEAD ; //帧头 uint16_t TLM_FRAME_ID; //帧标识 int32_t q0; //四元数q0 int32_t q1; //四元数q1 int32_t q2; //四元数q2 int32_t q3; //四元数q3 //Bitpara_State Bitpara_State_data; //星敏感器状态字 uint8_t para1; uint8_t para2; uint8_t UTC[5]; //曝光中点时刻UTC时间 uint16_t GRAY_MEAN; // 图像灰度均值 uint16_t PPS_CNT; // ETR脉冲计数 int16_t PPS_DT; // 曝光时差 uint8_t STAR_NUM_S; // 探测星数 uint8_t STAR_NUM_G; // 导航星数 uint8_t STAR_NUM_D; // 定姿星数 uint8_t THR_OFST; // 星点提取阈值偏移量 uint8_t TEMP_SEN; // 探测器温度 uint8_t TEMP_SHL; // 处理器温度 uint8_t EXP_TIME; // 曝光时间 uint8_t CAK_BYTE[3]; // 命令应答字 uint16_t STRLT_FLAG; // 杂散光标志字 int16_t OMIGA_X; // 角速率ωx int16_t OMIGA_Y; // 角速率ωy int16_t OMIGA_Z; // 角速率ωz int16_t L3G_OMIG_X; //片上MEMS陀螺角速率X uint16_t FOCAL_L; // 焦距值 uint8_t STAR_NUM_T; // 跟踪星数 uint8_t REC_NUM_PRO; // 处理波门数 int16_t L3G_OMIG_Y; // 片上MEMS陀螺角速率Y int16_t L3G_OMIG_Z; // 片上MEMS陀螺角速率Z uint8_t Bitpara_STATE; //软件健康状态字 uint8_t WD_CNT; // 看门狗复位次数 uint8_t SUM; // 累加和 } CAK_TLM_1_STRUCT; //遥测数据包1(CAK_TLM_1) uint8_t generate_star_1_frame(uint8_t *frame, double QuatECI[4], double AttiVelECI[3]); uint8_t generate_star_2_frame(uint8_t *frame, double QuatECI[4], double AttiVelECI[3]); #endif