/** * @file Hal_can.h * @author Ethan Tao (tzj0429@163.com) * @brief * @version 0.1 * @date 2021-12-18 * * @copyright Copyright (c) 2021 Äþ²¨ÕýÀÊÆû³µÁ㲿¼þÓÐÏÞ¹«Ë¾ * */ #ifndef HAL_CAN__ #define HAL_CAN__ #include "xl_mcan.h" extern void Hal_CANConfig(void); struct Transport { void (*Read)(); void (*Write)(); }; typedef struct { uint32_t MCAN_ID; /*!< ±êʶ·û£¬11λ±ê×¼Ö¡»òÕß29Î»ÍØÕ¹Ö¡ */ uint32_t MCAN_FDBRS; /*!< ¿É±äËÙÂÊʹÄÜλ, ½ö²Ù×÷ÓÚFDģʽ */ uint32_t MCAN_FDESI; /*!< ´íÎó״̬λ, ½ö²Ù×÷ÓÚFDģʽ */ uint32_t MCAN_FF; /*!< Ö¡¸ñʽ */ uint32_t MCAN_RTR; /*!< Ô¶³Ì´«ÊäÇëÇó £¬Ô¶³ÌÖ¡»òÕßÊý¾ÝÖ¡ */ uint32_t MCAN_DLC; /*!< Êý¾Ý³¤¶È */ uint8_t MCAN_Data[8]; /*!< °üº¬µÄ½ÓÊÕÊý¾Ý£¬·¶Î§ÊÇ 0 µ½ 7 */ } CAN_PDU_t; typedef enum CANIC_Mode { CANIC_NormalMode = 0, CANIC_StandyByMode = 1 } CANIC_Mode_t; extern void CAN_Transimit(CAN_PDU_t *frame); extern void CAN_Receive(CAN_PDU_t *frame); extern void Hal_StopCanTx(void); #endif