Обновление
This commit is contained in:
parent
e9880f8cee
commit
c117fc598b
180
CanPorts.c
180
CanPorts.c
|
|
@ -13,6 +13,8 @@
|
|||
|
||||
tCanPorts CAN_PORTS;
|
||||
|
||||
#if (CAN_DMA_EN == 1)
|
||||
|
||||
typedef struct {
|
||||
uint32_t u32CanRAM[4];
|
||||
} Can_RamType;
|
||||
|
|
@ -28,7 +30,7 @@ static void DMA_TransferCompleteCallbackCan0(void) {
|
|||
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) {
|
||||
FLEXCAN_ClrErrorInfo(u8CanIndex, pErrorInfo);
|
||||
|
|
@ -45,6 +47,22 @@ static void CAN0_RxFifoInterrupt_CallBack(uint8_t u8CanIndex, FLEXCAN_RxMsgType
|
|||
}
|
||||
|
||||
|
||||
static void CAN1_ErrorInterrupt_CallBack(uint8_t u8CanIndex, FLEXCAN_ErrorInfoType *pErrorInfo) {
|
||||
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);
|
||||
}
|
||||
|
||||
static void CAN1_RxFifoInterrupt_CallBack(uint8_t u8CanIndex, FLEXCAN_RxMsgType *pRxCfg) {
|
||||
CanSerialPortFrameIrqRxProcessingNO_DMA(CAN_PORTS.Can1_IO.env, pRxCfg);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
//static void DMA_ErrorCallback(void) {
|
||||
// while (1) {
|
||||
|
|
@ -120,7 +138,8 @@ const FilterTo_FLEXCAN_RxMbFilterType IdCanHardSoftFilterCan0[countIdCanHardSoft
|
|||
{FLEXCAN_ID_STD, FIU_CCU2_CANID, 0x7FF, 0},
|
||||
{FLEXCAN_ID_STD, FIU_CCU3_CANID, 0x7FF, 0}
|
||||
};
|
||||
/*
|
||||
|
||||
#if (CAN_DMA_EN == 1)
|
||||
#define countIdCanFilterFifoCan0 7
|
||||
const FLEXCAN_RxMbFilterType IdCanFilterFifoCan0[countIdCanFilterFifoCan0] = {
|
||||
{FLEXCAN_ID_STD, 0x100, 0x7FF},
|
||||
|
|
@ -131,100 +150,26 @@ const FLEXCAN_RxMbFilterType IdCanFilterFifoCan0[countIdCanFilterFifoCan0] = {
|
|||
{FLEXCAN_ID_STD, Diag_To_CCU_CANID, 0x7FF},
|
||||
{FLEXCAN_ID_STD, Diag_Functional_CANID, 0x7FF}
|
||||
};
|
||||
*/
|
||||
/*
|
||||
#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}
|
||||
};
|
||||
*/
|
||||
#endif
|
||||
|
||||
|
||||
#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, 0x7FF, PROTOCOL_CAN_XCP}
|
||||
};
|
||||
|
||||
/*
|
||||
|
||||
#if (CAN_DMA_EN == 1)
|
||||
#define countIdCanFilterFifoCan1 1
|
||||
const FLEXCAN_RxMbFilterType IdCanFilterFifoCan1[countIdCanFilterFifoCan1] = {
|
||||
{FLEXCAN_ID_STD, 0, 0}
|
||||
};
|
||||
*/
|
||||
|
||||
/*
|
||||
uint32_t data[] = {
|
||||
0x00000150, // 50 01 00 00
|
||||
0x00000152, // 52 01 00 00
|
||||
0x00000153, // 53 01 00 00
|
||||
0x00000157, // 57 01 00 00
|
||||
0x00000243, // 43 02 00 00
|
||||
0x00000244, // 44 02 00 00
|
||||
0x00000247, // 47 02 00 00
|
||||
0x0000024C, // 4C 02 00 00
|
||||
0x0000025A, // 5A 02 00 00
|
||||
0x00000280, // 80 02 00 00
|
||||
0x00000298, // 98 02 00 00
|
||||
0x00000305, // 05 03 00 00
|
||||
0x00000365, // 65 03 00 00
|
||||
0x0000039D, // 9D 03 00 00
|
||||
0x000003C1, // C1 03 00 00
|
||||
0x000004D0, // D0 04 00 00
|
||||
0x000004D1, // D1 04 00 00
|
||||
0x000004D2, // D2 04 00 00
|
||||
0x000004D3, // D3 04 00 00
|
||||
0x0000050F, // 0F 05 00 00
|
||||
0x0000051A, // 1A 05 00 00
|
||||
0x00000521, // 21 05 00 00
|
||||
0x00000522, // 22 05 00 00
|
||||
0x00000523, // 23 05 00 00
|
||||
0x00000524, // 24 05 00 00
|
||||
0x00000589, // 89 05 00 00
|
||||
0x000005A1, // A1 05 00 00
|
||||
0x000005A2, // A2 05 00 00
|
||||
0x000005A3 // A3 05 00 00
|
||||
};
|
||||
*/
|
||||
#endif
|
||||
|
||||
static bool vCanPort_InitCan0() {
|
||||
vCanPort_InitCAN0RxTxPin();
|
||||
|
||||
/*
|
||||
uint32_t z[31];
|
||||
uint32_t mask = 0;
|
||||
for (uint8_t i=0; i<29; ++i) {
|
||||
z[i] = IdCanSoftFilterCan0[i].u32RxCanId;
|
||||
mask |= z[i];
|
||||
}
|
||||
*/
|
||||
#if (CAN_DMA_EN == 1)
|
||||
bool result = vCanSerialPortFrameDMAInit(
|
||||
&CAN_PORTS.Can0,
|
||||
|
||||
|
|
@ -243,10 +188,8 @@ static bool vCanPort_InitCan0() {
|
|||
IdCanHardSoftFilterCan0,
|
||||
countIdCanHardSoftFilterCan0,
|
||||
|
||||
// IdCanSoftFilterCan0,
|
||||
// countIdCanSoftFilterCan0,
|
||||
// IdCanFilterFifoCan0,
|
||||
// countIdCanFilterFifoCan0,
|
||||
IdCanFilterFifoCan0,
|
||||
countIdCanFilterFifoCan0,
|
||||
|
||||
DMA0_IRQn,
|
||||
0xFF,
|
||||
|
|
@ -255,14 +198,39 @@ static bool vCanPort_InitCan0() {
|
|||
FLEXCAN_BAUD_500K,
|
||||
FLEXCAN_ID_STD,
|
||||
0x55,
|
||||
CAN0_ErrorInterrupt_CallBack,
|
||||
CAN0_RxInterrupt_CallBack,
|
||||
CAN0_RxFifoInterrupt_CallBack,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
|
||||
DMA_TransferCompleteCallbackCan0,
|
||||
NULL
|
||||
);
|
||||
#else
|
||||
|
||||
bool result = vCanSerialPortFrameMbInit(
|
||||
&CAN_PORTS.Can0,
|
||||
|
||||
FLEXCAN0,
|
||||
0, // CAN0 = 0 ... CAN3 = 3
|
||||
FlexCAN0_IRQn, // // FlexCAN0_IRQn ... FlexCAN3_IRQn
|
||||
|
||||
0xFF,
|
||||
IdCanHardSoftFilterCan0,
|
||||
countIdCanHardSoftFilterCan0,
|
||||
|
||||
|
||||
FLEXCAN_BAUD_500K,
|
||||
FLEXCAN_ID_STD,
|
||||
0x55,
|
||||
CAN0_ErrorInterrupt_CallBack,
|
||||
CAN0_RxInterrupt_CallBack,
|
||||
CAN0_RxFifoInterrupt_CallBack,
|
||||
NULL
|
||||
);
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
return result;
|
||||
}
|
||||
|
|
@ -306,11 +274,12 @@ static bool vCanPort_InitCan1() {
|
|||
|
||||
vCanPort_InitCAN1RxTxPin();
|
||||
|
||||
#if (CAN_DMA_EN == 1)
|
||||
bool result = vCanSerialPortFrameDMAInit(
|
||||
&CAN_PORTS.Can1,
|
||||
|
||||
FLEXCAN1,
|
||||
1, // CAN0 = 0 ... CAN3 = 3
|
||||
0, // CAN0 = 0 ... CAN3 = 3
|
||||
FlexCAN1_IRQn, // // FlexCAN0_IRQn ... FlexCAN3_IRQn
|
||||
|
||||
0xFF,
|
||||
|
|
@ -324,9 +293,8 @@ static bool vCanPort_InitCan1() {
|
|||
IdCanHardSoftFilterCan1,
|
||||
countIdCanHardSoftFilterCan1,
|
||||
|
||||
// IdCanFilterFifoCan1,
|
||||
// countIdCanFilterFifoCan1,
|
||||
|
||||
IdCanFilterFifoCan1,
|
||||
countIdCanFilterFifoCan1,
|
||||
|
||||
DMA1_IRQn,
|
||||
0xFF,
|
||||
|
|
@ -343,7 +311,29 @@ static bool vCanPort_InitCan1() {
|
|||
DMA_TransferCompleteCallbackCan1,
|
||||
NULL
|
||||
);
|
||||
#else
|
||||
bool result = vCanSerialPortFrameMbInit(
|
||||
&CAN_PORTS.Can1,
|
||||
|
||||
FLEXCAN1,
|
||||
1, // CAN0 = 0 ... CAN3 = 3
|
||||
FlexCAN1_IRQn, // // FlexCAN0_IRQn ... FlexCAN3_IRQn
|
||||
|
||||
0xFF,
|
||||
IdCanHardSoftFilterCan1,
|
||||
countIdCanHardSoftFilterCan1,
|
||||
|
||||
|
||||
FLEXCAN_BAUD_500K,
|
||||
FLEXCAN_ID_STD,
|
||||
0x55,
|
||||
CAN1_ErrorInterrupt_CallBack,
|
||||
CAN1_RxInterrupt_CallBack,
|
||||
CAN1_RxFifoInterrupt_CallBack,
|
||||
NULL
|
||||
);
|
||||
|
||||
#endif
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -8,6 +8,8 @@
|
|||
#include "CanSerialPortFrame.h"
|
||||
#include "LoggerInterface.h"
|
||||
|
||||
#define CAN_DMA_EN 0
|
||||
|
||||
#define PROTOCOL_CAN_RAW 0
|
||||
|
||||
#define PROTOCOL_CAN_XCP 1
|
||||
|
|
|
|||
Loading…
Reference in New Issue