123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- #ifndef __DRIVERS_CAN_H__
- #define __DRIVERS_CAN_H__
- #include <stdint.h>
- #include "CAN_config.h"
- #ifdef __cplusplus
- extern "C" {
- #endif
- typedef enum {
- CAN_frame_std = 0,
- CAN_frame_ext = 1
- } CAN_frame_format_t;
- typedef enum {
- CAN_no_RTR = 0,
- CAN_RTR = 1
- } CAN_RTR_t;
- typedef union {
- uint32_t U;
- struct {
- uint8_t DLC : 4;
- unsigned int unknown_2 : 2;
- CAN_RTR_t RTR : 1;
- CAN_frame_format_t FF : 1;
- unsigned int reserved_24 : 24;
- } B;
- } CAN_FIR_t;
- typedef struct {
- CAN_FIR_t FIR;
- uint32_t MsgID;
- union {
- uint8_t u8[8];
- uint32_t u32[2];
- uint64_t u64;
- } data;
- } CAN_frame_t;
- typedef enum {
- Dual_Mode=0,
- Single_Mode=1
- } CAN_filter_mode_t;
- typedef struct {
- CAN_filter_mode_t FM:1;
- uint8_t ACR0;
- uint8_t ACR1;
- uint8_t ACR2;
- uint8_t ACR3;
- uint8_t AMR0;
- uint8_t AMR1;
- uint8_t AMR2;
- uint8_t AMR3;
- } CAN_filter_t;
- int CAN_init(void);
- int CAN_write_frame(const CAN_frame_t *p_frame);
- int CAN_stop(void);
- int CAN_config_filter(const CAN_filter_t* p_filter);
- #ifdef __cplusplus
- }
- #endif
- #endif
|