72 lines
1.8 KiB
C
72 lines
1.8 KiB
C
//
|
|
// Created by cfif on 16.03.2024.
|
|
//
|
|
|
|
#ifndef ARTERY_CAN_MODULE_CAN_FRAME_H
|
|
#define ARTERY_CAN_MODULE_CAN_FRAME_H
|
|
|
|
#include "SerialPortFrameIO.h"
|
|
#include "cmsis_os2.h"
|
|
#include "stdbool.h"
|
|
#include "at32f435_437_can.h"
|
|
|
|
typedef enum {
|
|
CAN_BAUD_RATE_1000K,
|
|
CAN_BAUD_RATE_500K,
|
|
CAN_BAUD_RATE_250K,
|
|
CAN_BAUD_RATE_125K
|
|
} eCanBaudRate;
|
|
|
|
typedef enum {
|
|
CAN_STD_ID,
|
|
CAN_EXT_ID
|
|
} eCanTypeFrame;
|
|
|
|
typedef struct {
|
|
can_type *can;
|
|
uint32_t id;
|
|
uint32_t id1;
|
|
eCanTypeFrame canTypeFrame;
|
|
bool canFilterEnable;
|
|
|
|
bool reInit;
|
|
|
|
can_filter_init_type can_filter0_init_struct;
|
|
can_filter_init_type can_filter1_init_struct;
|
|
|
|
eCanBaudRate canBaudRate;
|
|
|
|
osMessageQueueId_t rxDataQueue0;
|
|
osMessageQueueId_t rxDataQueue1;
|
|
|
|
osMessageQueueId_t rxDataSnifferQueue0;
|
|
osMessageQueueId_t rxDataSnifferQueue1;
|
|
|
|
osMessageQueueId_t txAccessQueue;
|
|
|
|
} tCanSerialPortFrameArtery;
|
|
|
|
void CanSerialPortFrameIrqRxProcessing0(tCanSerialPortFrameArtery *env);
|
|
void CanSerialPortFrameIrqRxProcessing1(tCanSerialPortFrameArtery *env);
|
|
|
|
void vCanSerialPortFrameInit(
|
|
tCanSerialPortFrameArtery *env,
|
|
can_type *CANx,
|
|
eCanBaudRate canBaudRate,
|
|
uint8_t irqSubPriority,
|
|
eCanTypeFrame canTypeFrame,
|
|
uint32_t canId,
|
|
uint32_t rxBufferLength0,
|
|
uint32_t rxSnifferLength0,
|
|
uint32_t rxBufferLength1,
|
|
uint32_t rxSnifferLength1
|
|
);
|
|
|
|
void CanSerialPortFrameSetId(tCanSerialPortFrameArtery *env, uint32_t id);
|
|
void CanSerialPortFrameSetId1(tCanSerialPortFrameArtery *env, uint32_t id);
|
|
void CanSerialPortFrameSetType(tCanSerialPortFrameArtery *env, eCanTypeFrame canTypeFrame);
|
|
tSerialPortFrameIO CanPortFrame_GetIo(tCanSerialPortFrameArtery *env);
|
|
tSerialPortFrameIO CanPortFrame_GetSnifferIo(tCanSerialPortFrameArtery *env);
|
|
|
|
#endif //ARTERY_CAN_MODULE_CAN_FRAME_H
|