make libCLS more independen of HW
goal is to reuse libCLS on an diffrent MCU
This commit is contained in:
28
Application/CLS_BSP/CLS_BSP.c
Normal file
28
Application/CLS_BSP/CLS_BSP.c
Normal 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
|
||||
|
||||
|
||||
|
||||
53
Application/CLS_BSP/CLS_BSP.h
Normal file
53
Application/CLS_BSP/CLS_BSP.h
Normal 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);
|
||||
14
Application/CLS_BSP/CMakeLists.txt
Normal file
14
Application/CLS_BSP/CMakeLists.txt
Normal 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})
|
||||
Reference in New Issue
Block a user