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
15#include "common/phal_F4_F7/phal_F4_F7.h"
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#define PHAL_CAN_16MHz_500k (0x033a0001) // sample point = 75%, SJW = 4
22#define PHAL_CAN_24MHz_500k (0x033a0002) // sample point = 75%, SJW = 4
23#define PHAL_CAN_36MHz_500k (0x03270005)
24#define PHAL_CAN_42MHz_500k (0x034e0003) // sample point = 75%, SJW = 4
25
26#define PHAL_CAN_16MHz_250k (0x003a0003) // sample point = 75%
27#define PHAL_CAN_24MHz_250k (0x003a0005) // sample point = 75%
28#define PHAL_CAN_36MHz_250k (0x003a0008) // sample point = 75%
29
30typedef struct
31{
32 CAN_TypeDef* Bus;
33 uint16_t StdId;
34 uint32_t ExtId;
35 uint32_t IDE;
36 uint32_t DLC;
37 uint8_t Data[8];
39
49bool PHAL_initCAN(CAN_TypeDef* bus, bool test_mode, uint32_t bit_rate);
50
51bool PHAL_deinitCAN(CAN_TypeDef* bus);
52
62bool PHAL_txCANMessage(CanMsgTypeDef_t* msg, uint8_t mbx);
63bool PHAL_txMailboxFree(CAN_TypeDef* bus, uint8_t mbx);
64void PHAL_txCANAbort(CAN_TypeDef* bus, uint8_t mbx);
65bool PHAL_rxCANMessage(CAN_TypeDef *bus, uint8_t fifo, CanMsgTypeDef_t *msg);
66
67#endif // _PHAL_CAN_H
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:138
bool PHAL_initCAN(CAN_TypeDef *bus, bool test_mode, uint32_t bit_rate)
Initilize CAN peripheral to bit_rate.
Definition can.c:15
Definition can.h:31
uint32_t ExtId
Definition can.h:34
CAN_TypeDef * Bus
Definition can.h:32
uint32_t DLC
Definition can.h:36
uint16_t StdId
Definition can.h:33
uint32_t IDE
Definition can.h:35