#ifndef RSCAN_H__ #define RSCAN_H__ /*-----------------use for RH850_D1M1A_1441 --------------------*/ #include "RSCAN_Table.h" typedef enum { RSCAN_CHANNEL_BUF_0 = 0U, RSCAN_CHANNEL_BUF_1, RSCAN_CHANNEL_BUF_2, RSCAN_CHANNEL_BUF_3, RSCAN_CHANNEL_BUF_4, RSCAN_CHANNEL_BUF_5, RSCAN_CHANNEL_BUF_6, RSCAN_CHANNEL_BUF_7, RSCAN_CHANNEL_BUF_8, RSCAN_CHANNEL_BUF_9, RSCAN_CHANNEL_BUF_10, RSCAN_CHANNEL_BUF_11, RSCAN_CHANNEL_BUF_12, RSCAN_CHANNEL_BUF_13, RSCAN_CHANNEL_BUF_MAX, } RSCAN_Channel_Buf_en_t; typedef enum { RSCAN_BUS_IDLE = 0U, RSCAN_BUS_OFF, RSCAN_BUS_TX, RSCAN_BUS_RX, } RSCAN_Com_Status_en_t; typedef enum { RSCAN_Baud_Rate_500K = 0U, RSCAN_Baud_Rate_250K, RSCAN_Baud_Rate_125K, } RSCAN_Baud_Rate_en_t; typedef enum { RSCAN_FRAME_STANDARD = 0U, RSCAN_FRAME_EXTEND, } RSCAN_Frame_en_t; typedef void (*RSCAN_Confirm)(uint32_t Identifier, uint8_t TransferStatus); typedef void (*RSCAN_AbortConfirm)(uint32_t Identifier); typedef void (*RSCAN_Read_Msg)(uint32_t m_id, uint8_t m_dlc, uint8_t m_Msg []); typedef struct { uint32_t u32RSCANChEn; /*通道是否使能*/ RSCAN_Baud_Rate_en_t enRSCANChBps; /*通道波特率*/ uint32_t u32RSCANChRuleSize; /*通道接收规则条数*/ RSCAN_Confirm pfnRSCANConfirmCallBack; RSCAN_AbortConfirm pfnRSCANAbortConfirmCallBack; RSCAN_Read_Msg pfnRSCANReadMsgCallBack; } RSCAN_Channel_Config_st_t; typedef struct { RSCAN_Channel_Config_st_t stRSCANCh0; RSCAN_Channel_Config_st_t stRSCANCh1; RSCAN_Channel_Config_st_t stRSCANCh2; } RSCAN0_Config_st_t; typedef enum { RSCAN_SET_COMPLETE = 0, RSCAN_SET_ERROR_PARAMETER, RSCAN_SET_ERROR_MSGFULL, } RSCAN_SetState; typedef union { uint32_t u32CANData [ 2U ]; uint8_t u8CANData [ 8U ]; } CAN_Data_un_t; typedef struct { CAN_Data_un_t unCANData; uint32_t u32CANID; uint8_t u8CANLEN; uint8_t u8CANFrameIDE; /*0: Standard ID . 1: Extended ID */ } CAN_Frame_st_t; /* 返回值: 0:设置失败 1:设置成功 */ extern uint8_t RSCAN0_CH_Init(const RSCANFD_Filter_st_t pstRSCANFilter [], RSCAN0_Config_st_t *pstRSCANConfig); extern void RSCAN0_CH0_Receive(CAN_Frame_st_t *pstCANFrame); extern void RSCAN0_CH1_Receive(CAN_Frame_st_t *pstCANFrame); extern void RSCAN0_CH2_Receive(CAN_Frame_st_t *pstCANFrame); extern RSCAN_SetState RSCAN0_CH0_Set_FIFO0_Data(CAN_Frame_st_t *pstCANFrame); extern RSCAN_SetState RSCAN0_CH1_Set_FIFO0_Data(CAN_Frame_st_t *pstCANFrame); extern RSCAN_SetState RSCAN0_CH2_Set_FIFO0_Data(CAN_Frame_st_t *pstCANFrame); extern RSCAN_SetState RSCAN0_CH0_Set_TXBUF_Data(RSCAN_Channel_Buf_en_t enBufIndex, CAN_Frame_st_t *pstCANFrame); extern RSCAN_SetState RSCAN0_CH1_Set_TXBUF_Data(RSCAN_Channel_Buf_en_t enBufIndex, CAN_Frame_st_t *pstCANFrame); extern RSCAN_SetState RSCAN0_CH2_Set_TXBUF_Data(RSCAN_Channel_Buf_en_t enBufIndex, CAN_Frame_st_t *pstCANFrame); extern uint8_t RSCAN0_CH0_Get_Rec_Status(void); extern uint8_t RSCAN0_CH1_Get_Rec_Status(void); extern uint8_t RSCAN0_CH2_Get_Rec_Status(void); extern uint8_t RSCAN0_CH0_Get_Busoff_Status(void); extern uint8_t RSCAN0_CH1_Get_Busoff_Status(void); extern uint8_t RSCAN0_CH2_Get_Busoff_Status(void); extern void RSCAN0_CH0_Busoff_Recover(void); extern void RSCAN0_CH1_Busoff_Recover(void); extern void RSCAN0_CH2_Busoff_Recover(void); extern void RSCAN0_CH0_Abort(RSCAN_Channel_Buf_en_t enBufIndex); extern void RSCAN0_CH1_Abort(RSCAN_Channel_Buf_en_t enBufIndex); extern void RSCAN0_CH2_Abort(RSCAN_Channel_Buf_en_t enBufIndex); extern void RSCAN0_CH0_Sleep_Init(void); extern void RSCAN0_CH1_Sleep_Init(void); extern void RSCAN0_CH2_Sleep_Init(void); extern void RSCAN0_Sleep_Init(void); extern uint8_t RSCAN0_CH0_TX_Error_Count(void); extern uint8_t RSCAN0_CH1_TX_Error_Count(void); extern uint8_t RSCAN0_CH2_TX_Error_Count(void); extern uint8_t RSCAN0_CH0_RX_Error_Count(void); extern uint8_t RSCAN0_CH1_RX_Error_Count(void); extern uint8_t RSCAN0_CH2_RX_Error_Count(void); extern void RSCAN0_CH0_RX_ISR(void); extern void RSCAN0_CH1_RX_ISR(void); extern void RSCAN0_CH2_RX_ISR(void); extern void RSCAN0_CH0_TX_ISR(void); extern void RSCAN0_CH1_TX_ISR(void); extern void RSCAN0_CH2_TX_ISR(void); #endif