GD32H7 CAN配置
时间: 2024-02-29 13:47:53 浏览: 381
GD32H7 BOOTLOAD
GD32H7是一款基于ARM Cortex-M4内核的微控制器,它支持CAN总线通信。下面是GD32H7 CAN配置的步骤:
1. 配置GPIO引脚,将CAN总线的RX和TX引脚连接到MCU的GPIO引脚上。
2. 配置CAN总线的时钟源,可以选择内部RC振荡器或外部晶振。如果选择外部晶振,需要根据实际情况调整HSE_STARTUP_TIMEOUT的值。
3. 配置CAN总线的工作模式,包括CAN总线的工作模式、波特率、传输模式等。
4. 配置CAN总线的过滤器,可以设置过滤器来过滤不需要的CAN帧。
5. 初始化CAN总线,并启动CAN总线。
下面是一个简单的GD32H7 CAN配置的代码示例:
```c
// 配置GPIO引脚
gpio_init(GPIOB, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_8 | GPIO_PIN_9);
// 配置CAN总线的时钟源
rcu_periph_clock_enable(RCU_CAN0);
can_deinit(CAN0);
can_struct_para_init(&can_init_struct);
can_init_struct.time_triggered_mode = DISABLE;
can_init_struct.auto_bus_off_recovery = ENABLE;
can_init_struct.auto_wake_up = DISABLE;
can_init_struct.auto_retrans = ENABLE;
can_init_struct.receive_fifo_locked = DISABLE;
can_init_struct.transmit_fifo_priority = DISABLE;
can_init_struct.working_mode = CAN_NORMAL_MODE;
can_init_struct.resync_jump_width = CAN_BT_SJW_1TQ;
can_init_struct.time_segment_1 = CAN_BT_BS1_11TQ;
can_init_struct.time_segment_2 = CAN_BT_BS2_4TQ;
can_init_struct.prescaler = 3;
can_init(CAN0, &can_init_struct);
// 配置CAN总线的过滤器
can_filter_struct_para_init(&can_filter_init_struct);
can_filter_init_struct.filter_number = 0;
can_filter_init_struct.filter_mode = CAN_FILTERMODE_IDMASK;
can_filter_init_struct.filter_scale = CAN_FILTERSCALE_32BIT;
can_filter_init_struct.filter_id_high = 0x0000;
can_filter_init_struct.filter_id_low = 0x0000;
can_filter_init_struct.filter_mask_id_high = 0x0000;
can_filter_init_struct.filter_mask_id_low = 0x0000;
can_filter_init_struct.filter_fifo_number = CAN_FIFO0;
can_filter_init_struct.filter_enable = ENABLE;
can_filter_init(CAN0, &can_filter_init_struct);
// 初始化CAN总线,并启动CAN总线
can_enable(CAN0);
```
阅读全文