1 /* 2 * Copyright (c) 2006-2021, RT-Thread Development Team 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 * 6 * Change Logs: 7 * Date Author Notes 8 * 2024-08-30 shelton first version 9 */ 10 11 #ifndef __DRV_CAN_H__ 12 #define __DRV_CAN_H__ 13 14 #ifdef __cplusplus 15 extern "C" { 16 #endif 17 18 #include <rtdevice.h> 19 #include <rtthread.h> 20 #include "drv_common.h" 21 22 #define CANFD_DATA_1MBaud (1*1000*1000UL) 23 #define CANFD_DATA_2MBaud (2*1000*1000UL) 24 #define CANFD_DATA_3MBaud (3*1000*1000UL) 25 #define CANFD_DATA_4MBaud (4*1000*1000UL) 26 #define CANFD_DATA_5MBaud (5*1000*1000UL) 27 #define CANFD_DATA_6MBaud (6*1000*1000UL) 28 29 struct at32_baud_rate 30 { 31 rt_uint32_t baud_rate; 32 rt_uint8_t div; 33 rt_uint8_t rsaw_size; 34 rt_uint16_t bts1_size; 35 rt_uint8_t bts2_size; 36 }; 37 38 struct at32_baud_rate_fd 39 { 40 rt_uint32_t baud_rate; 41 rt_uint8_t div; 42 rt_uint8_t rsaw_size; 43 rt_uint16_t bts1_size; 44 rt_uint8_t bts2_size; 45 rt_uint16_t ssoffset; 46 }; 47 48 /* at32 can device */ 49 struct at32_can 50 { 51 char *name; 52 can_type *can_x; 53 IRQn_Type tx_irqn; 54 IRQn_Type rx_irqn; 55 IRQn_Type stat_irqn; 56 IRQn_Type err_irqn; 57 uint8_t enable_canfd; 58 can_bittime_type bittime_init_struct; 59 can_filter_config_type filter_init_struct; 60 struct rt_can_device device; /* inherit from can device */ 61 }; 62 63 int rt_hw_can_init(void); 64 65 #ifdef __cplusplus 66 } 67 #endif 68 69 #endif /*__DRV_CAN_H__ */ 70 71 /************************** end of file ******************/ 72