make libCLS more independen of HW

goal is to reuse libCLS on an diffrent MCU
This commit is contained in:
2024-02-05 19:46:48 +01:00
parent 31f3172ba3
commit a3c3b99fb3
18 changed files with 309 additions and 54 deletions

View File

@@ -0,0 +1,28 @@
#include "CLS_BSP.h"
#ifdef CLS_BSP_FDCAN
HAL_StatusTypeDef CLS_BSP_CAN_AddMessageToSend(CLS_BSP_TxHeaderType * header, uint8_t * data) {
if (HAL_FDCAN_GetTxFifoFreeLevel(&hfdcan1) > 0) {
return HAL_FDCAN_AddMessageToTxFifoQ(&hfdcan1, header, data);
}
return HAL_ERROR;
}
HAL_StatusTypeDef CLS_BSP_CAN_SetUniversalFilter(const CLS_BSP_CAN_UniversalFilter * filter) {
FDCAN_FilterTypeDef sFilterConfig;
sFilterConfig.IdType = FDCAN_STANDARD_ID;
sFilterConfig.FilterIndex = filter->filterIndex;
sFilterConfig.FilterType = filter->filterMode;
sFilterConfig.FilterConfig = filter->filterDestination;
sFilterConfig.FilterID1 = filter->id0;
sFilterConfig.FilterID2 = filter->id1;
return HAL_FDCAN_ConfigFilter(&hfdcan1, &sFilterConfig);
}
#endif

View File

@@ -0,0 +1,53 @@
#define CLS_BSP_FDCAN
#ifdef CLS_BSP_FDCAN
#include "fdcan.h"
typedef FDCAN_TxHeaderTypeDef CLS_BSP_TxHeaderType;
#define CREATE_BSP_CAN_HEADER(identifier, datalength) \
{ \
.IdType = FDCAN_STANDARD_ID, \
.Identifier = identifier, \
.TxFrameType = FDCAN_DATA_FRAME, \
.DataLength = datalength, \
.ErrorStateIndicator = FDCAN_ESI_PASSIVE, \
.BitRateSwitch = FDCAN_BRS_OFF, \
.FDFormat = FDCAN_CLASSIC_CAN, \
.TxEventFifoControl = FDCAN_NO_TX_EVENTS, \
.MessageMarker = 0xCC, \
}
#define CLS_BSP_DLC_BYTES_1 FDCAN_DLC_BYTES_1
#define CLS_BSP_DLC_BYTES_2 FDCAN_DLC_BYTES_2
#define CLS_BSP_DLC_BYTES_3 FDCAN_DLC_BYTES_3
#define CLS_BSP_DLC_BYTES_4 FDCAN_DLC_BYTES_4
#define CLS_BSP_DLC_BYTES_5 FDCAN_DLC_BYTES_5
#define CLS_BSP_DLC_BYTES_6 FDCAN_DLC_BYTES_6
#define CLS_BSP_DLC_BYTES_7 FDCAN_DLC_BYTES_7
#define CLS_BSP_DLC_BYTES_8 FDCAN_DLC_BYTES_8
#define CLS_CAN_FILTER_DISABLE FDCAN_FILTER_DISABLE
#define CLS_CAN_FILTER_TO_RXFIFO0 FDCAN_FILTER_TO_RXFIFO0
#define CLS_CAN_FILTER_TO_RXFIFO1 FDCAN_FILTER_TO_RXFIFO1
#define CLS_BSP_CAN_FILTER_LIST FDCAN_FILTER_DUAL
#endif
typedef struct {
uint32_t filterIndex;
uint32_t filterDestination;
uint32_t filterMode;
uint16_t id0;
uint16_t id1;
} CLS_BSP_CAN_UniversalFilter;
HAL_StatusTypeDef CLS_BSP_CAN_AddMessageToSend(CLS_BSP_TxHeaderType * header, uint8_t * data);
HAL_StatusTypeDef CLS_BSP_CAN_SetUniversalFilter(const CLS_BSP_CAN_UniversalFilter * filter);

View File

@@ -0,0 +1,14 @@
cmake_minimum_required(VERSION 3.12)
project(CLS_BSP C)
add_library(${PROJECT_NAME} STATIC "")
target_sources(${PROJECT_NAME}
PRIVATE
${CMAKE_CURRENT_LIST_DIR}/CLS_BSP.c
INTERFACE
${CMAKE_CURRENT_LIST_DIR}/CLS_BSP.h
)
target_include_directories(${PROJECT_NAME} INTERFACE ${CMAKE_CURRENT_LIST_DIR})