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