Обновление

This commit is contained in:
cfif 2026-04-20 12:24:16 +03:00
parent 6ce97a410c
commit ecf5813de9
1 changed files with 101 additions and 57 deletions

View File

@ -40,6 +40,10 @@ static void CAN0_RxInterrupt_CallBack(uint8_t u8CanIndex, FLEXCAN_RxMsgType *pRx
CanSerialPortFrameIrqRxProcessingNO_DMA(CAN_PORTS.Can0_IO.env, pRxCfg); CanSerialPortFrameIrqRxProcessingNO_DMA(CAN_PORTS.Can0_IO.env, pRxCfg);
} }
static void CAN0_RxFifoInterrupt_CallBack(uint8_t u8CanIndex, FLEXCAN_RxMsgType *pRxCfg) {
CanSerialPortFrameIrqRxProcessingNO_DMA(CAN_PORTS.Can0_IO.env, pRxCfg);
}
//static void DMA_ErrorCallback(void) { //static void DMA_ErrorCallback(void) {
@ -82,61 +86,99 @@ static void vCanPort_InitCAN0RxTxPin() {
GPIO_InitPins(GPIO_C, &tGpioInitStruct); GPIO_InitPins(GPIO_C, &tGpioInitStruct);
} }
#define countIdCanSoftFilterCan0 31 #define countIdCanHardSoftFilterCan0 31
const FilterTo_FLEXCAN_RxMbFilterType IdCanSoftFilterCan0[countIdCanSoftFilterCan0] = { const FilterTo_FLEXCAN_RxMbFilterType IdCanHardSoftFilterCan0[countIdCanHardSoftFilterCan0] = {
{FLEXCAN_ID_STD, EMS_Veh_CANID, 0}, {FLEXCAN_ID_STD, EMS_Veh_CANID, 0x7FF, 0},
{FLEXCAN_ID_STD, BCM_Powertrain_CANID, 0}, {FLEXCAN_ID_STD, BCM_Powertrain_CANID, 0x7FF, 0},
{FLEXCAN_ID_STD, EMS_Veh_02_CANID, 0}, {FLEXCAN_ID_STD, EMS_Veh_02_CANID, 0x7FF, 0},
{FLEXCAN_ID_STD, BCM_EEM_CANID, 0}, {FLEXCAN_ID_STD, BCM_EEM_CANID, 0x7FF, 0},
{FLEXCAN_ID_STD, DMFR_Msg1_CANID, 0}, {FLEXCAN_ID_STD, DMFR_Msg1_CANID, 0x7FF, 0},
{FLEXCAN_ID_STD, DMFL_Msg1_CANID, 0}, {FLEXCAN_ID_STD, DMFL_Msg1_CANID, 0x7FF, 0},
{FLEXCAN_ID_STD, TM_Stat_CANID, 0}, {FLEXCAN_ID_STD, TM_Stat_CANID, 0x7FF, 0},
{FLEXCAN_ID_STD, TM_CP_CANID, 0}, {FLEXCAN_ID_STD, TM_CP_CANID, 0x7FF, 0},
{FLEXCAN_ID_STD, HVC_CCU_Status_Msg_CANID, 0}, {FLEXCAN_ID_STD, HVC_CCU_Status_Msg_CANID, 0x7FF, 0},
{FLEXCAN_ID_STD, BCM_VEH_STATE_CANID, 0}, {FLEXCAN_ID_STD, BCM_VEH_STATE_CANID, 0x7FF, 0},
{FLEXCAN_ID_STD, EMS_HVC_Req_Msg_CANID, 0}, {FLEXCAN_ID_STD, EMS_HVC_Req_Msg_CANID, 0x7FF, 0},
{FLEXCAN_ID_STD, HVC_Err_Status_Msg_CANID, 0}, {FLEXCAN_ID_STD, HVC_Err_Status_Msg_CANID, 0x7FF, 0},
{FLEXCAN_ID_STD, BCM_CLIMATIC_DATA_CANID, 0}, {FLEXCAN_ID_STD, BCM_CLIMATIC_DATA_CANID, 0x7FF, 0},
{FLEXCAN_ID_STD, VCU_CCU_Req_CANID, 0}, {FLEXCAN_ID_STD, VCU_CCU_Req_CANID, 0x7FF, 0},
{FLEXCAN_ID_STD, ESC_08_CANID, 0}, {FLEXCAN_ID_STD, ESC_08_CANID, 0x7FF, 0},
{FLEXCAN_ID_STD, SMFL_status_CANID, 0}, {FLEXCAN_ID_STD, SMFL_status_CANID, 0x7FF, 0},
{FLEXCAN_ID_STD, SMFR_status_CANID, 0}, {FLEXCAN_ID_STD, SMFR_status_CANID, 0x7FF, 0},
{FLEXCAN_ID_STD, SMRL_status_CANID, 0}, {FLEXCAN_ID_STD, SMRL_status_CANID, 0x7FF, 0},
{FLEXCAN_ID_STD, SMRR_status_CANID, 0}, {FLEXCAN_ID_STD, SMRR_status_CANID, 0x7FF, 0},
{FLEXCAN_ID_STD, SDM_Cmd_CANID, 0}, {FLEXCAN_ID_STD, SDM_Cmd_CANID, 0x7FF, 0},
{FLEXCAN_ID_STD, VEH_VIN_CANID, 0}, {FLEXCAN_ID_STD, VEH_VIN_CANID, 0x7FF, 0},
{FLEXCAN_ID_STD, OCUFL_MSG_CANID, 0}, {FLEXCAN_ID_STD, OCUFL_MSG_CANID, 0x7FF, 0},
{FLEXCAN_ID_STD, OCUFR_MSG_CANID, 0}, {FLEXCAN_ID_STD, OCUFR_MSG_CANID, 0x7FF, 0},
{FLEXCAN_ID_STD, OCURL_MSG_CANID, 0}, {FLEXCAN_ID_STD, OCURL_MSG_CANID, 0x7FF, 0},
{FLEXCAN_ID_STD, OCURR_MSG_CANID, 0}, {FLEXCAN_ID_STD, OCURR_MSG_CANID, 0x7FF, 0},
{FLEXCAN_ID_STD, DW_STATE_CANID, 0}, {FLEXCAN_ID_STD, DW_STATE_CANID, 0x7FF, 0},
{FLEXCAN_ID_STD, FIU_CCU1_CANID, 0}, {FLEXCAN_ID_STD, FIU_CCU1_CANID, 0x7FF, 0},
{FLEXCAN_ID_STD, FIU_CCU2_CANID, 0}, {FLEXCAN_ID_STD, FIU_CCU2_CANID, 0x7FF, 0},
{FLEXCAN_ID_STD, FIU_CCU3_CANID, 0}, {FLEXCAN_ID_STD, FIU_CCU3_CANID, 0x7FF, 0},
{FLEXCAN_ID_STD, Diag_To_CCU_CANID, PROTOCOL_CAN_UDS}, {FLEXCAN_ID_STD, Diag_To_CCU_CANID, 0x7FF, PROTOCOL_CAN_UDS},
{FLEXCAN_ID_STD, Diag_Functional_CANID, PROTOCOL_CAN_UDS}, {FLEXCAN_ID_STD, Diag_Functional_CANID, 0x7FF, PROTOCOL_CAN_UDS}
}; };
/*
#define countIdCanFilterFifoCan0 7 #define countIdCanFilterFifoCan0 7
const FLEXCAN_RxMbFilterType IdCanFilterFifoCan0[countIdCanFilterFifoCan0] = { const FLEXCAN_RxMbFilterType IdCanFilterFifoCan0[countIdCanFilterFifoCan0] = {
{FLEXCAN_ID_STD, 0x100, 0xFFF}, {FLEXCAN_ID_STD, 0x100, 0x7FF},
{FLEXCAN_ID_STD, 0x200, 0xFFF}, {FLEXCAN_ID_STD, 0x200, 0x7FF},
{FLEXCAN_ID_STD, 0x300, 0xFFF}, {FLEXCAN_ID_STD, 0x300, 0x7FF},
{FLEXCAN_ID_STD, 0x400, 0xFFF}, {FLEXCAN_ID_STD, 0x400, 0x7FF},
{FLEXCAN_ID_STD, 0x500, 0xFFF}, {FLEXCAN_ID_STD, 0x500, 0x7FF},
{FLEXCAN_ID_STD, Diag_To_CCU_CANID, 0xFFF}, {FLEXCAN_ID_STD, Diag_To_CCU_CANID, 0x7FF},
{FLEXCAN_ID_STD, Diag_Functional_CANID, 0xFFF} {FLEXCAN_ID_STD, Diag_Functional_CANID, 0x7FF}
}; };
*/
#define countIdCanSoftFilterCan1 1 /*
const FilterTo_FLEXCAN_RxMbFilterType IdCanSoftFilterCan1[countIdCanSoftFilterCan1] = { #define countIdCanFilterFifoCan0 31
const FLEXCAN_RxMbFilterType IdCanFilterFifoCan0[countIdCanFilterFifoCan0] = {
{FLEXCAN_ID_STD, EMS_Veh_CANID, 0x7FF},
{FLEXCAN_ID_STD, BCM_Powertrain_CANID, 0x7FF},
{FLEXCAN_ID_STD, EMS_Veh_02_CANID, 0x7FF},
{FLEXCAN_ID_STD, BCM_EEM_CANID, 0x7FF},
{FLEXCAN_ID_STD, DMFR_Msg1_CANID, 0x7FF},
{FLEXCAN_ID_STD, DMFL_Msg1_CANID, 0x7FF},
{FLEXCAN_ID_STD, TM_Stat_CANID, 0x7FF},
{FLEXCAN_ID_STD, TM_CP_CANID, 0x7FF},
{FLEXCAN_ID_STD, HVC_CCU_Status_Msg_CANID, 0x7FF},
{FLEXCAN_ID_STD, BCM_VEH_STATE_CANID, 0x7FF},
{FLEXCAN_ID_STD, EMS_HVC_Req_Msg_CANID, 0x7FF},
{FLEXCAN_ID_STD, HVC_Err_Status_Msg_CANID, 0x7FF},
{FLEXCAN_ID_STD, BCM_CLIMATIC_DATA_CANID, 0x7FF},
{FLEXCAN_ID_STD, VCU_CCU_Req_CANID, 0x7FF},
{FLEXCAN_ID_STD, ESC_08_CANID, 0x7FF},
{FLEXCAN_ID_STD, SMFL_status_CANID, 0x7FF},
{FLEXCAN_ID_STD, SMFR_status_CANID, 0x7FF},
{FLEXCAN_ID_STD, SMRL_status_CANID, 0x7FF},
{FLEXCAN_ID_STD, SMRR_status_CANID, 0x7FF},
{FLEXCAN_ID_STD, SDM_Cmd_CANID, 0x7FF},
{FLEXCAN_ID_STD, VEH_VIN_CANID, 0x7FF},
{FLEXCAN_ID_STD, OCUFL_MSG_CANID, 0x7FF},
{FLEXCAN_ID_STD, OCUFR_MSG_CANID, 0x7FF},
{FLEXCAN_ID_STD, OCURL_MSG_CANID, 0x7FF},
{FLEXCAN_ID_STD, OCURR_MSG_CANID, 0x7FF},
{FLEXCAN_ID_STD, DW_STATE_CANID, 0x7FF},
{FLEXCAN_ID_STD, FIU_CCU1_CANID, 0x7FF},
{FLEXCAN_ID_STD, FIU_CCU2_CANID, 0x7FF},
{FLEXCAN_ID_STD, FIU_CCU3_CANID, 0x7FF},
{FLEXCAN_ID_STD, Diag_To_CCU_CANID, 0x7FF},
{FLEXCAN_ID_STD, Diag_Functional_CANID, 0x7FF}
};
*/
#define countIdCanHardSoftFilterCan1 1
const FilterTo_FLEXCAN_RxMbFilterType IdCanHardSoftFilterCan1[countIdCanHardSoftFilterCan1] = {
{FLEXCAN_ID_STD, XCP_CCU_RX_CANID, PROTOCOL_CAN_XCP} {FLEXCAN_ID_STD, XCP_CCU_RX_CANID, PROTOCOL_CAN_XCP}
}; };
/*
#define countIdCanFilterFifoCan1 1 #define countIdCanFilterFifoCan1 1
const FLEXCAN_RxMbFilterType IdCanFilterFifoCan1[countIdCanFilterFifoCan1] = { const FLEXCAN_RxMbFilterType IdCanFilterFifoCan1[countIdCanFilterFifoCan1] = {
{FLEXCAN_ID_STD, 0, 0} {FLEXCAN_ID_STD, 0, 0}
}; };
*/
/* /*
uint32_t data[] = { uint32_t data[] = {
@ -198,11 +240,13 @@ static bool vCanPort_InitCan0() {
(uint8_t *) &g_aRxDataBufCan0[0], (uint8_t *) &g_aRxDataBufCan0[0],
size_aRxDataBuf, size_aRxDataBuf,
IdCanSoftFilterCan0, IdCanHardSoftFilterCan0,
countIdCanSoftFilterCan0, countIdCanHardSoftFilterCan0,
IdCanFilterFifoCan0, // IdCanSoftFilterCan0,
countIdCanFilterFifoCan0, // countIdCanSoftFilterCan0,
// IdCanFilterFifoCan0,
// countIdCanFilterFifoCan0,
DMA0_IRQn, DMA0_IRQn,
0xFF, 0xFF,
@ -212,8 +256,8 @@ static bool vCanPort_InitCan0() {
FLEXCAN_ID_STD, FLEXCAN_ID_STD,
0x55, 0x55,
CAN0_ErrorInterrupt_CallBack, CAN0_ErrorInterrupt_CallBack,
NULL,
CAN0_RxInterrupt_CallBack, CAN0_RxInterrupt_CallBack,
CAN0_RxFifoInterrupt_CallBack,
NULL, NULL,
DMA_TransferCompleteCallbackCan0, DMA_TransferCompleteCallbackCan0,
@ -277,11 +321,11 @@ static bool vCanPort_InitCan1() {
(uint8_t *) &g_aRxDataBufCan1[0], (uint8_t *) &g_aRxDataBufCan1[0],
size_aRxDataBuf, size_aRxDataBuf,
IdCanSoftFilterCan1, IdCanHardSoftFilterCan1,
countIdCanSoftFilterCan1, countIdCanHardSoftFilterCan1,
IdCanFilterFifoCan1, // IdCanFilterFifoCan1,
countIdCanFilterFifoCan1, // countIdCanFilterFifoCan1,
DMA1_IRQn, DMA1_IRQn,
@ -324,7 +368,7 @@ void CanPorts_Init(tLoggerInterface *logger) {
} }
CAN_PORTS.Can1_IO = CanPortFrame_GetIo(&CAN_PORTS.Can1); CAN_PORTS.Can1_IO = CanPortFrame_GetIo(&CAN_PORTS.Can1);
*/ */
} }
void CAN0_IRQHandler(void) { void CAN0_IRQHandler(void) {
FLEXCAN_IRQHandler(0U); FLEXCAN_IRQHandler(0U);