Обновление
This commit is contained in:
parent
9439a5a915
commit
2798ccd3ad
87
CanPorts.c
87
CanPorts.c
|
|
@ -5,6 +5,7 @@
|
|||
#include "string.h"
|
||||
#include "fc7xxx_driver_port.h"
|
||||
#include "fc7xxx_driver_gpio.h"
|
||||
#include "candb.h"
|
||||
|
||||
tCanPorts CAN_PORTS;
|
||||
|
||||
|
|
@ -12,10 +13,11 @@ typedef struct {
|
|||
uint32_t u32CanRAM[4];
|
||||
} Can_RamType;
|
||||
|
||||
ALIGN(256) Can_RamType g_aRxDataBuf[16]; // dma ring buffer size is 256
|
||||
#define size_aRxDataBuf 16
|
||||
ALIGN(256) Can_RamType g_aRxDataBufCan0[size_aRxDataBuf]; // dma ring buffer size is 256
|
||||
|
||||
static void DMA_TransferCompleteCallback(void) {
|
||||
CanSerialPortFrameIrqRxProcessing(CAN_PORTS.Can0_IO.env, (uint32_t *)&g_aRxDataBuf[0]);
|
||||
CanSerialPortFrameIrqRxProcessing(CAN_PORTS.Can0_IO.env, (uint32_t *) &g_aRxDataBufCan0[0]);
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -59,14 +61,64 @@ static void vCanPort_InitCAN0RxTxPin() {
|
|||
GPIO_InitPins(GPIO_C, &tGpioInitStruct);
|
||||
}
|
||||
|
||||
const FilterTo_FLEXCAN_RxMbFilterType IdCanFilter[4] = {{FLEXCAN_ID_STD, 1, 1, 0},
|
||||
{FLEXCAN_ID_STD, 2, 2, 1},
|
||||
{FLEXCAN_ID_STD, 3, 3, 1},
|
||||
{FLEXCAN_ID_EXT, 0x3, 0x3, 2}};
|
||||
#define countIdCanSoftFilterCan0 31
|
||||
const FilterTo_FLEXCAN_RxMbFilterType IdCanSoftFilterCan0[countIdCanSoftFilterCan0] = {
|
||||
{FLEXCAN_ID_STD, EMS_Veh_CANID, 0x7FF, 0},
|
||||
{FLEXCAN_ID_STD, BCM_Powertrain_CANID, 0x7FF, 0},
|
||||
{FLEXCAN_ID_STD, EMS_Veh_02_CANID, 0x7FF, 0},
|
||||
{FLEXCAN_ID_STD, BCM_EEM_CANID, 0x7FF, 0},
|
||||
{FLEXCAN_ID_STD, DMFR_Msg1_CANID, 0x7FF, 0},
|
||||
{FLEXCAN_ID_STD, DMFL_Msg1_CANID, 0x7FF, 0},
|
||||
{FLEXCAN_ID_STD, TM_Stat_CANID, 0x7FF, 0},
|
||||
{FLEXCAN_ID_STD, TM_CP_CANID, 0x7FF, 0},
|
||||
{FLEXCAN_ID_STD, HVC_CCU_Status_Msg_CANID, 0x7FF, 0},
|
||||
{FLEXCAN_ID_STD, BCM_VEH_STATE_CANID, 0x7FF, 0},
|
||||
{FLEXCAN_ID_STD, EMS_HVC_Req_Msg_CANID, 0x7FF, 0},
|
||||
{FLEXCAN_ID_STD, HVC_Err_Status_Msg_CANID, 0x7FF, 0},
|
||||
{FLEXCAN_ID_STD, BCM_CLIMATIC_DATA_CANID, 0x7FF, 0},
|
||||
{FLEXCAN_ID_STD, VCU_CCU_Req_CANID, 0x7FF, 0},
|
||||
{FLEXCAN_ID_STD, ESC_08_CANID, 0x7FF, 0},
|
||||
{FLEXCAN_ID_STD, SMFL_status_CANID, 0x7FF, 0},
|
||||
{FLEXCAN_ID_STD, SMFR_status_CANID, 0x7FF, 0},
|
||||
{FLEXCAN_ID_STD, SMRL_status_CANID, 0x7FF, 0},
|
||||
{FLEXCAN_ID_STD, SMRR_status_CANID, 0x7FF, 0},
|
||||
{FLEXCAN_ID_STD, SDM_Cmd_CANID, 0x7FF, 0},
|
||||
{FLEXCAN_ID_STD, VEH_VIN_CANID, 0x7FF, 0},
|
||||
{FLEXCAN_ID_STD, OCUFL_MSG_CANID, 0x7FF, 0},
|
||||
{FLEXCAN_ID_STD, OCUFR_MSG_CANID, 0x7FF, 0},
|
||||
{FLEXCAN_ID_STD, OCURL_MSG_CANID, 0x7FF, 0},
|
||||
{FLEXCAN_ID_STD, OCURR_MSG_CANID, 0x7FF, 0},
|
||||
{FLEXCAN_ID_STD, DW_STATE_CANID, 0x7FF, 0},
|
||||
{FLEXCAN_ID_STD, FIU_CCU1_CANID, 0x7FF, 0},
|
||||
{FLEXCAN_ID_STD, FIU_CCU2_CANID, 0x7FF, 0},
|
||||
{FLEXCAN_ID_STD, FIU_CCU3_CANID, 0x7FF, 0},
|
||||
{FLEXCAN_ID_STD, Diag_To_CCU_CANID, 0x7FF, 1},
|
||||
{FLEXCAN_ID_STD, Diag_Functional_CANID, 0x7FF, 1},
|
||||
};
|
||||
|
||||
#define countIdCanFilterFifoCan0 8
|
||||
const FLEXCAN_RxMbFilterType IdCanFilterFifoCan0[countIdCanFilterFifoCan0] = {
|
||||
{FLEXCAN_ID_STD, 0x100, 0x700},
|
||||
{FLEXCAN_ID_STD, 0x200, 0x700},
|
||||
{FLEXCAN_ID_STD, 0x300, 0x700},
|
||||
{FLEXCAN_ID_STD, 0x400, 0x700},
|
||||
{FLEXCAN_ID_STD, 0x500, 0x700},
|
||||
{FLEXCAN_ID_STD, 0x600, 0x700},
|
||||
{FLEXCAN_ID_STD, Diag_To_CCU_CANID, 0x7FF},
|
||||
{FLEXCAN_ID_STD, Diag_Functional_CANID, 0x7FF}
|
||||
};
|
||||
|
||||
|
||||
static void vCanPort_InitCan0() {
|
||||
vCanPort_InitCAN0RxTxPin();
|
||||
|
||||
|
||||
uint32_t z[31];
|
||||
|
||||
for (uint8_t i=0; i<31; ++i) {
|
||||
z[i] = IdCanSoftFilterCan0[i].u32RxCanId;
|
||||
}
|
||||
|
||||
vCanSerialPortFrameDMAInit(
|
||||
&CAN_PORTS.Can0,
|
||||
|
||||
|
|
@ -79,11 +131,14 @@ static void vCanPort_InitCan0() {
|
|||
|
||||
DMA_REQ_FLEXCAN0,
|
||||
|
||||
(uint8_t *)&g_aRxDataBuf[0],
|
||||
16,
|
||||
(uint8_t *) &g_aRxDataBufCan0[0],
|
||||
size_aRxDataBuf,
|
||||
|
||||
IdCanFilter,
|
||||
4,
|
||||
IdCanSoftFilterCan0,
|
||||
countIdCanSoftFilterCan0,
|
||||
|
||||
IdCanFilterFifoCan0,
|
||||
countIdCanFilterFifoCan0,
|
||||
|
||||
DMA1_IRQn,
|
||||
0xFF,
|
||||
|
|
@ -111,22 +166,18 @@ void CanPorts_Init() {
|
|||
|
||||
}
|
||||
|
||||
void CAN0_IRQHandler(void)
|
||||
{
|
||||
void CAN0_IRQHandler(void) {
|
||||
FLEXCAN_IRQHandler(0U);
|
||||
}
|
||||
|
||||
void CAN1_IRQHandler(void)
|
||||
{
|
||||
void CAN1_IRQHandler(void) {
|
||||
FLEXCAN_IRQHandler(1U);
|
||||
}
|
||||
|
||||
void CAN2_IRQHandler(void)
|
||||
{
|
||||
void CAN2_IRQHandler(void) {
|
||||
FLEXCAN_IRQHandler(2U);
|
||||
}
|
||||
|
||||
void CAN3_IRQHandler(void)
|
||||
{
|
||||
void CAN3_IRQHandler(void) {
|
||||
FLEXCAN_IRQHandler(3U);
|
||||
}
|
||||
Loading…
Reference in New Issue