/*-----------------use for RH850_D1M1A_1441 --------------------*/ #include "r_typedefs.h" #include "dr7f701441.dvf.h" #include "r_dev_api.h" #include "RSCAN.h" #include "RSCAN_Table.h" #define RSCAN_C_ISO_RSCAN_CLKC 40000000UL /* PLLFIXCLK /12 (default)*/ #define RSCAN_C_ISO_RSCANXIN_CLK_XIN_CAN 8000000UL /*MainOSC*/ #define RSCAN_F_CAN RSCAN_C_ISO_RSCANXIN_CLK_XIN_CAN #define RSCAN0_BASE_ADDRESS 0xFFD00000UL /*--------------500K-----------------------------*/ #define RSCAN0_500K_BAUD_RATE 500U //波特率,单位kbps #define RSCAN0_500K_T_SEG1 12U //时间段1的Tq数 #define RSCAN0_500K_T_SEG2 3U //时间段2的Tq数 #define RSCAN0_500K_SJW 3U //同步跳转宽度 #define RSCAN_500K_BIT_RATE_DIV (RSCAN_F_CAN / (RSCAN0_500K_BAUD_RATE) / (RSCAN0_500K_T_SEG1 + RSCAN0_500K_T_SEG2 + 1UL) / 1000UL) /*-----------------250K---------------------------------*/ #define RSCAN0_250K_BAUD_RATE 250U //波特率,单位kbps #define RSCAN0_250K_T_SEG1 13U //11 //时间段1的Tq数 #define RSCAN0_250K_T_SEG2 2U //4 //时间段2的Tq数 #define RSCAN0_250K_SJW 1U //2 //3 #define RSCAN_250K_BIT_RATE_DIV (RSCAN_F_CAN / (RSCAN0_250K_BAUD_RATE) / (RSCAN0_250K_T_SEG1 + RSCAN0_250K_T_SEG2 + 1UL) / 1000UL) /*-----------------125K---------------------------------*/ #define RSCAN0_125K_BAUD_RATE 125U //波特率,单位kbps #define RSCAN0_125K_T_SEG1 13U //11 //时间段1的Tq数 #define RSCAN0_125K_T_SEG2 2U //4 //时间段2的Tq数 #define RSCAN0_125K_SJW 1U //2 //3 #define RSCAN_125K_BIT_RATE_DIV (RSCAN_F_CAN / (RSCAN0_125K_BAUD_RATE) / (RSCAN0_125K_T_SEG1 + RSCAN0_125K_T_SEG2 + 1UL) / 1000UL) /*------------------------------------------------*/ #if ((RSCAN0_500K_T_SEG2 < 2U) || (RSCAN0_250K_T_SEG2 < 2U) || (RSCAN0_125K_T_SEG2 < 2U) || (RSCAN0_500K_T_SEG2 > 8U) || (RSCAN0_250K_T_SEG2 > 8U) || (RSCAN0_125K_T_SEG2 > 8U)) #error RSCAN0 Time Segment 2 error!!! #endif #if ((RSCAN0_500K_T_SEG1 < 4U) || (RSCAN0_250K_T_SEG1 < 4U) || (RSCAN0_125K_T_SEG1 < 4U) || (RSCAN0_500K_T_SEG1 > 16U) || (RSCAN0_250K_T_SEG1 > 16U) || (RSCAN0_125K_T_SEG1 > 16U)) #error RSCAN0 Time Segment 1 error!!! #endif #if ((RSCAN0_500K_SJW < 1U) || (RSCAN0_250K_SJW < 1U) || (RSCAN0_125K_SJW < 1U) || (RSCAN0_500K_SJW > 4U) || (RSCAN0_250K_SJW > 4U) || (RSCAN0_125K_SJW > 4U)) #error RSCAN0 Resynchronization Jump Width error!!! #endif #if ((RSCAN_500K_BIT_RATE_DIV < 1U) || (RSCAN_250K_BIT_RATE_DIV < 1U) || (RSCAN_125K_BIT_RATE_DIV < 1U) || (RSCAN_500K_BIT_RATE_DIV > 1024U) || (RSCAN_250K_BIT_RATE_DIV > 1024U) || (RSCAN_125K_BIT_RATE_DIV > 1024U)) #error RSCAN0 Communication speed error!!! #endif /*---------------------------------------*/ /*---------------------------------------*/ /***************************************************/ /**COMPLETE**/ #define RSCAN_ABORT_CPLT_AND 0X06U #define RSCAN_ABORT_CPLT 0X02U #define RSCAN_TX_CPLT_AND 0X04U #define RSCAN_TX_CPLT 0X04U /***************************************************/ /*RSCAN0GCFG*/ /*DCS*/ #define RSCAN_CLOCK_SOURCE_CLKC (0U << 4U) #define RSCAN_CLOCK_SOURCE_CLK_XINCAN (1U << 4U) /*DCE*/ #define RSCAN_DLC_CHECK_DISABLE (0U << 1U) #define RSCAN_DLC_CHECK_ENABLE (1U << 1U) /*TPRI*/ #define RSCAN_TX_PRIORITY_ID (0U) #define RSCAN_TX_PRIORITY_BUFFER_NUM (1U) /*RSCAN0C0CFG*/ #define RSCAN_500K_NTSEG2 ((RSCAN0_500K_T_SEG2 - 1U) << 20U) #define RSCAN_500K_NTSEG1 ((RSCAN0_500K_T_SEG1 - 1U) << 16U) #define RSCAN_500K_NSJW ((RSCAN0_500K_SJW - 1U) << 24U) #define RSCAN_500K_NBRP (RSCAN_500K_BIT_RATE_DIV - 1U) #define RSCAN_250K_NTSEG2 ((RSCAN0_250K_T_SEG2 - 1U) << 20U) #define RSCAN_250K_NTSEG1 ((RSCAN0_250K_T_SEG1 - 1U) << 16U) #define RSCAN_250K_NSJW ((RSCAN0_250K_SJW - 1U) << 24U) #define RSCAN_250K_NBRP (RSCAN_250K_BIT_RATE_DIV - 1U) #define RSCAN_125K_NTSEG2 ((RSCAN0_125K_T_SEG2 - 1U) << 20U) #define RSCAN_125K_NTSEG1 ((RSCAN0_125K_T_SEG1 - 1U) << 16U) #define RSCAN_125K_NSJW ((RSCAN0_125K_SJW - 1U) << 24U) #define RSCAN_125K_NBRP (RSCAN_125K_BIT_RATE_DIV - 1U) /*RSCANnCFCCk*/ /*Transmit/Receive FIFO Buffer Depth Configuration*/ #define RSCAN_TR_FIFO_DEPTH_0 (0UL << 8UL) #define RSCAN_TR_FIFO_DEPTH_4 (1UL << 8UL) #define RSCAN_TR_FIFO_DEPTH_8 (2UL << 8UL) #define RSCAN_TR_FIFO_DEPTH_16 (3UL << 8UL) #define RSCAN_TR_FIFO_DEPTH_32 (4UL << 8UL) #define RSCAN_TR_FIFO_DEPTH_48 (5UL << 8UL) #define RSCAN_TR_FIFO_DEPTH_64 (6UL << 8UL) #define RSCAN_TR_FIFO_DEPTH_128 (7UL << 8UL) /*Transmit/Receive FIFO Mode Select*/ #define RSCAN_TR_FIFO_MODE_RX (0UL << 16UL) #define RSCAN_TR_FIFO_MODE_TX (1UL << 16UL) /*Transmit/Receive FIFO Transmit Interrupt Enable*/ #define RSCAN_TR_FIFO_TX_INT_DIS (0UL << 2UL) #define RSCAN_TR_FIFO_TX_INT_EN (1UL << 2UL) /*Transmit/Receive FIFO Receive Interrupt Enable*/ #define RSCAN_TR_FIFO_RX_INT_DIS (0UL << 1UL) #define RSCAN_TR_FIFO_RX_INT_EN (1UL << 1UL) /*Transmit/Receive FIFO Buffer Enable*/ #define RSCAN_TR_FIFO_DIS (0UL) #define RSCAN_TR_FIFO_EN (1UL) /*RCFDCnCFDCmCTR*/ /*Transmit Abort Interrupt Enable*/ #define RSCAN_ABORT_INT_DIS (0UL << 16U) #define RSCAN_ABORT_INT_EN (1UL << 16U) /*Bus Off Recovery Mode Select*/ #define RSCAN_RECOVER_11898 (0UL << 21U) #define RSCAN_RECOVER_ENTRY_HALT_AT_BUSOFF_ENTRY (1UL << 21U) #define RSCAN_RECOVER_ENTRY_HALT_AT_BUSOFF_END (1UL << 21U) #define RSCAN_RECOVER_ENTRY_HALT_BY_PROGRAM_REQUEST (1UL << 21U) typedef struct { /*具体接收内容*/ CAN_Frame_st_t stReceiveContent; /*是否接收到新数据 0:数据没有更新 1:接收到新数据,已更新*/ uint8_t u8CANReceiveStatus; } CAN_Frame_Receive_st_t; /*------------------------------------------------------------*/ RSCAN0_Config_st_t g_stRSCAN0Config; /*------------------------------------------------------------*/ static uint32_t RSCAN0_CH_Baud_Rate_Cal(RSCAN_Channel_Config_st_t *pstRSCANChannelConfig) { uint32_t u32RegisterBuf = 0UL; if (pstRSCANChannelConfig->u32RSCANChEn) { if (pstRSCANChannelConfig->enRSCANChBps == RSCAN_Baud_Rate_500K) { u32RegisterBuf = (RSCAN_500K_NTSEG2 | RSCAN_500K_NTSEG1 | RSCAN_500K_NSJW | RSCAN_500K_NBRP); } else if (pstRSCANChannelConfig->enRSCANChBps == RSCAN_Baud_Rate_250K) { u32RegisterBuf = (RSCAN_250K_NTSEG2 | RSCAN_250K_NTSEG1 | RSCAN_250K_NSJW | RSCAN_250K_NBRP); } else if (pstRSCANChannelConfig->enRSCANChBps == RSCAN_Baud_Rate_125K) { u32RegisterBuf = (RSCAN_125K_NTSEG2 | RSCAN_125K_NTSEG1 | RSCAN_125K_NSJW | RSCAN_125K_NBRP); } } return u32RegisterBuf; } /* 返回值: 0:设置失败 1:设置成功 */ uint8_t RSCAN0_CH_Init(const RSCANFD_Filter_st_t pstRSCANFilter[], RSCAN0_Config_st_t *pstRSCANConfig) { uint32_t i = 0UL; uint8_t j = 0UL; uint32_t u32CANFDCalBuf = 0UL; uint8_t u8Status = 1U; uint32_t u32RSCANChannelRuleTotal = 0UL; volatile RSCANFD_Filter_st_t *pstCANFDRule; if (pstRSCANConfig->stRSCANCh0.u32RSCANChEn) { if (pstRSCANConfig->stRSCANCh0.u32RSCANChRuleSize > 128) { u8Status = 0U; } } if (pstRSCANConfig->stRSCANCh1.u32RSCANChEn) { if (pstRSCANConfig->stRSCANCh1.u32RSCANChRuleSize > 128) { u8Status = 0U; } } if (pstRSCANConfig->stRSCANCh2.u32RSCANChEn) { if (pstRSCANConfig->stRSCANCh2.u32RSCANChRuleSize > 128) { u8Status = 0U; } } if (u8Status == 1U) { u32RSCANChannelRuleTotal = pstRSCANConfig->stRSCANCh0.u32RSCANChRuleSize + pstRSCANConfig->stRSCANCh1.u32RSCANChRuleSize + pstRSCANConfig->stRSCANCh2.u32RSCANChRuleSize; if (u32RSCANChannelRuleTotal > 192) { u8Status = 0UL; } } if (u8Status == 1U) { /* Waiting for CAN RAM initialization is completed */ while (RSCAN0GSTS & 0x08UL) { ; } /* Waiting for CAN entry global reset mdoe */ RSCAN0GCTR &= 0xfffffff9UL; RSCAN0GCTR |= 0x01UL; while ((RSCAN0GSTS & 0x07UL) != 0X01UL) { ; } /* Waiting for CAN entry channel reset mdoe */ /* CHANNEL 0*/ if (pstRSCANConfig->stRSCANCh0.u32RSCANChEn) { RSCAN0C0CTR &= 0xfffffff9UL; RSCAN0C0CTR |= 0x01UL; } if (pstRSCANConfig->stRSCANCh1.u32RSCANChEn) { RSCAN0C1CTR &= 0xfffffff9UL; RSCAN0C1CTR |= 0x01UL; } if (pstRSCANConfig->stRSCANCh2.u32RSCANChEn) { RSCAN0C2CTR &= 0xfffffff9UL; RSCAN0C2CTR |= 0x01UL; } /* waiting */ if (pstRSCANConfig->stRSCANCh0.u32RSCANChEn) { while ((RSCAN0C0STS & 0x07UL) != 0X01UL) { ; } } if (pstRSCANConfig->stRSCANCh1.u32RSCANChEn) { while ((RSCAN0C1STS & 0x07UL) != 0X01UL) { ; } } if (pstRSCANConfig->stRSCANCh2.u32RSCANChEn) { while ((RSCAN0C2STS & 0x07UL) != 0X01UL) { ; } } /* Global Configuration Register*/ RSCAN0GCFG = (RSCAN_DLC_CHECK_ENABLE | RSCAN_CLOCK_SOURCE_CLK_XINCAN | RSCAN_TX_PRIORITY_ID); /*Channel Nominal Bit Rate Configuration Register*/ RSCAN0C0CFG = RSCAN0_CH_Baud_Rate_Cal(&(pstRSCANConfig->stRSCANCh0)); RSCAN0C1CFG = RSCAN0_CH_Baud_Rate_Cal(&(pstRSCANConfig->stRSCANCh1)); RSCAN0C2CFG = RSCAN0_CH_Baud_Rate_Cal(&(pstRSCANConfig->stRSCANCh2)); /*-------Receive rule setting----*/ pstCANFDRule = (volatile RSCANFD_Filter_st_t *)(&(RSCAN0GAFLID0)); /*Receive Rule Configuration Register */ RSCAN0GAFLCFG0 = 0UL; u32CANFDCalBuf = 0UL; u32CANFDCalBuf |= (uint32_t)(pstRSCANConfig->stRSCANCh0.u32RSCANChRuleSize << 24U); /* Channel0 Filter num */ u32CANFDCalBuf |= (uint32_t)(pstRSCANConfig->stRSCANCh1.u32RSCANChRuleSize << 16U); /* Channel1 Filter num */ u32CANFDCalBuf |= (uint32_t)(pstRSCANConfig->stRSCANCh2.u32RSCANChRuleSize << 8U); /* Channel2 Filter num */ RSCAN0GAFLCFG0 = u32CANFDCalBuf; /*Receive Rule Entry Control Register*/ RSCAN0GAFLECTR |= 0x00000100UL; /* Enable receive rule */ for (i = 0UL; i < u32RSCANChannelRuleTotal; i++) { j = (uint8_t)(i & 0x0FUL); if (j == 0UL) { RSCAN0GAFLECTRLL = (i >> 4U); /* Configuration Page AFLPN[5:0]*/ } pstCANFDRule[j] = pstRSCANFilter[i]; } /*disable writing data to the receive rule table.*/ RSCAN0GAFLECTR &= 0xFFFFFEFFUL; /*-------Buffer setting----*/ /*receive buffer*/ RSCAN0RMNB = 0x00UL; /*no use*/ /*receive FIFO buffer*/ RSCAN0RFCC0 = 0x00UL; /*no use*/ RSCAN0RFCC1 = 0x00UL; RSCAN0RFCC2 = 0x00UL; RSCAN0RFCC3 = 0x00UL; RSCAN0RFCC4 = 0x00UL; RSCAN0RFCC5 = 0x00UL; RSCAN0RFCC6 = 0x00UL; RSCAN0RFCC7 = 0x00UL; /*transmit/receive FIFO buffer*/ if (pstRSCANConfig->stRSCANCh0.u32RSCANChEn) { RSCAN0CFCC0 = (RSCAN_TR_FIFO_DEPTH_32 | (0x0FUL << 20UL) | 0X1000UL | RSCAN_TR_FIFO_MODE_TX); RSCAN0CFCC1 = (RSCAN_TR_FIFO_DEPTH_16 | (0x0EUL << 20UL) | 0X1000UL | RSCAN_TR_FIFO_MODE_TX); RSCAN0CFCC2 = (RSCAN_TR_FIFO_DEPTH_16 | 0X1000UL | RSCAN_TR_FIFO_MODE_RX); } if (pstRSCANConfig->stRSCANCh1.u32RSCANChEn) { RSCAN0CFCC3 = (RSCAN_TR_FIFO_DEPTH_32 | (0x0FUL << 20UL) | 0X1000UL | RSCAN_TR_FIFO_MODE_TX); RSCAN0CFCC4 = (RSCAN_TR_FIFO_DEPTH_16 | (0x0EUL << 20UL) | 0X1000UL | RSCAN_TR_FIFO_MODE_TX); RSCAN0CFCC5 = (RSCAN_TR_FIFO_DEPTH_16 | 0X1000UL | RSCAN_TR_FIFO_MODE_RX); } if (pstRSCANConfig->stRSCANCh2.u32RSCANChEn) { RSCAN0CFCC6 = (RSCAN_TR_FIFO_DEPTH_32 | (0x0FUL << 20UL) | 0X1000UL | RSCAN_TR_FIFO_MODE_TX); RSCAN0CFCC7 = (RSCAN_TR_FIFO_DEPTH_16 | (0x0EUL << 20UL) | 0X1000UL | RSCAN_TR_FIFO_MODE_TX); RSCAN0CFCC8 = (RSCAN_TR_FIFO_DEPTH_16 | 0X1000UL | RSCAN_TR_FIFO_MODE_RX); } /* transmit queue*/ RSCAN0TXQCC0 = 0UL; /*no use*/ RSCAN0TXQCC1 = 0UL; RSCAN0TXQCC2 = 0UL; /*transmit history buffer*/ RSCAN0THLCC0 = 0UL; /*no use*/ RSCAN0THLCC1 = 0UL; RSCAN0THLCC2 = 0UL; /*Enable interrupt of buffer to be used*/ /*transmit/receive FIFO */ if (pstRSCANConfig->stRSCANCh0.u32RSCANChEn) { RSCAN0CFCC0 |= RSCAN_TR_FIFO_TX_INT_EN; RSCAN0CFCC1 |= RSCAN_TR_FIFO_TX_INT_EN; RSCAN0CFCC2 |= RSCAN_TR_FIFO_RX_INT_EN; } if (pstRSCANConfig->stRSCANCh1.u32RSCANChEn) { RSCAN0CFCC3 |= RSCAN_TR_FIFO_TX_INT_EN; RSCAN0CFCC4 |= RSCAN_TR_FIFO_TX_INT_EN; RSCAN0CFCC5 |= RSCAN_TR_FIFO_RX_INT_EN; } if (pstRSCANConfig->stRSCANCh2.u32RSCANChEn) { RSCAN0CFCC6 |= RSCAN_TR_FIFO_TX_INT_EN; RSCAN0CFCC7 |= RSCAN_TR_FIFO_TX_INT_EN; RSCAN0CFCC8 |= RSCAN_TR_FIFO_RX_INT_EN; } /** transmit abort interrupts**/ if (pstRSCANConfig->stRSCANCh0.u32RSCANChEn) { RSCAN0C0CTR |= RSCAN_ABORT_INT_EN; } if (pstRSCANConfig->stRSCANCh1.u32RSCANChEn) { RSCAN0C1CTR |= RSCAN_ABORT_INT_EN; } if (pstRSCANConfig->stRSCANCh2.u32RSCANChEn) { RSCAN0C2CTR |= RSCAN_ABORT_INT_EN; } RSCAN0TMIEC0 = 0UL; /* transmit complete interrupts */ if (pstRSCANConfig->stRSCANCh0.u32RSCANChEn) { RSCAN0TMIEC0 |= 0xFFFFUL; } if (pstRSCANConfig->stRSCANCh1.u32RSCANChEn) { RSCAN0TMIEC0 |= 0xFFFF0000UL; } if (pstRSCANConfig->stRSCANCh2.u32RSCANChEn) { RSCAN0TMIEC1 = 0xFFFFUL; } /*Global interrupt*/ /* RSCAN0GCTR = 0UL;*/ /*Channel interrupt, bus off recovery, error indication*/ if (pstRSCANConfig->stRSCANCh0.u32RSCANChEn) { RSCAN0C0CTR |= RSCAN_RECOVER_ENTRY_HALT_AT_BUSOFF_END; } if (pstRSCANConfig->stRSCANCh1.u32RSCANChEn) { RSCAN0C1CTR |= RSCAN_RECOVER_ENTRY_HALT_AT_BUSOFF_END; } if (pstRSCANConfig->stRSCANCh2.u32RSCANChEn) { RSCAN0C2CTR |= RSCAN_RECOVER_ENTRY_HALT_AT_BUSOFF_END; } /*Interrupt control register of interrupt controller*/ if (pstRSCANConfig->stRSCANCh0.u32RSCANChEn) { R_DEV_IntEnable(R_DEV_INT_RCAN0REC, 1U); R_DEV_IntEnable(R_DEV_INT_RCAN0TRX, 1U); } if (pstRSCANConfig->stRSCANCh1.u32RSCANChEn) { R_DEV_IntEnable(R_DEV_INT_RCAN1REC, 1U); R_DEV_IntEnable(R_DEV_INT_RCAN1TRX, 1U); } if (pstRSCANConfig->stRSCANCh2.u32RSCANChEn) { R_DEV_IntEnable(R_DEV_INT_RCAN2REC, 1U); R_DEV_IntEnable(R_DEV_INT_RCAN2TRX, 1U); } /*Transition to global operating mode*/ RSCAN0GCTR &= 0xFFFFFFFCUL; while ((RSCAN0GSTS & 0x07UL) != 0X00UL) { ; } /*Transition to channel communication mode*/ if (pstRSCANConfig->stRSCANCh0.u32RSCANChEn) { RSCAN0C0CTR &= 0xFFFFFFFCUL; } if (pstRSCANConfig->stRSCANCh1.u32RSCANChEn) { RSCAN0C1CTR &= 0xFFFFFFFCUL; } if (pstRSCANConfig->stRSCANCh2.u32RSCANChEn) { RSCAN0C2CTR &= 0xFFFFFFFCUL; } if (pstRSCANConfig->stRSCANCh0.u32RSCANChEn) { while ((RSCAN0C0STS & 0x80UL) == 0x0UL) { } } if (pstRSCANConfig->stRSCANCh1.u32RSCANChEn) { while ((RSCAN0C1STS & 0x80UL) == 0x0UL) { } } if (pstRSCANConfig->stRSCANCh2.u32RSCANChEn) { while ((RSCAN0C2STS & 0x80UL) == 0x0UL) { } } /*Enable the applied receive FIFO buffer, transmit/receive FIFO, transmit queue or transmit history buffer*/ /*transmit/receive FIFO */ if (pstRSCANConfig->stRSCANCh0.u32RSCANChEn) { RSCAN0CFCC0 |= RSCAN_TR_FIFO_EN; RSCAN0CFCC1 |= RSCAN_TR_FIFO_EN; RSCAN0CFCC2 |= RSCAN_TR_FIFO_EN; } if (pstRSCANConfig->stRSCANCh1.u32RSCANChEn) { RSCAN0CFCC3 |= RSCAN_TR_FIFO_EN; RSCAN0CFCC4 |= RSCAN_TR_FIFO_EN; RSCAN0CFCC5 |= RSCAN_TR_FIFO_EN; } if (pstRSCANConfig->stRSCANCh2.u32RSCANChEn) { RSCAN0CFCC6 |= RSCAN_TR_FIFO_EN; RSCAN0CFCC7 |= RSCAN_TR_FIFO_EN; RSCAN0CFCC8 |= RSCAN_TR_FIFO_EN; } g_stRSCAN0Config = *pstRSCANConfig; } return u8Status; } void RSCAN0_CH0_Receive(CAN_Frame_st_t *pstCANFrame) { if (g_stRSCAN0Config.stRSCANCh0.pfnRSCANReadMsgCallBack) { g_stRSCAN0Config.stRSCANCh0.pfnRSCANReadMsgCallBack(pstCANFrame->u32CANID, pstCANFrame->u8CANLEN, pstCANFrame->unCANData.u8CANData); } } void RSCAN0_CH1_Receive(CAN_Frame_st_t *pstCANFrame) { if (g_stRSCAN0Config.stRSCANCh1.pfnRSCANReadMsgCallBack) { g_stRSCAN0Config.stRSCANCh1.pfnRSCANReadMsgCallBack(pstCANFrame->u32CANID, pstCANFrame->u8CANLEN, pstCANFrame->unCANData.u8CANData); } } void RSCAN0_CH2_Receive(CAN_Frame_st_t *pstCANFrame) { if (g_stRSCAN0Config.stRSCANCh2.pfnRSCANReadMsgCallBack) { g_stRSCAN0Config.stRSCANCh2.pfnRSCANReadMsgCallBack(pstCANFrame->u32CANID, pstCANFrame->u8CANLEN, pstCANFrame->unCANData.u8CANData); } } RSCAN_SetState RSCAN0_CH0_Set_FIFO0_Data(CAN_Frame_st_t *pstCANFrame) { uint32_t u32RSCANDataBuf = 0UL; uint32_t u32RSCANBufIndexK = (0UL + 3UL * 0UL); uint32_t u32RSCANAddress = 0UL; RSCAN_SetState enRSCANStatus = RSCAN_SET_COMPLETE; if ((pstCANFrame->u8CANLEN > 8U) || (pstCANFrame == 0UL)) { enRSCANStatus = RSCAN_SET_ERROR_PARAMETER; } if (enRSCANStatus == RSCAN_SET_COMPLETE) { u32RSCANAddress = u32RSCANBufIndexK * 4UL + 0X178UL + RSCAN0_BASE_ADDRESS; if (((*((uint32_t *)(u32RSCANAddress))) & 0x00000002UL) == 0x0U) //if ((RSCAN0CFSTS3 & 0x00000002UL) == 0x0U) { u32RSCANDataBuf = pstCANFrame->u8CANFrameIDE; u32RSCANDataBuf = u32RSCANDataBuf << 31U; u32RSCANDataBuf |= pstCANFrame->u32CANID; u32RSCANAddress = u32RSCANBufIndexK * 0x10UL + 0XE80UL + RSCAN0_BASE_ADDRESS; (*((uint32_t *)(u32RSCANAddress))) = u32RSCANDataBuf; //RCFDC0CFDCFID3 = u32RSCANDataBuf; u32RSCANDataBuf = pstCANFrame->u8CANLEN; u32RSCANAddress = u32RSCANBufIndexK * 0x10UL + 0XE84UL + RSCAN0_BASE_ADDRESS; (*((uint32_t *)(u32RSCANAddress))) = ((u32RSCANDataBuf) << 28U); //RCFDC0CFDCFPTR3 = ((u32RSCANDataBuf) << 28U); u32RSCANAddress = u32RSCANBufIndexK * 0x10UL + 0XE88UL + RSCAN0_BASE_ADDRESS; (*((uint32_t *)(u32RSCANAddress))) = pstCANFrame->unCANData.u32CANData[0U]; //RCFDC0CFDCFDF0_3 = pstCANFrame->unCANData.u32CANData[0U]; u32RSCANAddress += 0X04UL; (*((uint32_t *)(u32RSCANAddress))) = pstCANFrame->unCANData.u32CANData[1U]; //RCFDC0CFDCFDF1_3 = pstCANFrame->unCANData.u32CANData[1U]; u32RSCANAddress = u32RSCANBufIndexK * 0x4UL + 0X1D8UL + RSCAN0_BASE_ADDRESS; (*((uint32_t *)(u32RSCANAddress))) = 0XFFUL; //RCFDC0CFDCFPCTR3 = 0XFFUL; enRSCANStatus = RSCAN_SET_COMPLETE; } else { enRSCANStatus = RSCAN_SET_ERROR_MSGFULL; } } return enRSCANStatus; } RSCAN_SetState RSCAN0_CH1_Set_FIFO0_Data(CAN_Frame_st_t *pstCANFrame) { uint32_t u32RSCANDataBuf = 0UL; uint32_t u32RSCANBufIndexK = (0UL + 3UL * 1UL); uint32_t u32RSCANAddress = 0UL; RSCAN_SetState enRSCANStatus = RSCAN_SET_COMPLETE; if ((pstCANFrame->u8CANLEN > 8U) || (pstCANFrame == 0UL)) { enRSCANStatus = RSCAN_SET_ERROR_PARAMETER; } if (enRSCANStatus == RSCAN_SET_COMPLETE) { u32RSCANAddress = u32RSCANBufIndexK * 4UL + 0X178UL + RSCAN0_BASE_ADDRESS; if (((*((uint32_t *)(u32RSCANAddress))) & 0x00000002UL) == 0x0U) //if ((RSCAN0CFSTS3 & 0x00000002UL) == 0x0U) { u32RSCANDataBuf = pstCANFrame->u8CANFrameIDE; u32RSCANDataBuf = u32RSCANDataBuf << 31U; u32RSCANDataBuf |= pstCANFrame->u32CANID; u32RSCANAddress = u32RSCANBufIndexK * 0x10UL + 0XE80UL + RSCAN0_BASE_ADDRESS; (*((uint32_t *)(u32RSCANAddress))) = u32RSCANDataBuf; //RCFDC0CFDCFID3 = u32RSCANDataBuf; u32RSCANDataBuf = pstCANFrame->u8CANLEN; u32RSCANAddress = u32RSCANBufIndexK * 0x10UL + 0XE84UL + RSCAN0_BASE_ADDRESS; (*((uint32_t *)(u32RSCANAddress))) = ((u32RSCANDataBuf) << 28U); //RCFDC0CFDCFPTR3 = ((u32RSCANDataBuf) << 28U); u32RSCANAddress = u32RSCANBufIndexK * 0x10UL + 0XE88UL + RSCAN0_BASE_ADDRESS; (*((uint32_t *)(u32RSCANAddress))) = pstCANFrame->unCANData.u32CANData[0U]; //RCFDC0CFDCFDF0_3 = pstCANFrame->unCANData.u32CANData[0U]; u32RSCANAddress += 0X04UL; (*((uint32_t *)(u32RSCANAddress))) = pstCANFrame->unCANData.u32CANData[1U]; //RCFDC0CFDCFDF1_3 = pstCANFrame->unCANData.u32CANData[1U]; u32RSCANAddress = u32RSCANBufIndexK * 0x4UL + 0X1D8UL + RSCAN0_BASE_ADDRESS; (*((uint32_t *)(u32RSCANAddress))) = 0XFFUL; //RCFDC0CFDCFPCTR3 = 0XFFUL; enRSCANStatus = RSCAN_SET_COMPLETE; } else { enRSCANStatus = RSCAN_SET_ERROR_MSGFULL; } } return enRSCANStatus; } RSCAN_SetState RSCAN0_CH2_Set_FIFO0_Data(CAN_Frame_st_t *pstCANFrame) { uint32_t u32RSCANDataBuf = 0UL; uint32_t u32RSCANBufIndexK = (0UL + 3UL * 2UL); uint32_t u32RSCANAddress = 0UL; RSCAN_SetState enRSCANStatus = RSCAN_SET_COMPLETE; if ((pstCANFrame->u8CANLEN > 8U) || (pstCANFrame == 0UL)) { enRSCANStatus = RSCAN_SET_ERROR_PARAMETER; } if (enRSCANStatus == RSCAN_SET_COMPLETE) { u32RSCANAddress = u32RSCANBufIndexK * 4UL + 0X178UL + RSCAN0_BASE_ADDRESS; if (((*((uint32_t *)(u32RSCANAddress))) & 0x00000002UL) == 0x0U) //if ((RSCAN0CFSTS3 & 0x00000002UL) == 0x0U) { u32RSCANDataBuf = pstCANFrame->u8CANFrameIDE; u32RSCANDataBuf = u32RSCANDataBuf << 31U; u32RSCANDataBuf |= pstCANFrame->u32CANID; u32RSCANAddress = u32RSCANBufIndexK * 0x10UL + 0XE80UL + RSCAN0_BASE_ADDRESS; (*((uint32_t *)(u32RSCANAddress))) = u32RSCANDataBuf; //RCFDC0CFDCFID3 = u32RSCANDataBuf; u32RSCANDataBuf = pstCANFrame->u8CANLEN; u32RSCANAddress = u32RSCANBufIndexK * 0x10UL + 0XE84UL + RSCAN0_BASE_ADDRESS; (*((uint32_t *)(u32RSCANAddress))) = ((u32RSCANDataBuf) << 28U); //RCFDC0CFDCFPTR3 = ((u32RSCANDataBuf) << 28U); u32RSCANAddress = u32RSCANBufIndexK * 0x10UL + 0XE88UL + RSCAN0_BASE_ADDRESS; (*((uint32_t *)(u32RSCANAddress))) = pstCANFrame->unCANData.u32CANData[0U]; //RCFDC0CFDCFDF0_3 = pstCANFrame->unCANData.u32CANData[0U]; u32RSCANAddress += 0X04UL; (*((uint32_t *)(u32RSCANAddress))) = pstCANFrame->unCANData.u32CANData[1U]; //RCFDC0CFDCFDF1_3 = pstCANFrame->unCANData.u32CANData[1U]; u32RSCANAddress = u32RSCANBufIndexK * 0x4UL + 0X1D8UL + RSCAN0_BASE_ADDRESS; (*((uint32_t *)(u32RSCANAddress))) = 0XFFUL; //RCFDC0CFDCFPCTR3 = 0XFFUL; enRSCANStatus = RSCAN_SET_COMPLETE; } else { enRSCANStatus = RSCAN_SET_ERROR_MSGFULL; } } return enRSCANStatus; } /*********************************************************/ RSCAN_SetState RSCAN0_CH0_Set_TXBUF_Data(RSCAN_Channel_Buf_en_t enBufIndex, CAN_Frame_st_t *pstCANFrame) { uint8_t i; uint32_t u32RSCANDataBuf = 0UL; uint32_t u32RSCANBufIndexP = (enBufIndex + 16UL * 0UL); uint32_t u32RSCANAddress = 0UL; RSCAN_SetState enRSCANStatus = RSCAN_SET_COMPLETE; if ((pstCANFrame->u8CANLEN > 8U) || (pstCANFrame == 0UL) || (pstCANFrame->u8CANFrameIDE > 1U) || (enBufIndex >= RSCAN_CHANNEL_BUF_MAX)) { enRSCANStatus = RSCAN_SET_ERROR_PARAMETER; } if (enRSCANStatus == RSCAN_SET_COMPLETE) { u32RSCANAddress = u32RSCANBufIndexP + 0X2D0UL + RSCAN0_BASE_ADDRESS; if (((*((uint8_t *)u32RSCANAddress)) & 0x08U) == 0x0U) //if ((RSCAN0TMSTS0 & 0x08U) == 0x0U) { (*((uint8_t *)u32RSCANAddress)) = 0UL; //RSCAN0TMSTS0 = 0UL; u32RSCANDataBuf = pstCANFrame->u8CANFrameIDE; u32RSCANDataBuf = u32RSCANDataBuf << 31U; u32RSCANDataBuf |= pstCANFrame->u32CANID; u32RSCANAddress = u32RSCANBufIndexP * 0X10UL + 0X1000UL + RSCAN0_BASE_ADDRESS; (*((uint32_t *)u32RSCANAddress)) = u32RSCANDataBuf; //RCFDC0CFDTMID0 = u32RSCANDataBuf; u32RSCANDataBuf = pstCANFrame->u8CANLEN; u32RSCANAddress = u32RSCANBufIndexP * 0X10UL + 0X1004UL + RSCAN0_BASE_ADDRESS; (*((uint32_t *)u32RSCANAddress)) = (uint32_t)((u32RSCANDataBuf) << 28U); //RCFDC0CFDTMPTR0 = (uint32_t)((u32RSCANDataBuf) << 28U); u32RSCANAddress = u32RSCANBufIndexP * 0X10UL + 0X1008UL + RSCAN0_BASE_ADDRESS; (*((uint32_t *)u32RSCANAddress)) = pstCANFrame->unCANData.u32CANData[0U]; //RCFDC0CFDTMDF0_0 = pstCANFrame->unCANData.u32CANData[0U]; u32RSCANAddress += 0X04UL; (*((uint32_t *)u32RSCANAddress)) = pstCANFrame->unCANData.u32CANData[1U]; //RCFDC0CFDTMDF1_0 = pstCANFrame->unCANData.u32CANData[1U]; u32RSCANAddress = u32RSCANBufIndexP + 0X250UL + RSCAN0_BASE_ADDRESS; (*((uint8_t *)u32RSCANAddress)) |= 0X01; //RCFDC0CFDTMC0 |= 0X01; enRSCANStatus = RSCAN_SET_COMPLETE; } else { enRSCANStatus = RSCAN_SET_ERROR_MSGFULL; } } return enRSCANStatus; } RSCAN_SetState RSCAN0_CH1_Set_TXBUF_Data(RSCAN_Channel_Buf_en_t enBufIndex, CAN_Frame_st_t *pstCANFrame) { uint8_t i; uint32_t u32RSCANDataBuf = 0UL; uint32_t u32RSCANBufIndexP = (enBufIndex + 16UL * 1UL); uint32_t u32RSCANAddress = 0UL; RSCAN_SetState enRSCANStatus = RSCAN_SET_COMPLETE; if ((pstCANFrame->u8CANLEN > 8U) || (pstCANFrame == 0UL) || (pstCANFrame->u8CANFrameIDE > 1U) || (enBufIndex >= RSCAN_CHANNEL_BUF_MAX)) { enRSCANStatus = RSCAN_SET_ERROR_PARAMETER; } if (enRSCANStatus == RSCAN_SET_COMPLETE) { u32RSCANAddress = u32RSCANBufIndexP + 0X2D0UL + RSCAN0_BASE_ADDRESS; if (((*((uint8_t *)u32RSCANAddress)) & 0x08U) == 0x0U) //if ((RSCAN0TMSTS0 & 0x08U) == 0x0U) { (*((uint8_t *)u32RSCANAddress)) = 0UL; //RSCAN0TMSTS0 = 0UL; u32RSCANDataBuf = pstCANFrame->u8CANFrameIDE; u32RSCANDataBuf = u32RSCANDataBuf << 31U; u32RSCANDataBuf |= pstCANFrame->u32CANID; u32RSCANAddress = u32RSCANBufIndexP * 0X10UL + 0X1000UL + RSCAN0_BASE_ADDRESS; (*((uint32_t *)u32RSCANAddress)) = u32RSCANDataBuf; //RCFDC0CFDTMID0 = u32RSCANDataBuf; u32RSCANDataBuf = pstCANFrame->u8CANLEN; u32RSCANAddress = u32RSCANBufIndexP * 0X10UL + 0X1004UL + RSCAN0_BASE_ADDRESS; (*((uint32_t *)u32RSCANAddress)) = (uint32_t)((u32RSCANDataBuf) << 28U); //RCFDC0CFDTMPTR0 = (uint32_t)((u32RSCANDataBuf) << 28U); u32RSCANAddress = u32RSCANBufIndexP * 0X10UL + 0X1008UL + RSCAN0_BASE_ADDRESS; (*((uint32_t *)u32RSCANAddress)) = pstCANFrame->unCANData.u32CANData[0U]; //RCFDC0CFDTMDF0_0 = pstCANFrame->unCANData.u32CANData[0U]; u32RSCANAddress += 0X04UL; (*((uint32_t *)u32RSCANAddress)) = pstCANFrame->unCANData.u32CANData[1U]; //RCFDC0CFDTMDF1_0 = pstCANFrame->unCANData.u32CANData[1U]; u32RSCANAddress = u32RSCANBufIndexP + 0X250UL + RSCAN0_BASE_ADDRESS; (*((uint8_t *)u32RSCANAddress)) |= 0X01; //RCFDC0CFDTMC0 |= 0X01; enRSCANStatus = RSCAN_SET_COMPLETE; } else { enRSCANStatus = RSCAN_SET_ERROR_MSGFULL; } } return enRSCANStatus; } RSCAN_SetState RSCAN0_CH2_Set_TXBUF_Data(RSCAN_Channel_Buf_en_t enBufIndex, CAN_Frame_st_t *pstCANFrame) { uint8_t i; uint32_t u32RSCANDataBuf = 0UL; uint32_t u32RSCANBufIndexP = (enBufIndex + 16UL * 2UL); uint32_t u32RSCANAddress = 0UL; RSCAN_SetState enRSCANStatus = RSCAN_SET_COMPLETE; if ((pstCANFrame->u8CANLEN > 8U) || (pstCANFrame == 0UL) || (pstCANFrame->u8CANFrameIDE > 1U) || (enBufIndex >= RSCAN_CHANNEL_BUF_MAX)) { enRSCANStatus = RSCAN_SET_ERROR_PARAMETER; } if (enRSCANStatus == RSCAN_SET_COMPLETE) { u32RSCANAddress = u32RSCANBufIndexP + 0X2D0UL + RSCAN0_BASE_ADDRESS; if (((*((uint8_t *)u32RSCANAddress)) & 0x08U) == 0x0U) //if ((RSCAN0TMSTS0 & 0x08U) == 0x0U) { (*((uint8_t *)u32RSCANAddress)) = 0UL; //RSCAN0TMSTS0 = 0UL; u32RSCANDataBuf = pstCANFrame->u8CANFrameIDE; u32RSCANDataBuf = u32RSCANDataBuf << 31U; u32RSCANDataBuf |= pstCANFrame->u32CANID; u32RSCANAddress = u32RSCANBufIndexP * 0X10UL + 0X1000UL + RSCAN0_BASE_ADDRESS; (*((uint32_t *)u32RSCANAddress)) = u32RSCANDataBuf; //RCFDC0CFDTMID0 = u32RSCANDataBuf; u32RSCANDataBuf = pstCANFrame->u8CANLEN; u32RSCANAddress = u32RSCANBufIndexP * 0X10UL + 0X1004UL + RSCAN0_BASE_ADDRESS; (*((uint32_t *)u32RSCANAddress)) = (uint32_t)((u32RSCANDataBuf) << 28U); //RCFDC0CFDTMPTR0 = (uint32_t)((u32RSCANDataBuf) << 28U); u32RSCANAddress = u32RSCANBufIndexP * 0X10UL + 0X1008UL + RSCAN0_BASE_ADDRESS; (*((uint32_t *)u32RSCANAddress)) = pstCANFrame->unCANData.u32CANData[0U]; //RCFDC0CFDTMDF0_0 = pstCANFrame->unCANData.u32CANData[0U]; u32RSCANAddress += 0X04UL; (*((uint32_t *)u32RSCANAddress)) = pstCANFrame->unCANData.u32CANData[1U]; //RCFDC0CFDTMDF1_0 = pstCANFrame->unCANData.u32CANData[1U]; u32RSCANAddress = u32RSCANBufIndexP + 0X250UL + RSCAN0_BASE_ADDRESS; (*((uint8_t *)u32RSCANAddress)) |= 0X01; //RCFDC0CFDTMC0 |= 0X01; enRSCANStatus = RSCAN_SET_COMPLETE; } else { enRSCANStatus = RSCAN_SET_ERROR_MSGFULL; } } return enRSCANStatus; } /* 0: Not in Receive state 1: In Receive state */ uint8_t RSCAN0_CH0_Get_Rec_Status(void) { uint8_t u8RSCANStatus = 0U; if (RSCAN0C0STS & 0x40UL) { u8RSCANStatus = 1U; } return u8RSCANStatus; } uint8_t RSCAN0_CH1_Get_Rec_Status(void) { uint8_t u8RSCANStatus = 0U; if (RSCAN0C1STS & 0x40UL) { u8RSCANStatus = 1U; } return u8RSCANStatus; } uint8_t RSCAN0_CH2_Get_Rec_Status(void) { uint8_t u8RSCANStatus = 0U; if (RSCAN0C2STS & 0x40UL) { u8RSCANStatus = 1U; } return u8RSCANStatus; } /* 0: Not in bus off state 1: In bus off state */ uint8_t RSCAN0_CH0_Get_Busoff_Status(void) { uint8_t u8BusoffStatus = 0U; if (RSCAN0C0ERFL & 0x08UL) { u8BusoffStatus = 1U; } return u8BusoffStatus; } uint8_t RSCAN0_CH1_Get_Busoff_Status(void) { uint8_t u8BusoffStatus = 0U; if (RSCAN0C1ERFL & 0x08UL) { u8BusoffStatus = 1U; } return u8BusoffStatus; } uint8_t RSCAN0_CH2_Get_Busoff_Status(void) { uint8_t u8BusoffStatus = 0U; if (RSCAN0C2ERFL & 0x08UL) { u8BusoffStatus = 1U; } return u8BusoffStatus; } void RSCAN0_CH0_Busoff_Recover(void) { if (RSCAN0_CH0_Get_Busoff_Status()) { RSCAN0C0ERFL &= 0xFFFFFFF7UL; RSCAN0C0CTR &= 0xFFFFFFF8UL; /* CommunicationMode */ while ((RSCAN0C0STS & 0x87UL) != 0x80UL) { } } } void RSCAN0_CH1_Busoff_Recover(void) { if (RSCAN0_CH1_Get_Busoff_Status()) { RSCAN0C1ERFL &= 0xFFFFFFF7UL; RSCAN0C1CTR &= 0xFFFFFFF8UL; /* CommunicationMode */ while ((RSCAN0C1STS & 0x87UL) != 0x80UL) { } } } void RSCAN0_CH2_Busoff_Recover(void) { if (RSCAN0_CH2_Get_Busoff_Status()) { RSCAN0C2ERFL &= 0xFFFFFFF7UL; RSCAN0C2CTR &= 0xFFFFFFF8UL; /* CommunicationMode */ while ((RSCAN0C2STS & 0x87UL) != 0x80UL) { } } } /*****************************/ void RSCAN0_CH0_Abort(RSCAN_Channel_Buf_en_t enBufIndex) { uint32_t u32RSCANBufIndexP = (enBufIndex + 16UL * 0UL); uint32_t u32RSCANAddress = 0UL; RSCAN_SetState enRSCANStatus = RSCAN_SET_COMPLETE; if ((enBufIndex >= RSCAN_CHANNEL_BUF_MAX)) { enRSCANStatus = RSCAN_SET_ERROR_PARAMETER; } if (enRSCANStatus == RSCAN_SET_COMPLETE) { u32RSCANAddress = u32RSCANBufIndexP + 0X250UL + RSCAN0_BASE_ADDRESS; (*((uint8_t *)u32RSCANAddress)) |= 0X02U; //RCFDC0CFDTMC0 |= 0X02; } } void RSCAN0_CH1_Abort(RSCAN_Channel_Buf_en_t enBufIndex) { uint32_t u32RSCANBufIndexP = (enBufIndex + 16UL * 1UL); uint32_t u32RSCANAddress = 0UL; RSCAN_SetState enRSCANStatus = RSCAN_SET_COMPLETE; if ((enBufIndex >= RSCAN_CHANNEL_BUF_MAX)) { enRSCANStatus = RSCAN_SET_ERROR_PARAMETER; } if (enRSCANStatus == RSCAN_SET_COMPLETE) { u32RSCANAddress = u32RSCANBufIndexP + 0X250UL + RSCAN0_BASE_ADDRESS; (*((uint8_t *)u32RSCANAddress)) |= 0X02U; //RCFDC0CFDTMC0 |= 0X02; } } void RSCAN0_CH2_Abort(RSCAN_Channel_Buf_en_t enBufIndex) { uint32_t u32RSCANBufIndexP = (enBufIndex + 16UL * 2UL); uint32_t u32RSCANAddress = 0UL; RSCAN_SetState enRSCANStatus = RSCAN_SET_COMPLETE; if ((enBufIndex >= RSCAN_CHANNEL_BUF_MAX)) { enRSCANStatus = RSCAN_SET_ERROR_PARAMETER; } if (enRSCANStatus == RSCAN_SET_COMPLETE) { u32RSCANAddress = u32RSCANBufIndexP + 0X250UL + RSCAN0_BASE_ADDRESS; (*((uint8_t *)u32RSCANAddress)) |= 0X02U; //RCFDC0CFDTMC0 |= 0X02; } } /* 如果CAN模块休眠了,但是芯片没休眠,CAN报文无法唤醒CAN模块。 */ void RSCAN0_CH0_Sleep_Init(void) { RSCAN0C0CTR &= 0xfffffff9UL; RSCAN0C0CTR |= 0x01UL; while ((RSCAN0C0STS & 0x07UL) != 0X01UL) { ; } RSCAN0C0CTR |= 0x04UL; while ((RSCAN0C0STS & 0x07UL) != 0X04UL) { ; } } void RSCAN0_CH1_Sleep_Init(void) { RSCAN0C1CTR &= 0xfffffff9UL; RSCAN0C1CTR |= 0x01UL; while ((RSCAN0C1STS & 0x07UL) != 0X01UL) { ; } RSCAN0C1CTR |= 0x04UL; while ((RSCAN0C1STS & 0x07UL) != 0X04UL) { ; } } void RSCAN0_CH2_Sleep_Init(void) { RSCAN0C2CTR &= 0xfffffff9UL; RSCAN0C2CTR |= 0x01UL; while ((RSCAN0C2STS & 0x07UL) != 0X01UL) { ; } RSCAN0C2CTR |= 0x04UL; while ((RSCAN0C2STS & 0x07UL) != 0X04UL) { ; } } void RSCAN0_Sleep_Init(void) { RSCAN0GCTR &= 0xfffffff9UL; RSCAN0GCTR |= 0x01UL; while ((RSCAN0GSTS & 0x07UL) != 0X01UL) { ; } RSCAN0GCTR |= 0x04UL; // while ( (RSCAN0GSTS & 0x07UL) != 0X04UL ) while ((RSCAN0GSTS & 0x04UL) != 0X04UL) { ; } } uint8_t RSCAN0_CH0_TX_Error_Count(void) { uint8_t u8ErrorCount = 0U; u8ErrorCount = (uint8_t)(RSCAN0C0STS >> 24U); return u8ErrorCount; } uint8_t RSCAN0_CH1_TX_Error_Count(void) { uint8_t u8ErrorCount = 0U; u8ErrorCount = (uint8_t)(RSCAN0C1STS >> 24U); return u8ErrorCount; } uint8_t RSCAN0_CH2_TX_Error_Count(void) { uint8_t u8ErrorCount = 0U; u8ErrorCount = (uint8_t)(RSCAN0C2STS >> 24U); return u8ErrorCount; } uint8_t RSCAN0_CH0_RX_Error_Count(void) { uint8_t u8ErrorCount = 0U; u8ErrorCount = (uint8_t)(RSCAN0C0STS >> 16U); return u8ErrorCount; } uint8_t RSCAN0_CH1_RX_Error_Count(void) { uint8_t u8ErrorCount = 0U; u8ErrorCount = (uint8_t)(RSCAN0C1STS >> 16U); return u8ErrorCount; } uint8_t RSCAN0_CH2_RX_Error_Count(void) { uint8_t u8ErrorCount = 0U; u8ErrorCount = (uint8_t)(RSCAN0C2STS >> 16U); return u8ErrorCount; } /****************************************************/ /******************************************************************/ void RSCAN0_CH0_RX_ISR(void) { if (RSCAN0CFSTS2 & 0X08UL) { CAN_Frame_Receive_st_t stCANFrameReceive; RSCAN0CFSTS2 &= 0xFFFFFFF7UL; while ((RSCAN0CFSTS2 & 0x01UL) == 0U) { stCANFrameReceive.stReceiveContent.u32CANID = (uint32_t)(RSCAN0CFID2 & 0x1FFFFFFFUL); stCANFrameReceive.stReceiveContent.u8CANLEN = (uint8_t)(RSCAN0CFPTR2 >> 28U); stCANFrameReceive.stReceiveContent.u8CANFrameIDE = (uint8_t)((RSCAN0CFID2 >> 31U)); stCANFrameReceive.stReceiveContent.unCANData.u32CANData[0U] = RSCAN0CFDF02; stCANFrameReceive.stReceiveContent.unCANData.u32CANData[1U] = RSCAN0CFDF12; RSCAN0CFPCTR2 = 0xFFU; RSCAN0_CH0_Receive(&stCANFrameReceive.stReceiveContent); } } } void RSCAN0_CH1_RX_ISR(void) { if (RSCAN0CFSTS5 & 0X08UL) { CAN_Frame_Receive_st_t stCANFrameReceive; RSCAN0CFSTS5 &= 0xFFFFFFF7UL; while ((RSCAN0CFSTS5 & 0x01UL) == 0U) { stCANFrameReceive.stReceiveContent.u32CANID = (uint32_t)(RSCAN0CFID5 & 0x1FFFFFFFUL); stCANFrameReceive.stReceiveContent.u8CANLEN = (uint8_t)(RSCAN0CFPTR5 >> 28U); stCANFrameReceive.stReceiveContent.u8CANFrameIDE = (uint8_t)((RSCAN0CFID5 >> 31U)); stCANFrameReceive.stReceiveContent.unCANData.u32CANData[0U] = RSCAN0CFDF05; stCANFrameReceive.stReceiveContent.unCANData.u32CANData[1U] = RSCAN0CFDF15; RSCAN0CFPCTR5 = 0xFFU; RSCAN0_CH1_Receive(&stCANFrameReceive.stReceiveContent); } } } void RSCAN0_CH2_RX_ISR(void) { if (RSCAN0CFSTS8 & 0X08UL) { CAN_Frame_Receive_st_t stCANFrameReceive; RSCAN0CFSTS8 &= 0xFFFFFFF7UL; while ((RSCAN0CFSTS8 & 0x01UL) == 0U) { stCANFrameReceive.stReceiveContent.u32CANID = (uint32_t)(RSCAN0CFID8 & 0x1FFFFFFFUL); stCANFrameReceive.stReceiveContent.u8CANLEN = (uint8_t)(RSCAN0CFPTR8 >> 28U); stCANFrameReceive.stReceiveContent.u8CANFrameIDE = (uint8_t)((RSCAN0CFID8 >> 31U)); stCANFrameReceive.stReceiveContent.unCANData.u32CANData[0U] = RSCAN0CFDF08; stCANFrameReceive.stReceiveContent.unCANData.u32CANData[1U] = RSCAN0CFDF18; RSCAN0CFPCTR8 = 0xFFU; RSCAN0_CH2_Receive(&stCANFrameReceive.stReceiveContent); } } } void RSCAN0_CH0_TX_ISR(void) { if (RSCAN0CFSTS0 & 0X10UL) { RSCAN0CFSTS0 &= 0XFFFFFFEFUL; } if (RSCAN0CFSTS1 & 0X10UL) { RSCAN0CFSTS1 &= 0XFFFFFFEFUL; } if ((RSCAN0TMSTS0 & RSCAN_TX_CPLT_AND) == RSCAN_TX_CPLT) { RSCAN0TMSTS0 = 0X0U; if (g_stRSCAN0Config.stRSCANCh0.pfnRSCANConfirmCallBack) { g_stRSCAN0Config.stRSCANCh0.pfnRSCANConfirmCallBack(0, 0); } } else if ((RSCAN0TMSTS0 & RSCAN_ABORT_CPLT_AND) == RSCAN_ABORT_CPLT) { RSCAN0TMSTS0 = 0X0U; if (g_stRSCAN0Config.stRSCANCh0.pfnRSCANAbortConfirmCallBack) { g_stRSCAN0Config.stRSCANCh0.pfnRSCANAbortConfirmCallBack(0U); } } if ((RSCAN0TMSTS1 & RSCAN_TX_CPLT_AND) == RSCAN_TX_CPLT) { RSCAN0TMSTS1 = 0X0U; if (g_stRSCAN0Config.stRSCANCh0.pfnRSCANConfirmCallBack) { g_stRSCAN0Config.stRSCANCh0.pfnRSCANConfirmCallBack(1, 0); } } else if ((RSCAN0TMSTS1 & RSCAN_ABORT_CPLT_AND) == RSCAN_ABORT_CPLT) { RSCAN0TMSTS1 = 0X0U; if (g_stRSCAN0Config.stRSCANCh0.pfnRSCANAbortConfirmCallBack) { g_stRSCAN0Config.stRSCANCh0.pfnRSCANAbortConfirmCallBack(1U); } } if ((RSCAN0TMSTS2 & RSCAN_TX_CPLT_AND) == RSCAN_TX_CPLT) { RSCAN0TMSTS2 = 0X0U; if (g_stRSCAN0Config.stRSCANCh0.pfnRSCANConfirmCallBack) { g_stRSCAN0Config.stRSCANCh0.pfnRSCANConfirmCallBack(2, 0); } } else if ((RSCAN0TMSTS2 & RSCAN_ABORT_CPLT_AND) == RSCAN_ABORT_CPLT) { RSCAN0TMSTS2 = 0X0U; if (g_stRSCAN0Config.stRSCANCh0.pfnRSCANAbortConfirmCallBack) { g_stRSCAN0Config.stRSCANCh0.pfnRSCANAbortConfirmCallBack(2U); } } if ((RSCAN0TMSTS3 & RSCAN_TX_CPLT_AND) == RSCAN_TX_CPLT) { RSCAN0TMSTS3 = 0X0U; if (g_stRSCAN0Config.stRSCANCh0.pfnRSCANConfirmCallBack) { g_stRSCAN0Config.stRSCANCh0.pfnRSCANConfirmCallBack(3, 0); } } else if ((RSCAN0TMSTS3 & RSCAN_ABORT_CPLT_AND) == RSCAN_ABORT_CPLT) { RSCAN0TMSTS3 = 0X0U; if (g_stRSCAN0Config.stRSCANCh0.pfnRSCANAbortConfirmCallBack) { g_stRSCAN0Config.stRSCANCh0.pfnRSCANAbortConfirmCallBack(3U); } } if ((RSCAN0TMSTS4 & RSCAN_TX_CPLT_AND) == RSCAN_TX_CPLT) { RSCAN0TMSTS4 = 0X0U; if (g_stRSCAN0Config.stRSCANCh0.pfnRSCANConfirmCallBack) { g_stRSCAN0Config.stRSCANCh0.pfnRSCANConfirmCallBack(4, 0); } } else if ((RSCAN0TMSTS4 & RSCAN_ABORT_CPLT_AND) == RSCAN_ABORT_CPLT) { RSCAN0TMSTS4 = 0X0U; if (g_stRSCAN0Config.stRSCANCh0.pfnRSCANAbortConfirmCallBack) { g_stRSCAN0Config.stRSCANCh0.pfnRSCANAbortConfirmCallBack(4U); } } if ((RSCAN0TMSTS5 & RSCAN_TX_CPLT_AND) == RSCAN_TX_CPLT) { RSCAN0TMSTS5 = 0X0U; if (g_stRSCAN0Config.stRSCANCh0.pfnRSCANConfirmCallBack) { g_stRSCAN0Config.stRSCANCh0.pfnRSCANConfirmCallBack(5, 0); } } else if ((RSCAN0TMSTS5 & RSCAN_ABORT_CPLT_AND) == RSCAN_ABORT_CPLT) { RSCAN0TMSTS5 = 0X0U; if (g_stRSCAN0Config.stRSCANCh0.pfnRSCANAbortConfirmCallBack) { g_stRSCAN0Config.stRSCANCh0.pfnRSCANAbortConfirmCallBack(5U); } } if ((RSCAN0TMSTS6 & RSCAN_TX_CPLT_AND) == RSCAN_TX_CPLT) { RSCAN0TMSTS6 = 0X0U; if (g_stRSCAN0Config.stRSCANCh0.pfnRSCANConfirmCallBack) { g_stRSCAN0Config.stRSCANCh0.pfnRSCANConfirmCallBack(6, 0); } } else if ((RSCAN0TMSTS6 & RSCAN_ABORT_CPLT_AND) == RSCAN_ABORT_CPLT) { RSCAN0TMSTS6 = 0X0U; if (g_stRSCAN0Config.stRSCANCh0.pfnRSCANAbortConfirmCallBack) { g_stRSCAN0Config.stRSCANCh0.pfnRSCANAbortConfirmCallBack(6U); } } if ((RSCAN0TMSTS7 & RSCAN_TX_CPLT_AND) == RSCAN_TX_CPLT) { RSCAN0TMSTS7 = 0X0U; if (g_stRSCAN0Config.stRSCANCh0.pfnRSCANConfirmCallBack) { g_stRSCAN0Config.stRSCANCh0.pfnRSCANConfirmCallBack(7, 0); } } else if ((RSCAN0TMSTS7 & RSCAN_ABORT_CPLT_AND) == RSCAN_ABORT_CPLT) { RSCAN0TMSTS7 = 0X0U; if (g_stRSCAN0Config.stRSCANCh0.pfnRSCANAbortConfirmCallBack) { g_stRSCAN0Config.stRSCANCh0.pfnRSCANAbortConfirmCallBack(7U); } } if ((RSCAN0TMSTS8 & RSCAN_TX_CPLT_AND) == RSCAN_TX_CPLT) { RSCAN0TMSTS8 = 0X0U; if (g_stRSCAN0Config.stRSCANCh0.pfnRSCANConfirmCallBack) { g_stRSCAN0Config.stRSCANCh0.pfnRSCANConfirmCallBack(8, 0); } } else if ((RSCAN0TMSTS8 & RSCAN_ABORT_CPLT_AND) == RSCAN_ABORT_CPLT) { RSCAN0TMSTS8 = 0X0U; if (g_stRSCAN0Config.stRSCANCh0.pfnRSCANAbortConfirmCallBack) { g_stRSCAN0Config.stRSCANCh0.pfnRSCANAbortConfirmCallBack(8U); } } if ((RSCAN0TMSTS9 & RSCAN_TX_CPLT_AND) == RSCAN_TX_CPLT) { RSCAN0TMSTS9 = 0X0U; if (g_stRSCAN0Config.stRSCANCh0.pfnRSCANConfirmCallBack) { g_stRSCAN0Config.stRSCANCh0.pfnRSCANConfirmCallBack(9, 0); } } else if ((RSCAN0TMSTS9 & RSCAN_ABORT_CPLT_AND) == RSCAN_ABORT_CPLT) { RSCAN0TMSTS9 = 0X0U; if (g_stRSCAN0Config.stRSCANCh0.pfnRSCANAbortConfirmCallBack) { g_stRSCAN0Config.stRSCANCh0.pfnRSCANAbortConfirmCallBack(9U); } } if ((RSCAN0TMSTS10 & RSCAN_TX_CPLT_AND) == RSCAN_TX_CPLT) { RSCAN0TMSTS10 = 0X0U; if (g_stRSCAN0Config.stRSCANCh0.pfnRSCANConfirmCallBack) { g_stRSCAN0Config.stRSCANCh0.pfnRSCANConfirmCallBack(10, 0); } } else if ((RSCAN0TMSTS10 & RSCAN_ABORT_CPLT_AND) == RSCAN_ABORT_CPLT) { RSCAN0TMSTS10 = 0X0U; if (g_stRSCAN0Config.stRSCANCh0.pfnRSCANAbortConfirmCallBack) { g_stRSCAN0Config.stRSCANCh0.pfnRSCANAbortConfirmCallBack(10U); } } if ((RSCAN0TMSTS11 & RSCAN_TX_CPLT_AND) == RSCAN_TX_CPLT) { RSCAN0TMSTS11 = 0X0U; if (g_stRSCAN0Config.stRSCANCh0.pfnRSCANConfirmCallBack) { g_stRSCAN0Config.stRSCANCh0.pfnRSCANConfirmCallBack(11, 0); } } else if ((RSCAN0TMSTS11 & RSCAN_ABORT_CPLT_AND) == RSCAN_ABORT_CPLT) { RSCAN0TMSTS11 = 0X0U; if (g_stRSCAN0Config.stRSCANCh0.pfnRSCANAbortConfirmCallBack) { g_stRSCAN0Config.stRSCANCh0.pfnRSCANAbortConfirmCallBack(11U); } } if ((RSCAN0TMSTS12 & RSCAN_TX_CPLT_AND) == RSCAN_TX_CPLT) { RSCAN0TMSTS12 = 0X0U; if (g_stRSCAN0Config.stRSCANCh0.pfnRSCANConfirmCallBack) { g_stRSCAN0Config.stRSCANCh0.pfnRSCANConfirmCallBack(12, 0); } } else if ((RSCAN0TMSTS12 & RSCAN_ABORT_CPLT_AND) == RSCAN_ABORT_CPLT) { RSCAN0TMSTS12 = 0X0U; if (g_stRSCAN0Config.stRSCANCh0.pfnRSCANAbortConfirmCallBack) { g_stRSCAN0Config.stRSCANCh0.pfnRSCANAbortConfirmCallBack(12U); } } if ((RSCAN0TMSTS13 & RSCAN_TX_CPLT_AND) == RSCAN_TX_CPLT) { RSCAN0TMSTS13 = 0X0U; if (g_stRSCAN0Config.stRSCANCh0.pfnRSCANConfirmCallBack) { g_stRSCAN0Config.stRSCANCh0.pfnRSCANConfirmCallBack(13, 0); } } else if ((RSCAN0TMSTS13 & RSCAN_ABORT_CPLT_AND) == RSCAN_ABORT_CPLT) { RSCAN0TMSTS13 = 0X0U; if (g_stRSCAN0Config.stRSCANCh0.pfnRSCANAbortConfirmCallBack) { g_stRSCAN0Config.stRSCANCh0.pfnRSCANAbortConfirmCallBack(13U); } } if ((RSCAN0TMSTS14 & RSCAN_TX_CPLT_AND) == RSCAN_TX_CPLT) { RSCAN0TMSTS14 = 0X0U; if (g_stRSCAN0Config.stRSCANCh0.pfnRSCANConfirmCallBack) { g_stRSCAN0Config.stRSCANCh0.pfnRSCANConfirmCallBack(14, 0); } } else if ((RSCAN0TMSTS14 & RSCAN_ABORT_CPLT_AND) == RSCAN_ABORT_CPLT) { RSCAN0TMSTS14 = 0X0U; if (g_stRSCAN0Config.stRSCANCh0.pfnRSCANAbortConfirmCallBack) { g_stRSCAN0Config.stRSCANCh0.pfnRSCANAbortConfirmCallBack(14U); } } if ((RSCAN0TMSTS15 & RSCAN_TX_CPLT_AND) == RSCAN_TX_CPLT) { RSCAN0TMSTS15 = 0X0U; if (g_stRSCAN0Config.stRSCANCh0.pfnRSCANConfirmCallBack) { g_stRSCAN0Config.stRSCANCh0.pfnRSCANConfirmCallBack(15, 0); } } else if ((RSCAN0TMSTS15 & RSCAN_ABORT_CPLT_AND) == RSCAN_ABORT_CPLT) { RSCAN0TMSTS15 = 0X0U; if (g_stRSCAN0Config.stRSCANCh0.pfnRSCANAbortConfirmCallBack) { g_stRSCAN0Config.stRSCANCh0.pfnRSCANAbortConfirmCallBack(15U); } } } void RSCAN0_CH1_TX_ISR(void) { if (RSCAN0CFSTS3 & 0X10UL) { RSCAN0CFSTS3 &= 0XFFFFFFEFUL; } if (RSCAN0CFSTS4 & 0X10UL) { RSCAN0CFSTS4 &= 0XFFFFFFEFUL; } if ((RSCAN0TMSTS16 & RSCAN_TX_CPLT_AND) == RSCAN_TX_CPLT) { RSCAN0TMSTS16 = 0X0U; if (g_stRSCAN0Config.stRSCANCh1.pfnRSCANConfirmCallBack) { g_stRSCAN0Config.stRSCANCh1.pfnRSCANConfirmCallBack(0, 0); } } else if ((RSCAN0TMSTS16 & RSCAN_ABORT_CPLT_AND) == RSCAN_ABORT_CPLT) { RSCAN0TMSTS16 = 0X0U; if (g_stRSCAN0Config.stRSCANCh1.pfnRSCANAbortConfirmCallBack) { g_stRSCAN0Config.stRSCANCh1.pfnRSCANAbortConfirmCallBack(0U); } } if ((RSCAN0TMSTS17 & RSCAN_TX_CPLT_AND) == RSCAN_TX_CPLT) { RSCAN0TMSTS17 = 0X0U; if (g_stRSCAN0Config.stRSCANCh1.pfnRSCANConfirmCallBack) { g_stRSCAN0Config.stRSCANCh1.pfnRSCANConfirmCallBack(1, 0); } } else if ((RSCAN0TMSTS17 & RSCAN_ABORT_CPLT_AND) == RSCAN_ABORT_CPLT) { RSCAN0TMSTS17 = 0X0U; if (g_stRSCAN0Config.stRSCANCh1.pfnRSCANAbortConfirmCallBack) { g_stRSCAN0Config.stRSCANCh1.pfnRSCANAbortConfirmCallBack(1U); } } if ((RSCAN0TMSTS18 & RSCAN_TX_CPLT_AND) == RSCAN_TX_CPLT) { RSCAN0TMSTS18 = 0X0U; if (g_stRSCAN0Config.stRSCANCh1.pfnRSCANConfirmCallBack) { g_stRSCAN0Config.stRSCANCh1.pfnRSCANConfirmCallBack(2, 0); } } else if ((RSCAN0TMSTS18 & RSCAN_ABORT_CPLT_AND) == RSCAN_ABORT_CPLT) { RSCAN0TMSTS18 = 0X0U; if (g_stRSCAN0Config.stRSCANCh1.pfnRSCANAbortConfirmCallBack) { g_stRSCAN0Config.stRSCANCh1.pfnRSCANAbortConfirmCallBack(2U); } } if ((RSCAN0TMSTS19 & RSCAN_TX_CPLT_AND) == RSCAN_TX_CPLT) { RSCAN0TMSTS19 = 0X0U; if (g_stRSCAN0Config.stRSCANCh1.pfnRSCANConfirmCallBack) { g_stRSCAN0Config.stRSCANCh1.pfnRSCANConfirmCallBack(3, 0); } } else if ((RSCAN0TMSTS19 & RSCAN_ABORT_CPLT_AND) == RSCAN_ABORT_CPLT) { RSCAN0TMSTS19 = 0X0U; if (g_stRSCAN0Config.stRSCANCh1.pfnRSCANAbortConfirmCallBack) { g_stRSCAN0Config.stRSCANCh1.pfnRSCANAbortConfirmCallBack(3U); } } if ((RSCAN0TMSTS20 & RSCAN_TX_CPLT_AND) == RSCAN_TX_CPLT) { RSCAN0TMSTS20 = 0X0U; if (g_stRSCAN0Config.stRSCANCh1.pfnRSCANConfirmCallBack) { g_stRSCAN0Config.stRSCANCh1.pfnRSCANConfirmCallBack(4, 0); } } else if ((RSCAN0TMSTS20 & RSCAN_ABORT_CPLT_AND) == RSCAN_ABORT_CPLT) { RSCAN0TMSTS20 = 0X0U; if (g_stRSCAN0Config.stRSCANCh1.pfnRSCANAbortConfirmCallBack) { g_stRSCAN0Config.stRSCANCh1.pfnRSCANAbortConfirmCallBack(4U); } } if ((RSCAN0TMSTS21 & RSCAN_TX_CPLT_AND) == RSCAN_TX_CPLT) { RSCAN0TMSTS21 = 0X0U; if (g_stRSCAN0Config.stRSCANCh1.pfnRSCANConfirmCallBack) { g_stRSCAN0Config.stRSCANCh1.pfnRSCANConfirmCallBack(5, 0); } } else if ((RSCAN0TMSTS21 & RSCAN_ABORT_CPLT_AND) == RSCAN_ABORT_CPLT) { RSCAN0TMSTS21 = 0X0U; if (g_stRSCAN0Config.stRSCANCh1.pfnRSCANAbortConfirmCallBack) { g_stRSCAN0Config.stRSCANCh1.pfnRSCANAbortConfirmCallBack(5U); } } if ((RSCAN0TMSTS22 & RSCAN_TX_CPLT_AND) == RSCAN_TX_CPLT) { RSCAN0TMSTS22 = 0X0U; if (g_stRSCAN0Config.stRSCANCh1.pfnRSCANConfirmCallBack) { g_stRSCAN0Config.stRSCANCh1.pfnRSCANConfirmCallBack(6, 0); } } else if ((RSCAN0TMSTS22 & RSCAN_ABORT_CPLT_AND) == RSCAN_ABORT_CPLT) { RSCAN0TMSTS22 = 0X0U; if (g_stRSCAN0Config.stRSCANCh1.pfnRSCANAbortConfirmCallBack) { g_stRSCAN0Config.stRSCANCh1.pfnRSCANAbortConfirmCallBack(6U); } } if ((RSCAN0TMSTS23 & RSCAN_TX_CPLT_AND) == RSCAN_TX_CPLT) { RSCAN0TMSTS23 = 0X0U; if (g_stRSCAN0Config.stRSCANCh1.pfnRSCANConfirmCallBack) { g_stRSCAN0Config.stRSCANCh1.pfnRSCANConfirmCallBack(7, 0); } } else if ((RSCAN0TMSTS23 & RSCAN_ABORT_CPLT_AND) == RSCAN_ABORT_CPLT) { RSCAN0TMSTS23 = 0X0U; if (g_stRSCAN0Config.stRSCANCh1.pfnRSCANAbortConfirmCallBack) { g_stRSCAN0Config.stRSCANCh1.pfnRSCANAbortConfirmCallBack(7U); } } if ((RSCAN0TMSTS24 & RSCAN_TX_CPLT_AND) == RSCAN_TX_CPLT) { RSCAN0TMSTS24 = 0X0U; if (g_stRSCAN0Config.stRSCANCh1.pfnRSCANConfirmCallBack) { g_stRSCAN0Config.stRSCANCh1.pfnRSCANConfirmCallBack(8, 0); } } else if ((RSCAN0TMSTS24 & RSCAN_ABORT_CPLT_AND) == RSCAN_ABORT_CPLT) { RSCAN0TMSTS24 = 0X0U; if (g_stRSCAN0Config.stRSCANCh1.pfnRSCANAbortConfirmCallBack) { g_stRSCAN0Config.stRSCANCh1.pfnRSCANAbortConfirmCallBack(8U); } } if ((RSCAN0TMSTS25 & RSCAN_TX_CPLT_AND) == RSCAN_TX_CPLT) { RSCAN0TMSTS25 = 0X0U; if (g_stRSCAN0Config.stRSCANCh1.pfnRSCANConfirmCallBack) { g_stRSCAN0Config.stRSCANCh1.pfnRSCANConfirmCallBack(9, 0); } } else if ((RSCAN0TMSTS25 & RSCAN_ABORT_CPLT_AND) == RSCAN_ABORT_CPLT) { RSCAN0TMSTS25 = 0X0U; if (g_stRSCAN0Config.stRSCANCh1.pfnRSCANAbortConfirmCallBack) { g_stRSCAN0Config.stRSCANCh1.pfnRSCANAbortConfirmCallBack(9U); } } if ((RSCAN0TMSTS26 & RSCAN_TX_CPLT_AND) == RSCAN_TX_CPLT) { RSCAN0TMSTS26 = 0X0U; if (g_stRSCAN0Config.stRSCANCh1.pfnRSCANConfirmCallBack) { g_stRSCAN0Config.stRSCANCh1.pfnRSCANConfirmCallBack(10, 0); } } else if ((RSCAN0TMSTS26 & RSCAN_ABORT_CPLT_AND) == RSCAN_ABORT_CPLT) { RSCAN0TMSTS26 = 0X0U; if (g_stRSCAN0Config.stRSCANCh1.pfnRSCANAbortConfirmCallBack) { g_stRSCAN0Config.stRSCANCh1.pfnRSCANAbortConfirmCallBack(10U); } } if ((RSCAN0TMSTS27 & RSCAN_TX_CPLT_AND) == RSCAN_TX_CPLT) { RSCAN0TMSTS27 = 0X0U; if (g_stRSCAN0Config.stRSCANCh1.pfnRSCANConfirmCallBack) { g_stRSCAN0Config.stRSCANCh1.pfnRSCANConfirmCallBack(11, 0); } } else if ((RSCAN0TMSTS27 & RSCAN_ABORT_CPLT_AND) == RSCAN_ABORT_CPLT) { RSCAN0TMSTS27 = 0X0U; if (g_stRSCAN0Config.stRSCANCh1.pfnRSCANAbortConfirmCallBack) { g_stRSCAN0Config.stRSCANCh1.pfnRSCANAbortConfirmCallBack(11U); } } if ((RSCAN0TMSTS28 & RSCAN_TX_CPLT_AND) == RSCAN_TX_CPLT) { RSCAN0TMSTS28 = 0X0U; if (g_stRSCAN0Config.stRSCANCh1.pfnRSCANConfirmCallBack) { g_stRSCAN0Config.stRSCANCh1.pfnRSCANConfirmCallBack(12, 0); } } else if ((RSCAN0TMSTS28 & RSCAN_ABORT_CPLT_AND) == RSCAN_ABORT_CPLT) { RSCAN0TMSTS28 = 0X0U; if (g_stRSCAN0Config.stRSCANCh1.pfnRSCANAbortConfirmCallBack) { g_stRSCAN0Config.stRSCANCh1.pfnRSCANAbortConfirmCallBack(12U); } } if ((RSCAN0TMSTS29 & RSCAN_TX_CPLT_AND) == RSCAN_TX_CPLT) { RSCAN0TMSTS29 = 0X0U; if (g_stRSCAN0Config.stRSCANCh1.pfnRSCANConfirmCallBack) { g_stRSCAN0Config.stRSCANCh1.pfnRSCANConfirmCallBack(13, 0); } } else if ((RSCAN0TMSTS29 & RSCAN_ABORT_CPLT_AND) == RSCAN_ABORT_CPLT) { RSCAN0TMSTS29 = 0X0U; if (g_stRSCAN0Config.stRSCANCh1.pfnRSCANAbortConfirmCallBack) { g_stRSCAN0Config.stRSCANCh1.pfnRSCANAbortConfirmCallBack(13U); } } if ((RSCAN0TMSTS30 & RSCAN_TX_CPLT_AND) == RSCAN_TX_CPLT) { RSCAN0TMSTS30 = 0X0U; if (g_stRSCAN0Config.stRSCANCh1.pfnRSCANConfirmCallBack) { g_stRSCAN0Config.stRSCANCh1.pfnRSCANConfirmCallBack(14, 0); } } else if ((RSCAN0TMSTS30 & RSCAN_ABORT_CPLT_AND) == RSCAN_ABORT_CPLT) { RSCAN0TMSTS30 = 0X0U; if (g_stRSCAN0Config.stRSCANCh1.pfnRSCANAbortConfirmCallBack) { g_stRSCAN0Config.stRSCANCh1.pfnRSCANAbortConfirmCallBack(14U); } } if ((RSCAN0TMSTS31 & RSCAN_TX_CPLT_AND) == RSCAN_TX_CPLT) { RSCAN0TMSTS31 = 0X0U; if (g_stRSCAN0Config.stRSCANCh1.pfnRSCANConfirmCallBack) { g_stRSCAN0Config.stRSCANCh1.pfnRSCANConfirmCallBack(15, 0); } } else if ((RSCAN0TMSTS31 & RSCAN_ABORT_CPLT_AND) == RSCAN_ABORT_CPLT) { RSCAN0TMSTS31 = 0X0U; if (g_stRSCAN0Config.stRSCANCh1.pfnRSCANAbortConfirmCallBack) { g_stRSCAN0Config.stRSCANCh1.pfnRSCANAbortConfirmCallBack(15U); } } } void RSCAN0_CH2_TX_ISR(void) { if (RSCAN0CFSTS6 & 0X10UL) { RSCAN0CFSTS6 &= 0XFFFFFFEFUL; } if (RSCAN0CFSTS7 & 0X10UL) { RSCAN0CFSTS7 &= 0XFFFFFFEFUL; } if ((RSCAN0TMSTS32 & RSCAN_TX_CPLT_AND) == RSCAN_TX_CPLT) { RSCAN0TMSTS32 = 0X0U; if (g_stRSCAN0Config.stRSCANCh2.pfnRSCANConfirmCallBack) { g_stRSCAN0Config.stRSCANCh2.pfnRSCANConfirmCallBack(0, 0); } } else if ((RSCAN0TMSTS32 & RSCAN_ABORT_CPLT_AND) == RSCAN_ABORT_CPLT) { RSCAN0TMSTS32 = 0X0U; if (g_stRSCAN0Config.stRSCANCh2.pfnRSCANAbortConfirmCallBack) { g_stRSCAN0Config.stRSCANCh2.pfnRSCANAbortConfirmCallBack(0U); } } if ((RSCAN0TMSTS33 & RSCAN_TX_CPLT_AND) == RSCAN_TX_CPLT) { RSCAN0TMSTS33 = 0X0U; if (g_stRSCAN0Config.stRSCANCh2.pfnRSCANConfirmCallBack) { g_stRSCAN0Config.stRSCANCh2.pfnRSCANConfirmCallBack(1U, 0U); } } else if ((RSCAN0TMSTS33 & RSCAN_ABORT_CPLT_AND) == RSCAN_ABORT_CPLT) { RSCAN0TMSTS33 = 0X0U; if (g_stRSCAN0Config.stRSCANCh2.pfnRSCANAbortConfirmCallBack) { g_stRSCAN0Config.stRSCANCh2.pfnRSCANAbortConfirmCallBack(1U); } } if ((RSCAN0TMSTS34 & RSCAN_TX_CPLT_AND) == RSCAN_TX_CPLT) { RSCAN0TMSTS34 = 0X0U; if (g_stRSCAN0Config.stRSCANCh2.pfnRSCANConfirmCallBack) { g_stRSCAN0Config.stRSCANCh2.pfnRSCANConfirmCallBack(2U, 0U); } } else if ((RSCAN0TMSTS34 & RSCAN_ABORT_CPLT_AND) == RSCAN_ABORT_CPLT) { RSCAN0TMSTS34 = 0X0U; if (g_stRSCAN0Config.stRSCANCh2.pfnRSCANAbortConfirmCallBack) { g_stRSCAN0Config.stRSCANCh2.pfnRSCANAbortConfirmCallBack(2U); } } if ((RSCAN0TMSTS35 & RSCAN_TX_CPLT_AND) == RSCAN_TX_CPLT) { RSCAN0TMSTS35 = 0X0U; if (g_stRSCAN0Config.stRSCANCh2.pfnRSCANConfirmCallBack) { g_stRSCAN0Config.stRSCANCh2.pfnRSCANConfirmCallBack(3U, 0U); } } else if ((RSCAN0TMSTS35 & RSCAN_ABORT_CPLT_AND) == RSCAN_ABORT_CPLT) { RSCAN0TMSTS35 = 0X0U; if (g_stRSCAN0Config.stRSCANCh2.pfnRSCANAbortConfirmCallBack) { g_stRSCAN0Config.stRSCANCh2.pfnRSCANAbortConfirmCallBack(3U); } } if ((RSCAN0TMSTS36 & RSCAN_TX_CPLT_AND) == RSCAN_TX_CPLT) { RSCAN0TMSTS36 = 0X0U; if (g_stRSCAN0Config.stRSCANCh2.pfnRSCANConfirmCallBack) { g_stRSCAN0Config.stRSCANCh2.pfnRSCANConfirmCallBack(4U, 0U); } } else if ((RSCAN0TMSTS36 & RSCAN_ABORT_CPLT_AND) == RSCAN_ABORT_CPLT) { RSCAN0TMSTS36 = 0X0U; if (g_stRSCAN0Config.stRSCANCh2.pfnRSCANAbortConfirmCallBack) { g_stRSCAN0Config.stRSCANCh2.pfnRSCANAbortConfirmCallBack(4U); } } if ((RSCAN0TMSTS37 & RSCAN_TX_CPLT_AND) == RSCAN_TX_CPLT) { RSCAN0TMSTS37 = 0X0U; if (g_stRSCAN0Config.stRSCANCh2.pfnRSCANConfirmCallBack) { g_stRSCAN0Config.stRSCANCh2.pfnRSCANConfirmCallBack(5U, 0U); } } else if ((RSCAN0TMSTS37 & RSCAN_ABORT_CPLT_AND) == RSCAN_ABORT_CPLT) { RSCAN0TMSTS37 = 0X0U; if (g_stRSCAN0Config.stRSCANCh2.pfnRSCANAbortConfirmCallBack) { g_stRSCAN0Config.stRSCANCh2.pfnRSCANAbortConfirmCallBack(5U); } } if ((RSCAN0TMSTS38 & RSCAN_TX_CPLT_AND) == RSCAN_TX_CPLT) { RSCAN0TMSTS38 = 0X0U; if (g_stRSCAN0Config.stRSCANCh2.pfnRSCANConfirmCallBack) { g_stRSCAN0Config.stRSCANCh2.pfnRSCANConfirmCallBack(6U, 0U); } } else if ((RSCAN0TMSTS38 & RSCAN_ABORT_CPLT_AND) == RSCAN_ABORT_CPLT) { RSCAN0TMSTS38 = 0X0U; if (g_stRSCAN0Config.stRSCANCh2.pfnRSCANAbortConfirmCallBack) { g_stRSCAN0Config.stRSCANCh2.pfnRSCANAbortConfirmCallBack(6U); } } if ((RSCAN0TMSTS39 & RSCAN_TX_CPLT_AND) == RSCAN_TX_CPLT) { RSCAN0TMSTS39 = 0X0U; if (g_stRSCAN0Config.stRSCANCh2.pfnRSCANConfirmCallBack) { g_stRSCAN0Config.stRSCANCh2.pfnRSCANConfirmCallBack(7U, 0U); } } else if ((RSCAN0TMSTS39 & RSCAN_ABORT_CPLT_AND) == RSCAN_ABORT_CPLT) { RSCAN0TMSTS39 = 0X0U; if (g_stRSCAN0Config.stRSCANCh2.pfnRSCANAbortConfirmCallBack) { g_stRSCAN0Config.stRSCANCh2.pfnRSCANAbortConfirmCallBack(7U); } } if ((RSCAN0TMSTS40 & RSCAN_TX_CPLT_AND) == RSCAN_TX_CPLT) { RSCAN0TMSTS40 = 0X0U; if (g_stRSCAN0Config.stRSCANCh2.pfnRSCANConfirmCallBack) { g_stRSCAN0Config.stRSCANCh2.pfnRSCANConfirmCallBack(8U, 0U); } } else if ((RSCAN0TMSTS40 & RSCAN_ABORT_CPLT_AND) == RSCAN_ABORT_CPLT) { RSCAN0TMSTS40 = 0X0U; if (g_stRSCAN0Config.stRSCANCh2.pfnRSCANAbortConfirmCallBack) { g_stRSCAN0Config.stRSCANCh2.pfnRSCANAbortConfirmCallBack(8U); } } if ((RSCAN0TMSTS41 & RSCAN_TX_CPLT_AND) == RSCAN_TX_CPLT) { RSCAN0TMSTS41 = 0X0U; if (g_stRSCAN0Config.stRSCANCh2.pfnRSCANConfirmCallBack) { g_stRSCAN0Config.stRSCANCh2.pfnRSCANConfirmCallBack(9U, 0U); } } else if ((RSCAN0TMSTS41 & RSCAN_ABORT_CPLT_AND) == RSCAN_ABORT_CPLT) { RSCAN0TMSTS41 = 0X0U; if (g_stRSCAN0Config.stRSCANCh2.pfnRSCANAbortConfirmCallBack) { g_stRSCAN0Config.stRSCANCh2.pfnRSCANAbortConfirmCallBack(9U); } } if ((RSCAN0TMSTS42 & RSCAN_TX_CPLT_AND) == RSCAN_TX_CPLT) { RSCAN0TMSTS42 = 0X0U; if (g_stRSCAN0Config.stRSCANCh2.pfnRSCANConfirmCallBack) { g_stRSCAN0Config.stRSCANCh2.pfnRSCANConfirmCallBack(10U, 0U); } } else if ((RSCAN0TMSTS42 & RSCAN_ABORT_CPLT_AND) == RSCAN_ABORT_CPLT) { RSCAN0TMSTS42 = 0X0U; if (g_stRSCAN0Config.stRSCANCh2.pfnRSCANAbortConfirmCallBack) { g_stRSCAN0Config.stRSCANCh2.pfnRSCANAbortConfirmCallBack(10U); } } if ((RSCAN0TMSTS43 & RSCAN_TX_CPLT_AND) == RSCAN_TX_CPLT) { RSCAN0TMSTS43 = 0X0U; if (g_stRSCAN0Config.stRSCANCh2.pfnRSCANConfirmCallBack) { g_stRSCAN0Config.stRSCANCh2.pfnRSCANConfirmCallBack(11U, 0U); } } else if ((RSCAN0TMSTS43 & RSCAN_ABORT_CPLT_AND) == RSCAN_ABORT_CPLT) { RSCAN0TMSTS43 = 0X0U; if (g_stRSCAN0Config.stRSCANCh2.pfnRSCANAbortConfirmCallBack) { g_stRSCAN0Config.stRSCANCh2.pfnRSCANAbortConfirmCallBack(11U); } } if ((RSCAN0TMSTS44 & RSCAN_TX_CPLT_AND) == RSCAN_TX_CPLT) { RSCAN0TMSTS44 = 0X0U; if (g_stRSCAN0Config.stRSCANCh2.pfnRSCANConfirmCallBack) { g_stRSCAN0Config.stRSCANCh2.pfnRSCANConfirmCallBack(12U, 0U); } } else if ((RSCAN0TMSTS44 & RSCAN_ABORT_CPLT_AND) == RSCAN_ABORT_CPLT) { RSCAN0TMSTS44 = 0X0U; if (g_stRSCAN0Config.stRSCANCh2.pfnRSCANAbortConfirmCallBack) { g_stRSCAN0Config.stRSCANCh2.pfnRSCANAbortConfirmCallBack(12U); } } if ((RSCAN0TMSTS45 & RSCAN_TX_CPLT_AND) == RSCAN_TX_CPLT) { RSCAN0TMSTS45 = 0X0U; if (g_stRSCAN0Config.stRSCANCh2.pfnRSCANConfirmCallBack) { g_stRSCAN0Config.stRSCANCh2.pfnRSCANConfirmCallBack(13U, 0U); } } else if ((RSCAN0TMSTS45 & RSCAN_ABORT_CPLT_AND) == RSCAN_ABORT_CPLT) { RSCAN0TMSTS45 = 0X0U; if (g_stRSCAN0Config.stRSCANCh2.pfnRSCANAbortConfirmCallBack) { g_stRSCAN0Config.stRSCANCh2.pfnRSCANAbortConfirmCallBack(13U); } } if ((RSCAN0TMSTS46 & RSCAN_TX_CPLT_AND) == RSCAN_TX_CPLT) { RSCAN0TMSTS46 = 0X0U; if (g_stRSCAN0Config.stRSCANCh2.pfnRSCANConfirmCallBack) { g_stRSCAN0Config.stRSCANCh2.pfnRSCANConfirmCallBack(14U, 0U); } } else if ((RSCAN0TMSTS46 & RSCAN_ABORT_CPLT_AND) == RSCAN_ABORT_CPLT) { RSCAN0TMSTS46 = 0X0U; if (g_stRSCAN0Config.stRSCANCh2.pfnRSCANAbortConfirmCallBack) { g_stRSCAN0Config.stRSCANCh2.pfnRSCANAbortConfirmCallBack(14U); } } if ((RSCAN0TMSTS47 & RSCAN_TX_CPLT_AND) == RSCAN_TX_CPLT) { RSCAN0TMSTS47 = 0X0U; if (g_stRSCAN0Config.stRSCANCh2.pfnRSCANConfirmCallBack) { g_stRSCAN0Config.stRSCANCh2.pfnRSCANConfirmCallBack(15U, 0U); } } else if ((RSCAN0TMSTS47 & RSCAN_ABORT_CPLT_AND) == RSCAN_ABORT_CPLT) { RSCAN0TMSTS47 = 0X0U; if (g_stRSCAN0Config.stRSCANCh2.pfnRSCANAbortConfirmCallBack) { g_stRSCAN0Config.stRSCANCh2.pfnRSCANAbortConfirmCallBack(15U); } } } /*********************************************************************/