uart_protocol.h 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. /**
  2. ******************************************************************************
  3. * @file uart_protocol.h
  4. * @brief UART 通讯协议模块公共接口
  5. *
  6. * 协议帧格式 (5字节):
  7. * AA CMD ITEM VALUE CRC
  8. * CRC = CMD ^ ITEM ^ VALUE
  9. *
  10. * 命令类型:
  11. * 0x01 面板→主板: 读查询
  12. * 0x02 面板→主板: 写设置
  13. * 0x81 主板→面板: 上报
  14. * 0xAA 主板→面板: 写成功 ACK (单字节, 注意与帧头冲突待后续修复)
  15. ******************************************************************************
  16. */
  17. #ifndef __UART_PROTOCOL_H
  18. #define __UART_PROTOCOL_H
  19. #ifdef __cplusplus
  20. extern "C" {
  21. #endif
  22. #include <stdint.h>
  23. /* ========== 通讯协议常量 (V2.0) ========== */
  24. #define ITEM_QUERY_ALL 0x00u
  25. #define ITEM_INPUT_SRC 0x01u
  26. #define ITEM_BT_CONN 0x02u
  27. #define ITEM_BT_AUDIO 0x03u
  28. #define ITEM_DAC_MUTE 0x04u
  29. #define ITEM_AUTO_RECONN 0x05u
  30. #define ITEM_BATTERY 0x09u
  31. #define ITEM_CHG_FULL 0x0Au
  32. #define ITEM_CHG_ING 0x0Bu
  33. #define ITEM_VOL_LR 0x0Cu
  34. #define ITEM_VOL_BASS 0x0Du
  35. #define ITEM_SOFT_RESET 0x12u
  36. #define ITEM_BASS_MUTE 0x13u
  37. /* ========== 接收缓冲 (供 HAL_UART_RxCpltCallback 传入缓冲指针) ========== */
  38. extern uint8_t g_rxByte; /* 单字节接收缓冲, 定义于 uart_protocol.c */
  39. /* ========== UART 接收回调 (在 HAL_UART_RxCpltCallback 中调用) ========== */
  40. void UART_RxByteCallback(uint8_t data);
  41. /* ========== 帧处理 (在主循环中调用) ========== */
  42. /**
  43. * @brief 查询是否有完整协议帧待处理
  44. * @retval 1=有待处理帧, 0=无
  45. */
  46. uint8_t UART_IsFrameReady(void);
  47. /**
  48. * @brief 清除帧就绪标志 (在主循环中处理前调用)
  49. */
  50. void UART_ClearFrameReady(void);
  51. /**
  52. * @brief 处理收到的完整协议帧
  53. * 须先调用 UART_ClearFrameReady() 再调用此函数
  54. */
  55. void ProcessReceivedFrame(void);
  56. /* ========== 发送函数 ========== */
  57. void SendSetInputSrc(uint8_t src);
  58. void SendSetVolLR(uint8_t pct);
  59. void SendSetVolBass(uint8_t pct);
  60. void SendSetDacMute(uint8_t unmute);
  61. void SendBTDisconnect(void);
  62. void SendSoftReset(void);
  63. void SendBassMute(void);
  64. void SendQueryAll(void);
  65. #ifdef __cplusplus
  66. }
  67. #endif
  68. #endif /* __UART_PROTOCOL_H */