Обновление после командировки 29.06.2026
This commit is contained in:
parent
9351f0fd9f
commit
21f5dc1952
129
CanPorts.c
129
CanPorts.c
|
|
@ -13,37 +13,8 @@
|
|||
|
||||
tCanPorts CAN_PORTS;
|
||||
|
||||
static void CAN0_ErrorInterrupt_CallBack(uint8_t u8CanIndex, FLEXCAN_ErrorInfoType *pErrorInfo) {
|
||||
|
||||
if (pErrorInfo->u32ErrorValue & FLEXCAN_ESR1_BOFFINT_MASK) {
|
||||
FLEXCAN_Stop(u8CanIndex);
|
||||
vCanPort_InitCan0();
|
||||
}
|
||||
|
||||
FLEXCAN_ClrErrorInfo(u8CanIndex, pErrorInfo);
|
||||
PROCESS_UNUSED_VAR(u8CanIndex);
|
||||
PROCESS_UNUSED_VAR(pErrorInfo);
|
||||
}
|
||||
|
||||
static void CAN0_TxInterruptCallBackType(uint8_t u8CanIndex, uint8_t u8TxHandler) {
|
||||
osMessageQueuePut(CAN_PORTS.Can0.txDataQueueCan[u8TxHandler], &u8TxHandler, 0x0, 0U);
|
||||
}
|
||||
|
||||
static void CAN1_ErrorInterrupt_CallBack(uint8_t u8CanIndex, FLEXCAN_ErrorInfoType *pErrorInfo) {
|
||||
|
||||
if (pErrorInfo->u32ErrorValue & FLEXCAN_ESR1_BOFFINT_MASK) {
|
||||
FLEXCAN_Stop(u8CanIndex);
|
||||
vCanPort_InitCan1();
|
||||
}
|
||||
|
||||
FLEXCAN_ClrErrorInfo(u8CanIndex, pErrorInfo);
|
||||
PROCESS_UNUSED_VAR(u8CanIndex);
|
||||
PROCESS_UNUSED_VAR(pErrorInfo);
|
||||
}
|
||||
|
||||
static void CAN1_TxInterruptCallBackType(uint8_t u8CanIndex, uint8_t u8TxHandler) {
|
||||
osMessageQueuePut(CAN_PORTS.Can1.txDataQueueCan[u8TxHandler], &u8TxHandler, 0x0, 0U);
|
||||
}
|
||||
|
||||
#if (CAN_DMA_EN == 1)
|
||||
|
||||
|
|
@ -59,11 +30,25 @@ static void DMA_TransferCompleteCallbackCan0(void) {
|
|||
CanSerialPortFrameIrqRxProcessing(CAN_PORTS.Can0_IO.env, (uint32_t *) &g_aRxDataBufCan0[0]);
|
||||
}
|
||||
|
||||
|
||||
static void DMA_TransferCompleteCallbackCan1(void) {
|
||||
CanSerialPortFrameIrqRxProcessing(CAN_PORTS.Can1_IO.env, (uint32_t *) &g_aRxDataBufCan1[0]);
|
||||
}
|
||||
#else
|
||||
|
||||
|
||||
static void CAN0_ErrorInterrupt_CallBack(uint8_t u8CanIndex, FLEXCAN_ErrorInfoType *pErrorInfo) {
|
||||
|
||||
if (pErrorInfo->u32ErrorValue & FLEXCAN_ESR1_BOFFINT_MASK) {
|
||||
FLEXCAN_Stop(u8CanIndex);
|
||||
vCanPort_InitCan0();
|
||||
}
|
||||
|
||||
FLEXCAN_ClrErrorInfo(u8CanIndex, pErrorInfo);
|
||||
PROCESS_UNUSED_VAR(u8CanIndex);
|
||||
PROCESS_UNUSED_VAR(pErrorInfo);
|
||||
}
|
||||
|
||||
static void CAN0_RxInterrupt_CallBack(uint8_t u8CanIndex, FLEXCAN_RxMsgType *pRxCfg) {
|
||||
CanSerialPortFrameIrqRxProcessingNO_DMA(CAN_PORTS.Can0_IO.env, pRxCfg);
|
||||
}
|
||||
|
|
@ -74,6 +59,18 @@ static void CAN0_RxFifoInterrupt_CallBack(uint8_t u8CanIndex, FLEXCAN_RxMsgType
|
|||
|
||||
|
||||
|
||||
static void CAN1_ErrorInterrupt_CallBack(uint8_t u8CanIndex, FLEXCAN_ErrorInfoType *pErrorInfo) {
|
||||
|
||||
if (pErrorInfo->u32ErrorValue & FLEXCAN_ESR1_BOFFINT_MASK) {
|
||||
FLEXCAN_Stop(u8CanIndex);
|
||||
vCanPort_InitCan1();
|
||||
}
|
||||
|
||||
FLEXCAN_ClrErrorInfo(u8CanIndex, pErrorInfo);
|
||||
PROCESS_UNUSED_VAR(u8CanIndex);
|
||||
PROCESS_UNUSED_VAR(pErrorInfo);
|
||||
}
|
||||
|
||||
|
||||
static void CAN1_RxInterrupt_CallBack(uint8_t u8CanIndex, FLEXCAN_RxMsgType *pRxCfg) {
|
||||
CanSerialPortFrameIrqRxProcessingNO_DMA(CAN_PORTS.Can1_IO.env, pRxCfg);
|
||||
|
|
@ -125,8 +122,8 @@ static void vCanPort_InitCAN0RxTxPin() {
|
|||
tGpioInitStruct.ePinLevel = GPIO_HIGH;
|
||||
GPIO_InitPins(GPIO_C, &tGpioInitStruct);
|
||||
}
|
||||
|
||||
#define countIdCanHardSoftFilterCan0 (31 - 4)
|
||||
/*
|
||||
#define countIdCanHardSoftFilterCan0 31
|
||||
const FilterTo_FLEXCAN_RxMbFilterType IdCanHardSoftFilterCan0[countIdCanHardSoftFilterCan0] = {
|
||||
{FLEXCAN_ID_STD, Diag_To_CCU_CANID, 0x7FF, PROTOCOL_CAN_UDS},
|
||||
{FLEXCAN_ID_STD, Diag_Functional_CANID, 0x7FF, PROTOCOL_CAN_UDS},
|
||||
|
|
@ -151,27 +148,62 @@ const FilterTo_FLEXCAN_RxMbFilterType IdCanHardSoftFilterCan0[countIdCanHardSoft
|
|||
{FLEXCAN_ID_STD, SMRR_status_CANID, 0x7FF, PROTOCOL_CAN_RAW},
|
||||
{FLEXCAN_ID_STD, SDM_Cmd_CANID, 0x7FF, PROTOCOL_CAN_RAW},
|
||||
{FLEXCAN_ID_STD, VEH_VIN_CANID, 0x7FF, PROTOCOL_CAN_RAW},
|
||||
{FLEXCAN_ID_STD, DW_STATE_CANID, 0x7FF, PROTOCOL_CAN_RAW},
|
||||
{FLEXCAN_ID_STD, OCUFL_MSG_CANID, 0x7FF, PROTOCOL_CAN_RAW},
|
||||
{FLEXCAN_ID_STD, OCUFR_MSG_CANID, 0x7FF, PROTOCOL_CAN_RAW},
|
||||
{FLEXCAN_ID_STD, OCURL_MSG_CANID, 0x7FF, PROTOCOL_CAN_RAW},
|
||||
{FLEXCAN_ID_STD, OCURR_MSG_CANID, 0x7FF, PROTOCOL_CAN_RAW},
|
||||
{FLEXCAN_ID_STD, DW_STATE_CANID, 0x7FF, PROTOCOL_CAN_RAW},
|
||||
{FLEXCAN_ID_STD, FIU_CCU1_CANID, 0x7FF, PROTOCOL_CAN_RAW},
|
||||
{FLEXCAN_ID_STD, FIU_CCU2_CANID, 0x7FF, PROTOCOL_CAN_RAW},
|
||||
{FLEXCAN_ID_STD, FIU_CCU3_CANID, 0x7FF, PROTOCOL_CAN_RAW}
|
||||
};
|
||||
*/
|
||||
|
||||
|
||||
#define countIdCanHardSoftFilterCan0 13
|
||||
const FilterTo_FLEXCAN_RxMbFilterType IdCanHardSoftFilterCan0[countIdCanHardSoftFilterCan0] = {
|
||||
{FLEXCAN_ID_STD, Diag_To_CCU_CANID, 0x7FF, PROTOCOL_CAN_UDS},
|
||||
{FLEXCAN_ID_STD, Diag_Functional_CANID, 0x7FF, PROTOCOL_CAN_UDS},
|
||||
{FLEXCAN_ID_STD, EMS_Veh_CANID, 0x7FF, PROTOCOL_CAN_RAW},
|
||||
{FLEXCAN_ID_STD, BCM_Powertrain_CANID, 0x7FF, PROTOCOL_CAN_RAW},
|
||||
// {FLEXCAN_ID_STD, EMS_Veh_02_CANID, 0x7FF, PROTOCOL_CAN_RAW},
|
||||
// {FLEXCAN_ID_STD, BCM_EEM_CANID, 0x7FF, PROTOCOL_CAN_RAW},
|
||||
// {FLEXCAN_ID_STD, DMFR_Msg1_CANID, 0x7FF, PROTOCOL_CAN_RAW},
|
||||
// {FLEXCAN_ID_STD, DMFL_Msg1_CANID, 0x7FF, PROTOCOL_CAN_RAW},
|
||||
// {FLEXCAN_ID_STD, TM_Stat_CANID, 0x7FF, PROTOCOL_CAN_RAW},
|
||||
{FLEXCAN_ID_STD, TM_CP_CANID, 0x7FF, PROTOCOL_CAN_RAW},
|
||||
// {FLEXCAN_ID_STD, HVC_CCU_Status_Msg_CANID, 0x7FF, PROTOCOL_CAN_RAW},
|
||||
{FLEXCAN_ID_STD, BCM_VEH_STATE_CANID, 0x7FF, PROTOCOL_CAN_RAW},
|
||||
{FLEXCAN_ID_STD, EMS_HVC_Req_Msg_CANID, 0x7FF, PROTOCOL_CAN_RAW},
|
||||
{FLEXCAN_ID_STD, HVC_Err_Status_Msg_CANID, 0x7FF, PROTOCOL_CAN_RAW},
|
||||
{FLEXCAN_ID_STD, BCM_CLIMATIC_DATA_CANID, 0x7FF, PROTOCOL_CAN_RAW},
|
||||
// {FLEXCAN_ID_STD, VCU_CCU_Req_CANID, 0x7FF, PROTOCOL_CAN_RAW},
|
||||
// {FLEXCAN_ID_STD, ESC_08_CANID, 0x7FF, PROTOCOL_CAN_RAW},
|
||||
// {FLEXCAN_ID_STD, SMFL_status_CANID, 0x7FF, PROTOCOL_CAN_RAW},
|
||||
// {FLEXCAN_ID_STD, SMFR_status_CANID, 0x7FF, PROTOCOL_CAN_RAW},
|
||||
// {FLEXCAN_ID_STD, SMRL_status_CANID, 0x7FF, PROTOCOL_CAN_RAW},
|
||||
// {FLEXCAN_ID_STD, SMRR_status_CANID, 0x7FF, PROTOCOL_CAN_RAW},
|
||||
// {FLEXCAN_ID_STD, SDM_Cmd_CANID, 0x7FF, PROTOCOL_CAN_RAW},
|
||||
// {FLEXCAN_ID_STD, VEH_VIN_CANID, 0x7FF, PROTOCOL_CAN_RAW},
|
||||
// {FLEXCAN_ID_STD, OCUFL_MSG_CANID, 0x7FF, PROTOCOL_CAN_RAW},
|
||||
// {FLEXCAN_ID_STD, OCUFR_MSG_CANID, 0x7FF, PROTOCOL_CAN_RAW},
|
||||
// {FLEXCAN_ID_STD, OCURL_MSG_CANID, 0x7FF, PROTOCOL_CAN_RAW},
|
||||
// {FLEXCAN_ID_STD, OCURR_MSG_CANID, 0x7FF, PROTOCOL_CAN_RAW},
|
||||
// {FLEXCAN_ID_STD, DW_STATE_CANID, 0x7FF, PROTOCOL_CAN_RAW},
|
||||
{FLEXCAN_ID_STD, FIU_CCU1_CANID, 0x7FF, PROTOCOL_CAN_RAW},
|
||||
{FLEXCAN_ID_STD, FIU_CCU2_CANID, 0x7FF, PROTOCOL_CAN_RAW},
|
||||
{FLEXCAN_ID_STD, FIU_CCU3_CANID, 0x7FF, PROTOCOL_CAN_RAW},
|
||||
|
||||
|
||||
|
||||
// {FLEXCAN_ID_STD, OCUFL_MSG_CANID, 0x7FF, PROTOCOL_CAN_RAW},
|
||||
// {FLEXCAN_ID_STD, OCUFR_MSG_CANID, 0x7FF, PROTOCOL_CAN_RAW},
|
||||
// {FLEXCAN_ID_STD, OCURL_MSG_CANID, 0x7FF, PROTOCOL_CAN_RAW},
|
||||
// {FLEXCAN_ID_STD, OCURR_MSG_CANID, 0x7FF, PROTOCOL_CAN_RAW}
|
||||
|
||||
|
||||
{FLEXCAN_ID_STD, ESC_04_CANID, 0x7FF, PROTOCOL_CAN_RAW}
|
||||
};
|
||||
|
||||
#if (CAN_DMA_EN == 1)
|
||||
#define countIdCanFilterFifoCan0 1
|
||||
const FLEXCAN_RxMbFilterType IdCanFilterFifoCan0[countIdCanFilterFifoCan0] = {
|
||||
{FLEXCAN_ID_STD, 0, 0}
|
||||
};
|
||||
|
||||
/*
|
||||
#if (CAN_DMA_EN == 1)
|
||||
#define countIdCanFilterFifoCan0 7
|
||||
const FLEXCAN_RxMbFilterType IdCanFilterFifoCan0[countIdCanFilterFifoCan0] = {
|
||||
{FLEXCAN_ID_STD, 0x100, 0x7FF},
|
||||
{FLEXCAN_ID_STD, 0x200, 0x7FF},
|
||||
|
|
@ -181,9 +213,8 @@ const FLEXCAN_RxMbFilterType IdCanFilterFifoCan0[countIdCanFilterFifoCan0] = {
|
|||
{FLEXCAN_ID_STD, Diag_To_CCU_CANID, 0x7FF},
|
||||
{FLEXCAN_ID_STD, Diag_Functional_CANID, 0x7FF}
|
||||
};
|
||||
*/
|
||||
#endif
|
||||
|
||||
*/
|
||||
|
||||
#define countIdCanHardSoftFilterCan1 2
|
||||
const FilterTo_FLEXCAN_RxMbFilterType IdCanHardSoftFilterCan1[countIdCanHardSoftFilterCan1] = {
|
||||
|
|
@ -199,9 +230,7 @@ const FLEXCAN_RxMbFilterType IdCanFilterFifoCan1[countIdCanFilterFifoCan1] = {
|
|||
};
|
||||
#endif
|
||||
|
||||
|
||||
bool vCanPort_InitCan0() {
|
||||
|
||||
vCanPort_InitCAN0RxTxPin();
|
||||
|
||||
#if (CAN_DMA_EN == 1)
|
||||
|
|
@ -233,10 +262,10 @@ bool vCanPort_InitCan0() {
|
|||
FLEXCAN_BAUD_500K,
|
||||
FLEXCAN_ID_STD,
|
||||
0x55,
|
||||
CAN0_ErrorInterrupt_CallBack,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,//CAN0_TxInterruptCallBackType,
|
||||
|
||||
DMA_TransferCompleteCallbackCan0,
|
||||
NULL
|
||||
|
|
@ -338,10 +367,10 @@ bool vCanPort_InitCan1() {
|
|||
FLEXCAN_BAUD_500K,
|
||||
FLEXCAN_ID_STD,
|
||||
0x55,
|
||||
CAN1_ErrorInterrupt_CallBack,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,//CAN1_TxInterruptCallBackType,
|
||||
NULL,
|
||||
NULL,
|
||||
|
||||
DMA_TransferCompleteCallbackCan1,
|
||||
NULL
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@
|
|||
#include "CanSerialPortFrame.h"
|
||||
#include "LoggerInterface.h"
|
||||
|
||||
#define CAN_DMA_EN 1
|
||||
#define CAN_DMA_EN 0
|
||||
|
||||
#define PROTOCOL_CAN_RAW 0
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue