7#ifndef PHAL_G4_FDCAN_PRIV_H
8#define PHAL_G4_FDCAN_PRIV_H
12#include "stm32g474xx.h"
27typedef enum : uint32_t {
PHAL_FDCAN_BaudRate_t
Supported baud rates for PER F4 CAN HAL.
Definition can.h:38
static constexpr uint32_t FDCAN_PRIV_SRAMCAN_RF1_NBR
RX FIFO 0 Elements Number.
Definition fdcan_priv.h:37
static constexpr uint32_t FDCAN_PRIV_SRAMCAN_TFQSA
Definition fdcan_priv.h:71
PHAL_FDCAN_DefaultFilterAction_t
Definition fdcan_priv.h:27
@ FDCAN_PRIV_FILTER_REJECT
Definition fdcan_priv.h:29
@ FDCAN_PRIV_FILTER_ACCEPT_IN_RX_FIFO0
Definition fdcan_priv.h:28
static constexpr uint32_t FDCAN_PRIV_SRAMCAN_RF0SA
Definition fdcan_priv.h:65
static constexpr uint32_t FDCAN_PRIV_SRAMCAN_FLE_NBR
Max standard id filters.
Definition fdcan_priv.h:35
void PHAL_FDCAN_priv_writeStandardFilters(FDCAN_GlobalTypeDef *fdcan, const uint32_t *sid_list, uint32_t num_sid)
Set num_sid exact-match standard filters and forward to RX FIFO0.
Definition fdcan_priv.c:221
uint32_t PHAL_FDCAN_priv_getNBTP(PHAL_FDCAN_BaudRate_t bit_rate)
Definition fdcan_priv.c:181
static constexpr uint32_t FDCAN_PRIV_SRAMCAN_TEFSA
Definition fdcan_priv.h:67
void PHAL_FDCAN_priv_writeFilterAction(FDCAN_GlobalTypeDef *fdcan, PHAL_FDCAN_DefaultFilterAction_t action)
Write a filter action to RXGFC (accept/reject all)
Definition fdcan_priv.c:163
bool PHAL_FDCAN_priv_readTxFifoQueueStatusFullFlag(const FDCAN_GlobalTypeDef *fdcan)
Check whether the TX FIFO/Queue is full.
Definition fdcan_priv.c:392
void PHAL_FDCAN_priv_enableClock(void)
Enable FDCAN kernel + peripheral clocks (PCLK1)
Definition fdcan_priv.c:22
static constexpr uint32_t FDCAN_PRIV_SRAMCAN_TFQ_SIZE
Size in bytes of one TX FIFO/queue element (set by the hardware format)
Definition fdcan_priv.h:51
static constexpr uint32_t FDCAN_PRIV_RCC_FDCANCLKSOURCE_PCLK1
FDCAN clock is derived from PCLK1.
Definition fdcan_priv.h:23
void PHAL_FDCAN_priv_controlConfig(FDCAN_GlobalTypeDef *fdcan)
Definition fdcan_priv.c:83
static constexpr uint32_t FDCAN_PRIV_KER_CLK_HZ
Definition fdcan_priv.h:18
void PHAL_FDCAN_priv_clearReceiveFifo0NewMessageInterruptFlag(FDCAN_GlobalTypeDef *fdcan)
Clear the RX FIFO0 new message interrupt flag.
Definition fdcan_priv.c:407
bool PHAL_FDCAN_priv_readRxElement(FDCAN_GlobalTypeDef *fdcan, CanMsgTypeDef_t *msg)
Pop and decode the oldest element from RX FIFO0.
Definition fdcan_priv.c:337
static constexpr uint32_t FDCAN_PRIV_SRAMCAN_FLESA
Definition fdcan_priv.h:61
void PHAL_FDCAN_priv_setTransmitFifoQueueModeToFifo(FDCAN_GlobalTypeDef *fdcan)
Set TX FIFO/Queue mode to FIFO (not queue)
Definition fdcan_priv.c:118
static constexpr uint32_t FDCAN_PRIV_SRAMCAN_TEF_SIZE
Definition fdcan_priv.h:48
static constexpr uint32_t FDCAN_PRIV_SRAMCAN_FLE_SIZE
Definition fdcan_priv.h:42
static constexpr uint32_t FDCAN_PRIV_SRAMCAN_FLS_NBR
Definition fdcan_priv.h:34
static constexpr uint32_t FDCAN_PRIV_SRAMCAN_RF1SA
Definition fdcan_priv.h:66
void PHAL_FDCAN_priv_writeTxElement(FDCAN_GlobalTypeDef *fdcan, CanMsgTypeDef_t *msg)
Definition fdcan_priv.c:286
void PHAL_FDCAN_priv_exitConfig(FDCAN_GlobalTypeDef *fdcan)
Leave INIT mode, ending configuration. Blocks until left.
Definition fdcan_priv.c:72
bool PHAL_FDCAN_priv_readTransmitCompleteInterruptFlag(const FDCAN_GlobalTypeDef *fdcan)
Check whether the TX complete interrupt flag is set.
Definition fdcan_priv.c:413
void PHAL_FDCAN_priv_enterConfig(FDCAN_GlobalTypeDef *fdcan)
Enter INIT mode and unlock configuration registers. Blocks until entered.
Definition fdcan_priv.c:41
void PHAL_FDCAN_priv_writeExtendedFilters(FDCAN_GlobalTypeDef *fdcan, const uint32_t *xid_list, uint32_t num_xid)
Set num_xid exact-match extended filters and forward to RX FIFO0.
Definition fdcan_priv.c:250
uint32_t PHAL_FDCAN_priv_ramBase(const FDCAN_GlobalTypeDef *fdcan)
Base address of this peripheral's slice of shared message RAM.
Definition fdcan_priv.c:10
static constexpr uint32_t FDCAN_PRIV_SRAMCAN_FLS_SIZE
TX FIFO Elements Number.
Definition fdcan_priv.h:41
static constexpr uint32_t FDCAN_PRIV_SRAMCAN_RF0_NBR
Max extended id filters.
Definition fdcan_priv.h:36
static constexpr uint32_t FDCAN_PRIV_SRAMCAN_RF0_SIZE
Size in bytes of one RX FIFO 0 element (set by the hardware format)
Definition fdcan_priv.h:45
static constexpr uint32_t FDCAN_PRIV_SRAMCAN_TEF_NBR
RX FIFO 1 Elements Number.
Definition fdcan_priv.h:38
void PHAL_FDCAN_priv_clearTransmitCompleteInterruptFlag(FDCAN_GlobalTypeDef *fdcan)
Clear the TX complete interrupt flag.
Definition fdcan_priv.c:419
static constexpr uint32_t FDCAN_PRIV_SRAMCAN_TFQ_NBR
TX Event FIFO Elements Number.
Definition fdcan_priv.h:39
static constexpr uint32_t FDCAN_PRIV_SRAMCAN_FLSSA
Definition fdcan_priv.h:56
void PHAL_FDCAN_setInterruptLines(FDCAN_GlobalTypeDef *fdcan)
Set up RX new message -> line 0, TX complete -> line 1.
Definition fdcan_priv.c:126
static constexpr uint32_t FDCAN_PRIV_SRAMCAN_SIZE
Bytes required/consumed by one instance's full Message RAM layout (filters + RX FIFOs + TX event FIFO...
Definition fdcan_priv.h:74
static constexpr uint32_t FDCAN_PRIV_SRAMCAN_RF1_SIZE
Definition fdcan_priv.h:47
bool PHAL_FDCAN_priv_readReceiveFifo0NewMessageInterruptFlag(const FDCAN_GlobalTypeDef *fdcan)
Check whether the RX FIFO0 new message interrupt flag is set.
Definition fdcan_priv.c:399
Classic CAN frame.
Definition can.h:49