PER Firmware
Loading...
Searching...
No Matches
can.h
Go to the documentation of this file.
1
12#ifndef _PHAL_CAN_H
13#define _PHAL_CAN_H
14
16
17#define PHAL_CAN_TX_TIMEOUT (5000U)
18#define PHAL_CAN_INIT_TIMEOUT (5000U)
19
20// Bit timing recovered from http://www.bittiming.can-wiki.info/
21
22#define PHAL_CAN_16MHz_1M (0x033a0000)
23#define PHAL_CAN_24MHz_1M (0x03270001)
24#define PHAL_CAN_36MHz_1M (0x033c0001)
25#define PHAL_CAN_42MHz_1M (0x034e0001)
26
27#define PHAL_CAN_16MHz_500k (0x033a0001) // sample point = 75%, SJW = 4
28#define PHAL_CAN_24MHz_500k (0x033a0002) // sample point = 75%, SJW = 4
29#define PHAL_CAN_36MHz_500k (0x03270005)
30#define PHAL_CAN_42MHz_500k (0x034e0003) // sample point = 75%, SJW = 4
31
32#define PHAL_CAN_16MHz_250k (0x003a0003) // sample point = 75%
33#define PHAL_CAN_24MHz_250k (0x003a0005) // sample point = 75%
34#define PHAL_CAN_36MHz_250k (0x003a0008) // sample point = 75%
38typedef enum : uint32_t {
39 FDCAN_BAUD_250K = 250000U,
40 FDCAN_BAUD_500K = 500000U,
41 FDCAN_BAUD_1M = 1000000U
43
49typedef struct {
50 CAN_TypeDef* Bus;
52 bool IDE;
53 union {
54 uint16_t StdId;
55 uint32_t ExtId;
56 };
57 uint8_t DLC;
58 uint8_t Data[8];
60
70bool PHAL_initCAN(CAN_TypeDef* bus, bool test_mode, uint32_t bit_rate);
71
72bool PHAL_deinitCAN(CAN_TypeDef* bus);
73
83bool PHAL_txCANMessage(CanMsgTypeDef_t* msg, uint8_t mbx);
84bool PHAL_txMailboxFree(CAN_TypeDef* bus, uint8_t mbx);
85void PHAL_txCANAbort(CAN_TypeDef* bus, uint8_t mbx);
86bool PHAL_rxCANMessage(CAN_TypeDef *bus, uint8_t fifo, CanMsgTypeDef_t *msg);
87bool PHAL_anyTxMailboxFree(CAN_TypeDef* bus);
88bool PHAL_getFreeTxMailbox(CAN_TypeDef* bus, uint8_t* mbx);
89extern void PHAL_CAN_rxCallback(CanMsgTypeDef_t *msg);
90extern void PHAL_CAN_txCallback(CAN_TypeDef *can);
91
92#endif // _PHAL_CAN_H
bool PHAL_anyTxMailboxFree(CAN_TypeDef *bus)
Definition can.c:227
bool PHAL_rxCANMessage(CAN_TypeDef *bus, uint8_t fifo, CanMsgTypeDef_t *msg)
Definition can.c:262
void PHAL_txCANAbort(CAN_TypeDef *bus, uint8_t mbx)
Definition can.c:246
bool PHAL_txCANMessage(CanMsgTypeDef_t *msg, uint8_t mbx)
Find an empty TX mailbox and transmit a CAN message if one is found. Function will block until sucess...
Definition can.c:160
bool PHAL_txMailboxFree(CAN_TypeDef *bus, uint8_t mbx)
Definition can.c:214
PHAL_FDCAN_BaudRate_t
Supported baud rates for PER F4 CAN HAL.
Definition can.h:38
@ FDCAN_BAUD_1M
Definition can.h:41
@ FDCAN_BAUD_500K
Definition can.h:40
@ FDCAN_BAUD_250K
Definition can.h:39
bool PHAL_initCAN(CAN_TypeDef *bus, bool test_mode, uint32_t bit_rate)
Initilize CAN peripheral to bit_rate.
Definition can.c:15
void PHAL_CAN_txCallback(CAN_TypeDef *can)
Definition can.c:342
bool PHAL_getFreeTxMailbox(CAN_TypeDef *bus, uint8_t *mbx)
Definition can.c:231
bool PHAL_deinitCAN(CAN_TypeDef *bus)
Definition can.c:146
void PHAL_CAN_rxCallback(CanMsgTypeDef_t *msg)
Definition can.c:347
Classic CAN frame.
Definition can.h:49
uint32_t ExtId
Definition can.h:55
CAN_TypeDef * Bus
Definition can.h:50
uint8_t DLC
Definition can.h:57
uint16_t StdId
Definition can.h:54
bool IDE
Definition can.h:52