soft_uart.h 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. #ifndef __SOFT_UART_H
  2. #define __SOFT_UART_H
  3. #include "stm32f1xx_hal.h"
  4. #include "soft_can.h"
  5. #include "stdio.h"
  6. #include "rkfifo.h"
  7. #define UPDATE_FLAG ((uint32_t)0x0801E000)
  8. #define USART_2 2
  9. #define USART_3 3
  10. #define UART_FCU 1
  11. #define UART_RADAR 2
  12. #define UART_MCCOM 3
  13. #define MAX_UART_BUF 256
  14. #define GROUP_ID_FCU 0
  15. #define GROUP_ID_PMU_UPDATE 204
  16. #define GROUP_ID_F_UPDATE 51
  17. #define GROUP_ID_B_UPDATE 52
  18. #define GROUP_ID_T_UPDATE 56
  19. #define GROUP_ID_WEIGHT_UPDATE 222
  20. #pragma pack(1)
  21. typedef struct
  22. {
  23. bool fcu_buf_flag;
  24. bool use_update_buf_flag;
  25. uint8_t uart2_recv_buf[150];
  26. uint8_t uart3_recv_buf[128];
  27. uint8_t uart_dma_recv_counts;
  28. //uint8_t radar_update_buf[MAX_UART_BUF];
  29. uint32_t update_time;
  30. bool vk_dev_update_flag;
  31. uint16_t vk_dev_pack_num;
  32. uint32_t bin_size;
  33. bool step_200_flag;
  34. bool step_201_flag;
  35. bool step_202_flag;
  36. }Uart;
  37. #pragma pack()
  38. extern Uart uart_info;
  39. #pragma pack(1)
  40. typedef struct
  41. {
  42. uint8_t head; //0xFE
  43. uint8_t len;
  44. uint8_t seq;
  45. uint8_t system_id; //0
  46. uint8_t group_id;
  47. uint8_t msg_id;
  48. uint8_t head_bytes; //6
  49. uint8_t check_bytes;//2
  50. uint16_t crc;
  51. uint8_t payload[MAX_UART_BUF];
  52. }Vk_protocol;
  53. #pragma pack()
  54. extern Vk_protocol fcu_protocol;
  55. extern Vk_protocol radar_protocol;
  56. extern rkfifo_t recv_rkfifo;
  57. extern rkfifo_t send_uart_rkfifo;
  58. extern uint8_t Update_buf[150];
  59. extern bool radar_update_flag; // main函数中 是否进入升级标志
  60. extern uint32_t uart2_send_delay_time;
  61. extern uint32_t uart3_send_delay_time;
  62. void uart_send_msg(void);
  63. void UART_Init(void);
  64. void uart2_send_msg(uint8_t *data,uint8_t size);
  65. void uart3_send_msg(uint8_t *data,uint8_t size);
  66. void check_uart_data(rkfifo_t *fifo);
  67. bool uart_send_is_ok(uint8_t uart_num);
  68. void send_uartfifo_msg(void);
  69. #endif