Обновление
This commit is contained in:
parent
7c893d8719
commit
fbb6fd8914
88
CanPorts.c
88
CanPorts.c
|
|
@ -15,10 +15,14 @@ typedef struct {
|
|||
|
||||
#define size_aRxDataBuf 16
|
||||
ALIGN(256) Can_RamType g_aRxDataBufCan0[size_aRxDataBuf]; // dma ring buffer size is 256
|
||||
ALIGN(256) Can_RamType g_aRxDataBufCan1[size_aRxDataBuf]; // dma ring buffer size is 256
|
||||
|
||||
static void DMA_TransferCompleteCallback(void) {
|
||||
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]);
|
||||
}
|
||||
|
||||
//static void DMA_ErrorCallback(void) {
|
||||
|
|
@ -186,7 +190,84 @@ static void vCanPort_InitCan0() {
|
|||
NULL,
|
||||
NULL,
|
||||
|
||||
DMA_TransferCompleteCallback,
|
||||
DMA_TransferCompleteCallbackCan0,
|
||||
NULL
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
|
||||
static void vCanPort_InitCAN1RxTxPin() {
|
||||
PORT_InitType tInitStruct = {0U};
|
||||
GPIO_InitType tGpioInitStruct = {0};
|
||||
|
||||
// CAN1_STB
|
||||
// PortD 28: MUX = GPIO output
|
||||
tInitStruct.u32PortPins = PORT_PIN_28;
|
||||
tInitStruct.uPortPinMux.u32PortPinMode = PORT_GPIO_MODE;
|
||||
PORT_InitPins(PORT_D, &tInitStruct);
|
||||
tGpioInitStruct.u32GpioPins = PORT_PIN_28;
|
||||
tGpioInitStruct.ePinDirection = GPIO_OUT;
|
||||
tGpioInitStruct.ePinLevel = GPIO_LOW;
|
||||
GPIO_InitPins(GPIO_D, &tGpioInitStruct);
|
||||
|
||||
// PortA 12: MUX = ALT3, CAN1_RX
|
||||
tInitStruct.u32PortPins = PORT_PIN_12;
|
||||
tInitStruct.uPortPinMux.u32PortPinMode = PORTA_12_FLEXCAN1_RX;
|
||||
tInitStruct.bPullEn = FALSE;
|
||||
tInitStruct.ePullSel = PORT_PULL_UP;
|
||||
PORT_InitPins(PORT_A, &tInitStruct);
|
||||
tGpioInitStruct.u32GpioPins = PORT_PIN_12;
|
||||
tGpioInitStruct.ePinDirection = GPIO_IN;
|
||||
GPIO_InitPins((GPIO_InstanceType) PORT_A, &tGpioInitStruct);
|
||||
|
||||
// PortA 13: MUX = ALT3, CAN1_TX
|
||||
tInitStruct.u32PortPins = PORT_PIN_13;
|
||||
tInitStruct.uPortPinMux.u32PortPinMode = PORTA_13_FLEXCAN1_TX;
|
||||
PORT_InitPins(PORT_A, &tInitStruct);
|
||||
tGpioInitStruct.u32GpioPins = PORT_PIN_13;
|
||||
tGpioInitStruct.ePinDirection = GPIO_OUT;
|
||||
tGpioInitStruct.ePinLevel = GPIO_HIGH;
|
||||
GPIO_InitPins(GPIO_A, &tGpioInitStruct);
|
||||
}
|
||||
|
||||
static void vCanPort_InitCan1() {
|
||||
vCanPort_InitCAN1RxTxPin();
|
||||
|
||||
vCanSerialPortFrameDMAInit(
|
||||
&CAN_PORTS.Can1,
|
||||
|
||||
FLEXCAN0,
|
||||
1, // CAN0 = 0 ... CAN3 = 3
|
||||
FlexCAN1_IRQn, // // FlexCAN0_IRQn ... FlexCAN3_IRQn
|
||||
|
||||
0xFF,
|
||||
DMA_CHANNEL_1,
|
||||
|
||||
DMA_REQ_FLEXCAN1,
|
||||
|
||||
(uint8_t *) &g_aRxDataBufCan0[0],
|
||||
size_aRxDataBuf,
|
||||
|
||||
IdCanSoftFilterCan0,
|
||||
countIdCanSoftFilterCan0,
|
||||
|
||||
IdCanFilterFifoCan0,
|
||||
countIdCanFilterFifoCan0,
|
||||
|
||||
DMA1_IRQn,
|
||||
0xFF,
|
||||
DMA1_IRQn,
|
||||
|
||||
FLEXCAN_BAUD_500K,
|
||||
FLEXCAN_ID_STD,
|
||||
0x55,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
|
||||
DMA_TransferCompleteCallbackCan1,
|
||||
NULL
|
||||
);
|
||||
|
||||
|
|
@ -198,6 +279,9 @@ void CanPorts_Init() {
|
|||
vCanPort_InitCan0();
|
||||
CAN_PORTS.Can0_IO = CanPortFrame_GetIo(&CAN_PORTS.Can0);
|
||||
|
||||
CAN_PORTS.Can1.reInit = false;
|
||||
vCanPort_InitCan1();
|
||||
CAN_PORTS.Can1_IO = CanPortFrame_GetIo(&CAN_PORTS.Can1);
|
||||
}
|
||||
|
||||
void CAN0_IRQHandler(void) {
|
||||
|
|
|
|||
|
|
@ -21,6 +21,8 @@
|
|||
typedef struct {
|
||||
tCanSerialPortFrameFlagchip Can0;
|
||||
tSerialPortFrameIO Can0_IO;
|
||||
tCanSerialPortFrameFlagchip Can1;
|
||||
tSerialPortFrameIO Can1_IO;
|
||||
} tCanPorts;
|
||||
|
||||
extern tCanPorts CAN_PORTS;
|
||||
|
|
|
|||
Loading…
Reference in New Issue