Обновление после командировки 29.06.2026

This commit is contained in:
cfif 2026-06-29 13:13:45 +03:00
parent 9351f0fd9f
commit 21f5dc1952
2 changed files with 80 additions and 51 deletions

View File

@ -13,37 +13,8 @@
tCanPorts CAN_PORTS; 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) #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]); CanSerialPortFrameIrqRxProcessing(CAN_PORTS.Can0_IO.env, (uint32_t *) &g_aRxDataBufCan0[0]);
} }
static void DMA_TransferCompleteCallbackCan1(void) { static void DMA_TransferCompleteCallbackCan1(void) {
CanSerialPortFrameIrqRxProcessing(CAN_PORTS.Can1_IO.env, (uint32_t *) &g_aRxDataBufCan1[0]); CanSerialPortFrameIrqRxProcessing(CAN_PORTS.Can1_IO.env, (uint32_t *) &g_aRxDataBufCan1[0]);
} }
#else #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) { static void CAN0_RxInterrupt_CallBack(uint8_t u8CanIndex, FLEXCAN_RxMsgType *pRxCfg) {
CanSerialPortFrameIrqRxProcessingNO_DMA(CAN_PORTS.Can0_IO.env, 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) { static void CAN1_RxInterrupt_CallBack(uint8_t u8CanIndex, FLEXCAN_RxMsgType *pRxCfg) {
CanSerialPortFrameIrqRxProcessingNO_DMA(CAN_PORTS.Can1_IO.env, pRxCfg); CanSerialPortFrameIrqRxProcessingNO_DMA(CAN_PORTS.Can1_IO.env, pRxCfg);
@ -125,8 +122,8 @@ static void vCanPort_InitCAN0RxTxPin() {
tGpioInitStruct.ePinLevel = GPIO_HIGH; tGpioInitStruct.ePinLevel = GPIO_HIGH;
GPIO_InitPins(GPIO_C, &tGpioInitStruct); GPIO_InitPins(GPIO_C, &tGpioInitStruct);
} }
/*
#define countIdCanHardSoftFilterCan0 (31 - 4) #define countIdCanHardSoftFilterCan0 31
const FilterTo_FLEXCAN_RxMbFilterType IdCanHardSoftFilterCan0[countIdCanHardSoftFilterCan0] = { const FilterTo_FLEXCAN_RxMbFilterType IdCanHardSoftFilterCan0[countIdCanHardSoftFilterCan0] = {
{FLEXCAN_ID_STD, Diag_To_CCU_CANID, 0x7FF, PROTOCOL_CAN_UDS}, {FLEXCAN_ID_STD, Diag_To_CCU_CANID, 0x7FF, PROTOCOL_CAN_UDS},
{FLEXCAN_ID_STD, Diag_Functional_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, SMRR_status_CANID, 0x7FF, PROTOCOL_CAN_RAW},
{FLEXCAN_ID_STD, SDM_Cmd_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, 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, DW_STATE_CANID, 0x7FF, PROTOCOL_CAN_RAW},
{FLEXCAN_ID_STD, FIU_CCU1_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_CCU2_CANID, 0x7FF, PROTOCOL_CAN_RAW},
{FLEXCAN_ID_STD, FIU_CCU3_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, OCUFL_MSG_CANID, 0x7FF, PROTOCOL_CAN_RAW},
// {FLEXCAN_ID_STD, OCUFR_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, OCURL_MSG_CANID, 0x7FF, PROTOCOL_CAN_RAW},
// {FLEXCAN_ID_STD, OCURR_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, ESC_04_CANID, 0x7FF, PROTOCOL_CAN_RAW}
}; };
#if (CAN_DMA_EN == 1)
#define countIdCanFilterFifoCan0 1 #define countIdCanFilterFifoCan0 1
const FLEXCAN_RxMbFilterType IdCanFilterFifoCan0[countIdCanFilterFifoCan0] = { const FLEXCAN_RxMbFilterType IdCanFilterFifoCan0[countIdCanFilterFifoCan0] = {
{FLEXCAN_ID_STD, 0, 0} {FLEXCAN_ID_STD, 0, 0}
}; };
/* /*
#if (CAN_DMA_EN == 1)
#define countIdCanFilterFifoCan0 7
const FLEXCAN_RxMbFilterType IdCanFilterFifoCan0[countIdCanFilterFifoCan0] = { const FLEXCAN_RxMbFilterType IdCanFilterFifoCan0[countIdCanFilterFifoCan0] = {
{FLEXCAN_ID_STD, 0x100, 0x7FF}, {FLEXCAN_ID_STD, 0x100, 0x7FF},
{FLEXCAN_ID_STD, 0x200, 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_To_CCU_CANID, 0x7FF},
{FLEXCAN_ID_STD, Diag_Functional_CANID, 0x7FF} {FLEXCAN_ID_STD, Diag_Functional_CANID, 0x7FF}
}; };
*/
#endif #endif
*/
#define countIdCanHardSoftFilterCan1 2 #define countIdCanHardSoftFilterCan1 2
const FilterTo_FLEXCAN_RxMbFilterType IdCanHardSoftFilterCan1[countIdCanHardSoftFilterCan1] = { const FilterTo_FLEXCAN_RxMbFilterType IdCanHardSoftFilterCan1[countIdCanHardSoftFilterCan1] = {
@ -199,9 +230,7 @@ const FLEXCAN_RxMbFilterType IdCanFilterFifoCan1[countIdCanFilterFifoCan1] = {
}; };
#endif #endif
bool vCanPort_InitCan0() { bool vCanPort_InitCan0() {
vCanPort_InitCAN0RxTxPin(); vCanPort_InitCAN0RxTxPin();
#if (CAN_DMA_EN == 1) #if (CAN_DMA_EN == 1)
@ -233,10 +262,10 @@ bool vCanPort_InitCan0() {
FLEXCAN_BAUD_500K, FLEXCAN_BAUD_500K,
FLEXCAN_ID_STD, FLEXCAN_ID_STD,
0x55, 0x55,
CAN0_ErrorInterrupt_CallBack,
NULL, NULL,
NULL, NULL,
NULL,//CAN0_TxInterruptCallBackType, NULL,
NULL,
DMA_TransferCompleteCallbackCan0, DMA_TransferCompleteCallbackCan0,
NULL NULL
@ -338,10 +367,10 @@ bool vCanPort_InitCan1() {
FLEXCAN_BAUD_500K, FLEXCAN_BAUD_500K,
FLEXCAN_ID_STD, FLEXCAN_ID_STD,
0x55, 0x55,
CAN1_ErrorInterrupt_CallBack,
NULL, NULL,
NULL, NULL,
NULL,//CAN1_TxInterruptCallBackType, NULL,
NULL,
DMA_TransferCompleteCallbackCan1, DMA_TransferCompleteCallbackCan1,
NULL NULL

View File

@ -8,7 +8,7 @@
#include "CanSerialPortFrame.h" #include "CanSerialPortFrame.h"
#include "LoggerInterface.h" #include "LoggerInterface.h"
#define CAN_DMA_EN 1 #define CAN_DMA_EN 0
#define PROTOCOL_CAN_RAW 0 #define PROTOCOL_CAN_RAW 0