GD32E508 CAN通讯问题
最近在使用E508在调试CAN通讯的时候根据V1.2.4的example配置CAN发送和接收时,CAN收发器使用的TJA1043(1)使用CANFD盒收数据能够收到数据,使用USBCANI的CAN盒时无法收到;
(2)当修改波特率为500K的时候两个CAN盒都收不到了;
(3)在调试CAN中断接收时,配置为RX FIFO0 no empty进入中断时,单步调试在能够接收到的上位机界面发送数据的时候,上位机发送数据,接收中断无法接收到任何信息,不进入中断。
static void can_config(void)
{
can_parameter_struct can_parameter;
can_filter_parameter_struct can_filter;
can_struct_para_init(CAN_INIT_STRUCT, &can_parameter);
/* initialize CAN register */
can_deinit(CAN0);
/* initialize CAN parameters */
can_parameter.time_triggered = DISABLE;
can_parameter.auto_bus_off_recovery = DISABLE;
can_parameter.auto_wake_up = DISABLE;
can_parameter.auto_retrans = DISABLE;
can_parameter.rec_fifo_overwrite = DISABLE;
can_parameter.trans_fifo_order = DISABLE;
can_parameter.working_mode = CAN_NORMAL_MODE;
/* baudrate 1Mbps, sample piont at 80% */
can_parameter.resync_jump_width = CAN_BT_SJW_1TQ;
can_parameter.time_segment_1 = CAN_BT_BS1_7TQ;
can_parameter.time_segment_2 = CAN_BT_BS2_2TQ;
can_parameter.prescaler = 9U;
/* initialize CAN */
can_init(CAN0, &can_parameter);
nvic_irq_enable(CAN0_RX0_IRQn, 0U, 0U);
/* enable can receive FIFO0 not empty interrupt */
can_interrupt_enable(CAN0, CAN_INTEN_RFNEIE0);
can_interrupt_enable(CAN0, CAN_INT_WERR);
can_interrupt_enable(CAN0, CAN_INT_PERR);
can_interrupt_enable(CAN0, CAN_INT_BO);
can_interrupt_enable(CAN0, CAN_INT_ERRN);
can_interrupt_enable(CAN0, CAN_INT_ERR);
can_interrupt_enable(CAN0, CAN_INT_WAKEUP);
can_interrupt_enable(CAN0, CAN_INT_SLPW);
}
void can_tx_rx_mailbox_init(void)
{
can_tx_mailbox_init(0xaabb,CAN_FF_EXTENDED,CAN_FT_DATA,8,&gTransmit_message);
can_rx_mailbox_init(0x20,CAN_FF_STANDARD,CAN_FT_DATA,8,0,&receive_message);
}
void CAN0_RX0_IRQHandler(void)
{
if(SET==can_interrupt_flag_get(CAN0, CAN_INT_FLAG_RFL0))
{
can_message_receive(CAN0, CAN_FIFO0, &receive_message);
}
} 你用逻辑分析仪挨个抓一下波形呗 你的盒子支不支持CANFD模式? 一般收不到数据可能是阻抗,可能是波特率不对导致 是不是哪里的端口没配置对啊 用示波器或者其他工具抓一下波形就好了 大致下位机跑飞了? 波特率太快了?导致的收不到? 可以考虑用其他can盒子试试呢? 你用USBcan的话收不到,是不是数据发的协议不对啊? 还是用示波器检测波形比较好用,知道是否发了数据 你全速运行的方式试试呢 用示波器抓一下波形看看 检查CAN收发器TJA1043的速率设置是否与您的配置相匹配。 检查USBCANI的CAN盒是否支持您所配置的CAN速率
页:
[1]