85 lines
2.3 KiB
C
85 lines
2.3 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 "SerialPortIO.h"
|
|
#include "cmsis_os2.h"
|
|
#include "n32g45x.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 enum
|
|
{
|
|
CAN_TX_MAILBOX0 = 0x00,
|
|
CAN_TX_MAILBOX1 = 0x01,
|
|
CAN_TX_MAILBOX2 = 0x02
|
|
} can_tx_mailbox_num_type;
|
|
|
|
typedef struct {
|
|
CAN_Module *can;
|
|
|
|
uint32_t id;
|
|
uint32_t id1;
|
|
|
|
eCanTypeFrame canTypeFrame;
|
|
|
|
bool reInit;
|
|
|
|
eCanBaudRate canBaudRate;
|
|
|
|
osMessageQueueId_t rxDataQueue0;
|
|
osMessageQueueId_t rxDataQueue1;
|
|
|
|
osMessageQueueId_t rxDataSnifferQueue0;
|
|
osMessageQueueId_t rxDataSnifferQueue1;
|
|
|
|
osMessageQueueId_t txAccessQueue1;
|
|
osMessageQueueId_t txAccessQueue2;
|
|
|
|
} tCanSerialPortFrameNation;
|
|
|
|
void CanSerialPortFrameIrqRxProcessing0(tCanSerialPortFrameNation *env);
|
|
void CanSerialPortFrameIrqRxProcessing1(tCanSerialPortFrameNation *env);
|
|
|
|
void vCanSerialPortFrameInit(
|
|
tCanSerialPortFrameNation *env,
|
|
CAN_Module *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(tCanSerialPortFrameNation *env, uint32_t id);
|
|
void CanSerialPortFrameSetId1(tCanSerialPortFrameNation *env, uint32_t id);
|
|
void CanSerialPortFrameSetType(tCanSerialPortFrameNation *env, eCanTypeFrame canTypeFrame);
|
|
tSerialPortFrameIO CanPortFrame_GetIo(tCanSerialPortFrameNation *env);
|
|
tSerialPortFrameIO CanPortFrame_GetSnifferIo(tCanSerialPortFrameNation *env);
|
|
|
|
void CanSerialPortFrameSetFilter(tCanSerialPortFrameNation *env,
|
|
bool canFilterEnable,
|
|
uint32_t canFilter0Id,
|
|
uint32_t canFilter0Mask,
|
|
uint32_t canFilter1Id,
|
|
uint32_t canFilter1Mask);
|
|
|
|
#endif //ARTERY_CAN_MODULE_CAN_FRAME_H
|