打印

GD32E508 CAN通讯问题

[复制链接]
1124|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lilibing58|  楼主 | 2023-6-25 14:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近在使用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);
        }
}

使用特权

评论回复
沙发
liu96jp| | 2023-10-24 12:03 | 只看该作者
你用逻辑分析仪挨个抓一下波形呗

使用特权

评论回复
板凳
chenqianqian| | 2023-10-24 12:30 | 只看该作者
你的盒子支不支持CANFD模式?

使用特权

评论回复
地板
g0d5xs| | 2023-10-24 13:09 | 只看该作者
一般收不到数据可能是阻抗,可能是波特率不对导致

使用特权

评论回复
5
q1ngt12| | 2023-10-24 14:34 | 只看该作者
是不是哪里的端口没配置对啊

使用特权

评论回复
6
y1n9an| | 2023-10-24 15:38 | 只看该作者
用示波器或者其他工具抓一下波形就好了

使用特权

评论回复
7
w2nme1ai7| | 2023-10-24 19:41 | 只看该作者
大致下位机跑飞了?

使用特权

评论回复
8
q1d0mnx| | 2023-10-24 21:05 | 只看该作者
波特率太快了?导致的收不到?

使用特权

评论回复
9
zhizia4f| | 2023-10-25 07:02 | 只看该作者
可以考虑用其他can盒子试试呢?

使用特权

评论回复
10
kaif2n9j| | 2023-10-25 08:17 | 只看该作者
你用USBcan的话收不到,是不是数据发的协议不对啊?

使用特权

评论回复
11
d1ng2x| | 2023-10-25 10:39 | 只看该作者
还是用示波器检测波形比较好用,知道是否发了数据

使用特权

评论回复
12
lix1yr| | 2023-10-25 12:55 | 只看该作者
你全速运行的方式试试呢

使用特权

评论回复
13
SantaBunny| | 2023-10-31 22:00 | 只看该作者
用示波器抓一下波形看看

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

10

帖子

1

粉丝