106 lines
2.6 KiB
C
106 lines
2.6 KiB
C
//
|
|
// Created by Cfif on 14.12.23.
|
|
//
|
|
#include <stdbool.h>
|
|
#include "fc7xxx_driver_port.h"
|
|
#include "fc7xxx_driver_gpio.h"
|
|
#include "Lins.h"
|
|
|
|
tLinPorts LIN_PORTS;
|
|
|
|
#define numOfClassicPID 20
|
|
|
|
const uint8_t classicPID[numOfClassicPID] = {
|
|
CFR_INI,
|
|
CFR_SET,
|
|
CFR_MOD,
|
|
CFR_ADR,
|
|
CFR_PRG,
|
|
DFR_PRG,
|
|
RFR_PRG,
|
|
RFR_ISSR1,
|
|
RFR_ISSR2,
|
|
RFR_ISSR3,
|
|
RFR_ISSR4,
|
|
RFR_ISSR5,
|
|
RFR_ISSR6,
|
|
RFR_ISSR7,
|
|
RFR_ISSR8,
|
|
RFR_ISSR9,
|
|
DFR_STA,
|
|
RFR_STA,
|
|
DFR_IDE,
|
|
RFR_IDE
|
|
};
|
|
|
|
|
|
static void Lin0CallbackHandler(uint8_t u8LinIndex, void *state) {
|
|
LIN_PORTS.lin0.LinExtCallbackHandler(LIN_PORTS.lin0.envCallExtBack, u8LinIndex, state);
|
|
}
|
|
|
|
void FCUART4_RxTx_IRQHandler(void) {
|
|
LIN_DrvIRQHandler(LIN_PORTS.lin0.UART_INDEX);
|
|
}
|
|
|
|
tLinData *Lin0_Init(lin_callback_ext_t Lin_ExtCallbackHandler) {
|
|
|
|
tLinPorts *env = &LIN_PORTS;
|
|
|
|
PORT_InitType tInitStruct = {0};
|
|
GPIO_InitType tGpioInitStruct = {0};
|
|
|
|
// Port D12: MUX = ALT3, UART4_RX
|
|
tInitStruct.u32PortPins = PORT_PIN_12;
|
|
tInitStruct.uPortPinMux.u32PortPinMode = PORTD_12_FCUART4_RX;
|
|
tInitStruct.bPullEn = true;
|
|
tInitStruct.ePullSel = PORT_PULL_UP;
|
|
PORT_InitPins(PORT_D, &tInitStruct);
|
|
|
|
tGpioInitStruct.u32GpioPins = GPIO_PIN_12;
|
|
tGpioInitStruct.ePinDirection = GPIO_IN;
|
|
GPIO_InitPins(GPIO_D, &tGpioInitStruct);
|
|
|
|
// Port D5: MUX = ALT3, UART4_TX
|
|
tInitStruct.u32PortPins = PORT_PIN_5;
|
|
tInitStruct.uPortPinMux.u32PortPinMode = PORTD_5_FCUART4_TX;
|
|
PORT_InitPins(PORT_D, &tInitStruct);
|
|
|
|
tGpioInitStruct.u32GpioPins = GPIO_PIN_5;
|
|
tGpioInitStruct.ePinDirection = GPIO_OUT;
|
|
tGpioInitStruct.ePinLevel = GPIO_HIGH;
|
|
GPIO_InitPins(GPIO_D, &tGpioInitStruct);
|
|
|
|
// Port D18: MUX = GPIO output ENABLE
|
|
tInitStruct.u32PortPins = PORT_PIN_18;
|
|
tInitStruct.uPortPinMux.u32PortPinMode = PORT_GPIO_MODE;
|
|
PORT_InitPins(PORT_D, &tInitStruct);
|
|
|
|
tGpioInitStruct.u32GpioPins = GPIO_PIN_18;
|
|
tGpioInitStruct.ePinDirection = GPIO_OUT;
|
|
tGpioInitStruct.ePinLevel = GPIO_HIGH;
|
|
GPIO_InitPins(GPIO_D, &tGpioInitStruct);
|
|
|
|
LIN_Initial(
|
|
&env->lin0,
|
|
FCUART4,
|
|
9600,
|
|
|
|
4, // UART0 = 0 ... UART7 = 7
|
|
FCUART4_IRQn, // FCUART0_IRQn ... FCUART7_IRQn
|
|
0xFF,
|
|
|
|
NULL,
|
|
Lin0CallbackHandler,
|
|
Lin_ExtCallbackHandler,
|
|
&env->lin0.linData,
|
|
|
|
classicPID,
|
|
numOfClassicPID
|
|
|
|
);
|
|
|
|
env->lin0_Io = vLinGetIo(&env->lin0);
|
|
|
|
return &env->lin0.linData;
|
|
}
|