CAN_ATY.h 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. /**
  2. * @file CAN_ATY.h
  3. *
  4. * @param Project DEVICE_GENERAL_ATY_LIB
  5. *
  6. * @author ATY
  7. *
  8. * @copyright
  9. * - Copyright 2017 - 2026 MZ-ATY
  10. * - This code follows:
  11. * - MZ-ATY Various Contents Joint Statement -
  12. * <a href="https://mengze.top/MZ-ATY_VCJS">
  13. * https://mengze.top/MZ-ATY_VCJS</a>
  14. * - CC 4.0 BY-NC-SA -
  15. * <a href="https://creativecommons.org/licenses/by-nc-sa/4.0/">
  16. * https://creativecommons.org/licenses/by-nc-sa/4.0/</a>
  17. * - Your use will be deemed to have accepted the terms of this statement.
  18. *
  19. * @brief functions of can process for C platform
  20. *
  21. * @version
  22. * - 1_00_260116 > ATY
  23. * -# Preliminary version
  24. ********************************************************************************
  25. */
  26. /**
  27. * =============================================================================
  28. * CAN Protocol Frame Definitions (Classic CAN, 11-bit Standard ID)
  29. * =============================================================================
  30. *
  31. * -------------------
  32. * │ Frame Type │ CAN ID │ Data Field Layout │
  33. * -------------------
  34. * │ Broadcast │ 0x00FF │ [0]: CMD │
  35. * │ (Host -> Slave) │ │ [1]: REG_ADDR │
  36. * │ │ │ [2-5]: VALUE (float) │
  37. * │ │ │ [6-7]: - │
  38. * -------------------
  39. * │ Multicast │ 0x100 + N │ [0]: CMD │
  40. * │ (Host -> Slave) │ (N = Group Id) │ [1]: REG_ADDR │
  41. * │ │ │ [2-5]: VALUE (float) │
  42. * │ │ │ [6-7]: - │
  43. * -------------------
  44. * │ P2P │ 0x200 + N │ [0]: CMD │
  45. * │ (Host -> Slave) │ (N = ADDR) │ [1]: REG_ADDR │
  46. * │ │ │ [2-5]: VALUE │
  47. * │ │ │ [6-7]: - │
  48. * -------------------
  49. * │ Slave Response │ 0x300 + N │ [0]: CMD_ECHO │
  50. * │ (Slave -> Host) │ (N = ADDR) │ [1]: REG_ADDR │
  51. * │ │ │ [2-5]: VALUE (float) │
  52. * │ │ │ [6]: ERR │
  53. * │ │ │ [7]: - │
  54. * -------------------
  55. * │ Fault Report │ 0x0010 + N │ [0]: FAULT_CODE │
  56. * │ (High Priority) │ (N = ADDR) │ [1]: SEVERITY │
  57. * │ │ │ [2-5]: ERROR_VALUE (float) │
  58. * │ │ │ [6-7]: - │
  59. * -------------------
  60. * =============================================================================
  61. */
  62. #ifndef __CAN_ATY_H
  63. #define __CAN_ATY_H
  64. #include "INCLUDE_ATY.h"
  65. /******************************* For user *************************************/
  66. /******************************************************************************/
  67. struct CAN_ATY_Dev{
  68. uint8_t (*addTxMessage)(uint32_t addr, uint8_t* data, uint8_t len);
  69. uint8_t addr;
  70. uint8_t groupId;
  71. uint8_t lock;
  72. };
  73. void CAN_RegRW(struct CAN_ATY_Dev* dev,
  74. uint32_t frameId, uint8_t cmd, uint8_t regAddr, float value);
  75. void CAN_Response(struct CAN_ATY_Dev* dev,
  76. uint8_t cmd, uint8_t regAddr, float value, uint8_t error);
  77. void CAN_FaultReport(struct CAN_ATY_Dev* dev,
  78. uint8_t faultCode, uint8_t severity, float faultValue);
  79. void CAN_RX_Callback(struct CAN_ATY_Dev* dev, uint32_t stdId, float* data, uint8_t* rxData);
  80. #define CAN_FILTER_BROADCAST 1
  81. #define CAN_FILTER_MULTICAST 2
  82. #define CAN_FILTER_P2P 3
  83. #define CAN_FILTER_RESPONSE 4
  84. #define CAN_FILTER_FAULT 5
  85. #define CAN_STD_ID_BROADCAST 0x00FF
  86. #define CAN_STD_ID_MULTICAST 0x0100
  87. #define CAN_STD_ID_P2P 0x0200
  88. #define CAN_STD_ID_RESPONSE 0x0300
  89. #define CAN_STD_ID_FAULT 0x0010
  90. #define CAN_CMD_READ 0x01
  91. #define CAN_CMD_WRITE 0x02
  92. #define CAN_ERR_NONE 0x00
  93. #define CAN_ERR_CMD 0x01
  94. #define CAN_ERR_PARAM 0x02
  95. #define CAN_FAULT_SEVERITY_WARN 0x00
  96. #define CAN_FAULT_SEVERITY_CRITICAL 0x01
  97. #define CAN_FAULT_CODE_NONE 0x00
  98. #endif /* __CAN_ATY_H */
  99. /******************************** End Of File *********************************/