usart_data_handle.h 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278
  1. #ifndef __USARTDATA_HANDLE_H
  2. #define __USARTDATA_HANDLE_H
  3. #include "stdbool.h"
  4. #include "stdint.h"
  5. #include "stm32f4xx_hal.h"
  6. #include "stm32f4xx_hal_uart.h"
  7. #include "common.h"
  8. #define MAX_UART_BUF 256
  9. extern uint8_t FMU_uart_buf[MAX_UART_BUF];
  10. typedef enum
  11. {
  12. RX_HEAD = 0,
  13. RX_PAYLOAD_LEN,
  14. RX_SEQ,
  15. RX_SYSID,
  16. RX_GROUPID,
  17. RX_MSGID,
  18. RX_PAYLOAD,
  19. RX_CHECK_LOW,
  20. RX_CHECK_HIGH
  21. } Msg_Rx_Stage;
  22. typedef enum
  23. {
  24. GROUP_ID_FCU = 0,
  25. GROUP_ID_F_UPDATE = 51,
  26. GROUP_ID_B_UPDATE = 52,
  27. GROUP_ID_T_UPDATE = 56,
  28. GROUP_ID_EFTPUMP1_UPDATE = 91,
  29. GROUP_ID_EFTPUMP2_UPDATE = 92,
  30. GROUP_ID_EFTNOZZLE1_UPDATE = 96,
  31. GROUP_ID_EFTNOZZLE2_UPDATE = 97,
  32. GROUP_ID_EFTNOZZLE3_UPDATE = 98,
  33. GROUP_ID_EFTNOZZLE4_UPDATE = 99,
  34. GROUP_ID_EFTFB_UPDATE = 105,
  35. GROUP_ID_EFTSEED_UPDATE = 111,
  36. GROUP_ID_PMU_UPDATE = 204,
  37. GROUP_ID_WEIGHT_UPDATE = 222,
  38. GROUP_ID_Z70FB_UPDATE = 223,
  39. GROUP_ID_Z70FBLIFTING_UPDATE = 224,
  40. GROUP_ID_EFT_TURNMOTOR = 225,
  41. GROUP_ID_EFT_CHURN = 226,
  42. GROUP_ID_EFT_CHURNTURN = 227,
  43. GROUP_IDEND,
  44. } GROUP_ID;
  45. enum vklink_msgid
  46. {
  47. _MSGID_VOL = 1, // 电压
  48. _MSGID_RADAR = 2, // 雷达
  49. _MSGID_FLOW = 3, // 流量计
  50. _MSGID_BMS = 4, // 电池
  51. _MSGID_PWM = 5, // p1 p2 a1 a2通道
  52. _MSGID_LED = 6, // 外部LED灯
  53. _MSGID_ATTITUDE = 8, // 飞机姿态信息
  54. _MSGID_TIME = 9, // UTC时间信息
  55. _MSG_ENGIN = 10, // 发动机
  56. _MSGID_EFT_CON = 11, // EFT输出CAN控制
  57. _MSGID_DEV_INFO = 12, // 设备信息
  58. _MSGID_REQ = 20, // 请求信息
  59. _MSGID_ACK = 21, // 主控应答
  60. _MSGID_SET = 22, // 设置信息
  61. _MSGID_GET4D = 23, // 4D雷达参数回复fmu相关
  62. _MSGID_SET4D = 24, // 4D雷达设置相关
  63. _MSGID_SHA1 = 25, // 智能电池SHA1验证
  64. _MSGID_DEV_LIST = 26, // 设备SN,软硬件管理
  65. _MSGID_HEART = 27, // 心跳检测
  66. _MSGID_360RADAR = 30, //360雷达
  67. _MSGID_DMRADAR = 31, //电目雷达测试
  68. _MSGID_F4DRADAR = 32, //电目4d前避障雷达测试
  69. _MSGID_B4DRADAR = 33, //电目4d后避障雷达测试
  70. _MSGID_FT4DRADAR = 34, //电目4d前避障分段高度
  71. _MSGID_BT4DRADAR = 35, // 电目4d后避障分段高度
  72. _MSGID_UPDATA = 200, // 升级信息
  73. _MSGID_CANDEBUG = 213, // CAN调试
  74. };
  75. enum vklink_MSGID_ACK
  76. {
  77. MSGID_ACK_HEART = 1,
  78. MSGID_ACK_VERSION = 7, // 版本信息
  79. MSGID_ACK_DEV = 26, // 版本信息
  80. };
  81. enum vklink_MSGID_SET
  82. {
  83. MSGID_SET_F_RADAR = 1, // 设置前雷达
  84. MSGID_SET_B_RADAR = 2, // 设置后雷达
  85. MSGID_SET_T_RADAR = 6, // 设置防地雷达
  86. MSGID_SET_TR_BLIND = 7, //设置雷达盲区
  87. MSGID_SET_BR_POWER = 8, //设置雷达能量
  88. MSGID_SET_R_FUNC = 9, //设置电目雷达功能
  89. MSGID_SET_GEELY = 10, // 设置轩浮发动机
  90. MSGID_SET_RAW_SWITCH = 15, //设置DM雷达原始数据开关
  91. MSGID_SET_VOL = 20, // 设置电压
  92. MSGID_SET_MIMO_FLOW = 21, // 设置恩曌流量计系数
  93. MSGID_SET_FLOW_BACKGROUND = 22,//清除流量背景
  94. MSGID_SET_WEIGHT_K = 23, // 设置重量传感器K
  95. MSGID_SET_SEED_OUT_TYPE = 24, // 设置播撒输出类型pwm can
  96. MSGID_SET_SEED_CAL_TYPE = 25, // 设置播撒校准类型
  97. MSGID_SET_WEIGHT_MODE = 26, // 设置重量传感器工作模式
  98. MSGID_SET_MAX_RATE = 27, // 设置播撒最大下药率
  99. MSGID_SET_PMU_SERIAL = 28, // 设置pmu序列号
  100. MSGID_SET_RADAR_FB = 29, // 设置当前雷达前后/恢复出厂 恩曌雷达有效
  101. MSGID_SET_LACKLOSS_CAL = 30, // 断料记校准
  102. MSGID_SET_PNCANID = 55, //设置EFT水泵电调CAN ID
  103. MSGID_SET_RESIWIRE_BLOWN = 60,// 熔断电阻丝
  104. MSGID_SET_CHURN_RESET = 61, // 绞龙复位
  105. MSGID_SET_CHURN_SIZE = 64, //设置绞龙型号
  106. MSGID_SET_FRADAR_SN = 98, // 设置雷达SN号
  107. MSGID_SET_BRADAR_SN = 99, // 设置雷达SN号
  108. MSGID_SET_TRADAR_SN = 100, // 设置雷达SN号
  109. MSGID_SET_4DFRADAR_SN = 102, // 设置4D雷达SN号
  110. MSGID_SET_4DBRADAR_SN = 103, // 设置4D雷达SN号
  111. MSGID_SET_4DTRADAR_SN = 104, // 设置4D雷达SN号
  112. };
  113. //发送设备信息ID
  114. typedef enum
  115. {
  116. DEV_SEED = 1,
  117. DEV_WEIGHT,
  118. DEV_PUMP,
  119. DEV_NOZZLE,
  120. DEV_ARM,
  121. DEV_FLOW,
  122. DEV_CHECKLOW,
  123. DEV_RADAR,
  124. DEV_BMS,
  125. DEV_ENGIN,
  126. DEV_CURRENT,
  127. DEV_L_PUMP1,
  128. DEV_L_PUMP2,
  129. DEV_PART_RADAR,
  130. DEV_PART_FRADAR,
  131. DEV_PART_BRADAR,
  132. DEV_XQ_BMS,
  133. DEV_TEMP_SENSOR
  134. } Dev_Type_NUM;
  135. //飞机状态
  136. enum LOCK_STATUS
  137. {
  138. STA_LOCK = 0,
  139. STA_UNLOCK = 1,
  140. };
  141. //机型
  142. enum DRONE_TYPE
  143. {
  144. JET_UAV_TYPE = 13,
  145. VK_ALL_IN_ONE = 18,
  146. AG_EFTZ = 15,
  147. };
  148. //请求信息包
  149. enum vklink_MSGID_REQ
  150. {
  151. MSGID_REQ_VERSION = 7, // 版本信息
  152. };
  153. #pragma pack(1)
  154. typedef struct
  155. {
  156. short yaw; // 航向角
  157. short roll_angle; // 0.01
  158. short pitch_angle; // 0.01
  159. short alt;
  160. short E_vel; // 东西速度
  161. short N_vel; // 南北速度
  162. short alt_vel; // 垂直速度
  163. short lock_status; // 0 上锁 1解锁
  164. short UAV_type;
  165. short thr_pwm;
  166. short Candebug_flag; // can调试 0开 1关
  167. int pos_x1; //经度
  168. int pos_y1; //纬度
  169. float QuaterQ0;
  170. float QuaterQ1;
  171. float QuaterQ2;
  172. float QuaterQ3;
  173. float pos_x;
  174. float pos_y;
  175. float pos_z;
  176. float pos_flag;
  177. } plane_para;
  178. #pragma pack()
  179. extern plane_para planep;
  180. typedef struct soft_p_2_c
  181. {
  182. uint8_t num;
  183. uint16_t content1;
  184. uint16_t content2;
  185. } Set_info;
  186. extern Set_info msgidset;
  187. #pragma pack(1)
  188. typedef struct
  189. {
  190. uint8_t head; //0xFE
  191. uint8_t len;
  192. uint8_t seq;
  193. uint8_t system_id; //0
  194. uint8_t group_id;
  195. uint8_t msg_id;
  196. uint8_t head_bytes; //6
  197. uint8_t check_bytes;//2
  198. uint16_t crc;
  199. uint8_t payload[MAX_UART_BUF];
  200. bool complete_flag;
  201. }Vk_protocol;
  202. #pragma pack()
  203. extern Vk_protocol fcu_protocol;
  204. #pragma pack(1)
  205. typedef struct
  206. {
  207. bool vk_dev_update_flag;
  208. uint16_t vk_dev_pack_num;
  209. uint32_t bin_size;
  210. bool step_200_flag;
  211. bool step_201_flag;
  212. bool step_202_flag;
  213. }Vk_update_protocol;
  214. #pragma pack()
  215. extern Vk_update_protocol fcu_update_info;
  216. #pragma pack(1)
  217. typedef struct
  218. {
  219. short pump1;
  220. short pump2;
  221. short nozz1_fm;
  222. short nozz2_zp;
  223. short nozz3;
  224. short nozz4;
  225. uint16_t aux_light; //Bit 0 :1灯 Bit 1:2灯 Bit2-8:灯1亮度 Bit9-15:灯2亮度
  226. short aux_steer;
  227. }_pmu_pin;
  228. #pragma pack()
  229. extern _pmu_pin pmu_pin;
  230. #pragma pack(1)
  231. typedef struct
  232. {
  233. bool version_info;
  234. bool key_info_checking; // 给fcu发送信息
  235. bool key_to_bms;
  236. uint8_t mos_status;
  237. uint8_t Dev_type;
  238. uint8_t Id;
  239. uint8_t Id_content;
  240. unsigned char key_data[20];
  241. } Start_info;
  242. extern Start_info start_msg;
  243. #pragma pack()
  244. extern Connect_check fcu;
  245. void thread_usart_task_entry(void *param);
  246. void USER_UART_IRQHandler(UART_HandleTypeDef *huart);
  247. #endif