PER Firmware
Loading...
Searching...
No Matches
fdcan.h
Go to the documentation of this file.
1
7#ifndef PHAL_G4_FDCAN_H
8#define PHAL_G4_FDCAN_H
9
10#include <stdint.h>
11
12#include "stm32g474xx.h"
13
14static constexpr uint32_t PHAL_FDCAN_MAX_NUM_SID_FILTER = 28;
15static constexpr uint32_t PHAL_FDCAN_MAX_NUM_XID_FILTER = 8;
16
22typedef struct {
23 FDCAN_GlobalTypeDef* Bus;
25 bool IDE;
26 union {
27 uint16_t StdId;
28 uint32_t ExtId;
29 };
30 uint8_t DLC;
31 uint8_t Data[8];
33
37typedef enum : uint32_t {
38 FDCAN_BAUD_250K = 250000U,
39 FDCAN_BAUD_500K = 500000U,
40 FDCAN_BAUD_1M = 1000000U
42
43
58void PHAL_FDCAN_init(FDCAN_GlobalTypeDef *fdcan, PHAL_FDCAN_BaudRate_t bit_rate);
59
76 FDCAN_GlobalTypeDef *fdcan,
77 const uint32_t *sid_list,
78 uint32_t num_sid,
79 const uint32_t *xid_list,
80 uint32_t num_xid
81);
82
93
99bool PHAL_FDCAN_txFifoFree(const FDCAN_GlobalTypeDef *fdcan);
100
111extern void PHAL_FDCAN_rxCallback(CanMsgTypeDef_t *msg);
112
122extern void PHAL_FDCAN_txCallback(FDCAN_GlobalTypeDef *fdcan);
123
124
125#endif // PHAL_G4_FDCAN_H
PHAL_FDCAN_BaudRate_t
Supported baud rates for PER F4 CAN HAL.
Definition can.h:38
bool PHAL_FDCAN_txFifoFree(const FDCAN_GlobalTypeDef *fdcan)
Check whether the TX FIFO has at least one free slot.
Definition fdcan.c:66
static constexpr uint32_t PHAL_FDCAN_MAX_NUM_SID_FILTER
Definition fdcan.h:14
bool PHAL_FDCAN_send(CanMsgTypeDef_t *msg)
Queue a frame for transmission.
Definition fdcan.c:70
void PHAL_FDCAN_txCallback(FDCAN_GlobalTypeDef *fdcan)
Weak callback fired when a queued frame finishes transmitting.
Definition fdcan.c:108
void PHAL_FDCAN_rxCallback(CanMsgTypeDef_t *msg)
Weak callback fired once per received frame.
Definition fdcan.c:103
PHAL_FDCAN_BaudRate_t
Supported baud rates for PER G4 FDCAN HAL.
Definition fdcan.h:37
@ FDCAN_BAUD_1M
Definition fdcan.h:40
@ FDCAN_BAUD_500K
Definition fdcan.h:39
@ FDCAN_BAUD_250K
Definition fdcan.h:38
void PHAL_FDCAN_init(FDCAN_GlobalTypeDef *fdcan, PHAL_FDCAN_BaudRate_t bit_rate)
Initialize an FDCAN peripheral for classic (non-FD) CAN operation.
Definition fdcan.c:14
bool PHAL_FDCAN_setFilters(FDCAN_GlobalTypeDef *fdcan, const uint32_t *sid_list, uint32_t num_sid, const uint32_t *xid_list, uint32_t num_xid)
Configure exact-match acceptance filters for RX FIFO0.
Definition fdcan.c:37
static constexpr uint32_t PHAL_FDCAN_MAX_NUM_XID_FILTER
Definition fdcan.h:15
Classic CAN frame.
Definition can.h:49
FDCAN_GlobalTypeDef * Bus
Definition fdcan.h:23