Изменена инициализация CAN в соответствии с интерфейсом нового драйвера
This commit is contained in:
parent
552378efde
commit
23feb4b9b4
120
CanSerialPorts.c
120
CanSerialPorts.c
|
|
@ -31,11 +31,64 @@ void vCanSerialPorts_InitRCC() {
|
|||
RCC_EnableAPB1PeriphClk(RCC_APB1_PERIPH_CAN1 | RCC_APB1_PERIPH_CAN2, ENABLE);
|
||||
}
|
||||
|
||||
void USB_LP_CAN1_RX0_IRQHandler(void) {
|
||||
CanSerialPortIrqRxProcessing(&SERIAL_PORTS.SerialPortCan1);
|
||||
void CanPort_SetSpeed(CAN_Module *CANx, eCanBaudRate canBaudRate) {
|
||||
|
||||
if (CANx == CAN1) {
|
||||
vCanSerialPortFrameInit(
|
||||
&SERIAL_PORTS.SerialPortFrameCan1,
|
||||
CAN1,
|
||||
canBaudRate,
|
||||
0x57,
|
||||
CAN_STD_ID,
|
||||
0,
|
||||
20,
|
||||
0,
|
||||
20,
|
||||
0
|
||||
);
|
||||
}
|
||||
|
||||
if (CANx == CAN2) {
|
||||
vCanSerialPortFrameInit(
|
||||
&SERIAL_PORTS.SerialPortFrameCan2,
|
||||
CAN2,
|
||||
canBaudRate,
|
||||
0x57,
|
||||
CAN_STD_ID,
|
||||
0,
|
||||
20,
|
||||
0,
|
||||
20,
|
||||
0
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void vCanSerialPort_InitCAN1(tCanSerialPortNation *env) {
|
||||
|
||||
void USB_LP_CAN1_RX0_IRQHandler(void) {
|
||||
CanSerialPortFrameIrqRxProcessing0(&SERIAL_PORTS.SerialPortFrameCan1);
|
||||
}
|
||||
|
||||
void CAN1_RX1_IRQHandler(void) {
|
||||
CanSerialPortFrameIrqRxProcessing1(&SERIAL_PORTS.SerialPortFrameCan1);
|
||||
}
|
||||
|
||||
void CAN1_SCE_IRQHandler(void) {
|
||||
|
||||
__IO uint32_t err_index = 0;
|
||||
if (CAN_GetFlagSTS(CAN1, CAN_FLAG_LEC) != RESET) {
|
||||
err_index = CAN1->ESTS & 0x70;
|
||||
CAN_ClearFlag(CAN1, CAN_FLAG_LEC);
|
||||
if (err_index == 0x00000010) {
|
||||
CAN_DeInit(CAN1);
|
||||
CanPort_SetSpeed(CAN1, CAN_SERIAL_PORTS.canFrame1.canBaudRate);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void vCanSerialPort_InitCAN1(tCanSerialPortFrameNation *env) {
|
||||
GPIO_InitType GPIO_InitStructure;
|
||||
GPIO_InitStruct(&GPIO_InitStructure);
|
||||
RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_AFIO | RCC_APB2_PERIPH_GPIOB, ENABLE);
|
||||
|
|
@ -52,27 +105,33 @@ void vCanSerialPort_InitCAN1(tCanSerialPortNation *env) {
|
|||
|
||||
GPIO_ConfigPinRemap(GPIO_RMP2_CAN1, ENABLE);
|
||||
|
||||
vCanSerialPortInit(
|
||||
env,
|
||||
CAN1,
|
||||
CAN_BAUD_RATE_250K,
|
||||
0xFF,
|
||||
CAN_STD_ID,
|
||||
0x400,
|
||||
true,
|
||||
0x400,
|
||||
0x00,
|
||||
512,
|
||||
0
|
||||
);
|
||||
|
||||
|
||||
}
|
||||
|
||||
void CAN2_RX0_IRQHandler(void) {
|
||||
CanSerialPortIrqRxProcessing(&SERIAL_PORTS.SerialPortCan2);
|
||||
CanSerialPortFrameIrqRxProcessing0(&SERIAL_PORTS.SerialPortFrameCan2);
|
||||
}
|
||||
|
||||
void vCanSerialPort_InitCAN2(tCanSerialPortNation *env) {
|
||||
void CAN2_RX1_IRQHandler(void) {
|
||||
CanSerialPortFrameIrqRxProcessing1(&SERIAL_PORTS.SerialPortFrameCan2);
|
||||
}
|
||||
|
||||
void CAN2_SCE_IRQHandler(void) {
|
||||
|
||||
__IO uint32_t err_index = CAN_GetFlagSTS(CAN2, CAN_FLAG_LEC);
|
||||
if (err_index != RESET) {
|
||||
err_index = CAN2->ESTS & 0x70;
|
||||
CAN_ClearFlag(CAN2, CAN_FLAG_LEC);
|
||||
if (err_index == 0x00000010) {
|
||||
CAN_DeInit(CAN2);
|
||||
CanPort_SetSpeed(CAN2, CAN_SERIAL_PORTS.canFrame2.canBaudRate);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void vCanSerialPort_InitCAN2(tCanSerialPortFrameNation *env) {
|
||||
GPIO_InitType GPIO_InitStructure;
|
||||
GPIO_InitStruct(&GPIO_InitStructure);
|
||||
RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_AFIO | RCC_APB2_PERIPH_GPIOD, ENABLE);
|
||||
|
|
@ -88,19 +147,20 @@ void vCanSerialPort_InitCAN2(tCanSerialPortNation *env) {
|
|||
|
||||
GPIO_ConfigPinRemap(GPIO_RMP3_CAN2, ENABLE);
|
||||
|
||||
vCanSerialPortInit(
|
||||
vCanSerialPortFrameInit(
|
||||
env,
|
||||
CAN2,
|
||||
CAN_BAUD_RATE_250K,
|
||||
0xFF,
|
||||
CAN_BAUD_RATE_500K,
|
||||
0x57,
|
||||
CAN_STD_ID,
|
||||
0x400,
|
||||
true,
|
||||
0x400,
|
||||
0x00,
|
||||
512,
|
||||
0,
|
||||
20,
|
||||
0,
|
||||
20,
|
||||
0
|
||||
);
|
||||
|
||||
|
||||
}
|
||||
|
||||
void CanSerialPorts_Init() {
|
||||
|
|
@ -109,10 +169,10 @@ void CanSerialPorts_Init() {
|
|||
vCanSerialPorts_InitRCC();
|
||||
CanHWControlSet();
|
||||
|
||||
vCanSerialPort_InitCAN1(&env->can1);
|
||||
env->can1IO = CanPort_GetIo(&env->can1);
|
||||
vCanSerialPort_InitCAN1(&env->canFrame1);
|
||||
env->canFrame1IO = CanPortFrame_GetIo(&env->canFrame1);
|
||||
|
||||
vCanSerialPort_InitCAN2(&env->can2);
|
||||
env->can2IO = CanPort_GetIo(&env->can2);
|
||||
vCanSerialPort_InitCAN2(&env->canFrame2);
|
||||
env->canFrame2IO = CanPortFrame_GetIo(&env->canFrame2);
|
||||
|
||||
}
|
||||
|
|
@ -2,22 +2,22 @@
|
|||
// Created by cfif on 17.03.2024.
|
||||
//
|
||||
#include "n32g45x.h"
|
||||
#include "CanSerialPort.h"
|
||||
#include "CanSerialPortFrame.h"
|
||||
|
||||
#ifndef NATION_CAN_TEST_CANSERIALPORTS_H
|
||||
#define NATION_CAN_TEST_CANSERIALPORTS_H
|
||||
|
||||
typedef struct {
|
||||
tCanSerialPortNation can1;
|
||||
tSerialPortIO can1IO;
|
||||
tCanSerialPortFrameNation canFrame1;
|
||||
tSerialPortFrameIO canFrame1IO;
|
||||
|
||||
tCanSerialPortNation can2;
|
||||
tSerialPortIO can2IO;
|
||||
tCanSerialPortFrameNation canFrame2;
|
||||
tSerialPortFrameIO canFrame2IO;
|
||||
} tCanSerialPorts;
|
||||
|
||||
void CanSerialPorts_Init();
|
||||
void vCanSerialPort_InitCAN1(tCanSerialPortNation *env);
|
||||
void vCanSerialPort_InitCAN2(tCanSerialPortNation *env);
|
||||
void vCanSerialPort_InitCAN1(tCanSerialPortFrameNation *env);
|
||||
void vCanSerialPort_InitCAN2(tCanSerialPortFrameNation *env);
|
||||
extern tCanSerialPorts CAN_SERIAL_PORTS;
|
||||
void vCanSerialPorts_InitRCC();
|
||||
void CanHWControlSet();
|
||||
|
|
|
|||
Loading…
Reference in New Issue