打印

GD32F303RCT6 CAN 125k 波特率以上没法工作

[复制链接]
714|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
CAN 配置125k 及一下都可正常收发 125k 以上CAN无法收发数据请大佬帮忙看下


void CAN0_Config(u16 CAN_BAUDRATE)
{
    can_parameter_struct            can_parameter;
    can_filter_parameter_struct     can_filter;

    can_struct_para_init(CAN_INIT_STRUCT, &can_parameter);
    can_struct_para_init(CAN_FILTER_STRUCT, &can_filter);

    /* initialize CAN register */
    can_deinit(CAN0);

    /* initialize CAN parameters */
    can_parameter.time_triggered = DISABLE;
    can_parameter.auto_bus_off_recovery = ENABLE;
    can_parameter.auto_wake_up = DISABLE;
    can_parameter.auto_retrans = ENABLE;
    can_parameter.rec_fifo_overwrite = DISABLE;
    can_parameter.trans_fifo_order = DISABLE;

    can_parameter.working_mode = CAN_NORMAL_MODE;
    can_parameter.resync_jump_width = CAN_BT_SJW_1TQ;
//    can_parameter.time_segment_1 = CAN_BT_BS1_8TQ;
//    can_parameter.time_segment_2 = CAN_BT_BS2_1TQ;
    can_parameter.time_segment_1 = CAN_BT_BS1_8TQ;
    can_parameter.time_segment_2 = CAN_BT_BS2_1TQ;

    /* 1MBps */
    if (CAN_BAUDRATE == 1000)     //AHB1 主频60M / 1000
    {
        can_parameter.prescaler = 6;
    }
    /* 500KBps */
    else if (CAN_BAUDRATE == 500) //AHB1 主频60M / 500
    {
        can_parameter.prescaler = 12;
    }
    /* 250KBps */
    else if (CAN_BAUDRATE == 250) //AHB1 主频60M / 250
    {
        can_parameter.prescaler = 24;
    }
    /* 125KBps */
    else if (CAN_BAUDRATE == 125) //AHB1 主频60M / (SJW+BS1+BS2)/ prescaler
    {
        can_parameter.prescaler = 48;
    }
    /* 100KBps */
    else if (CAN_BAUDRATE == 100) //AHB1 主频60M / 100
    {
        can_parameter.prescaler = 60;
    }
    /* 50KBps */
    else if (CAN_BAUDRATE == 50)
    {
        can_parameter.prescaler = 120;
    }
    /* 20KBps */
    else if (CAN_BAUDRATE == 20)
    {
        can_parameter.prescaler = 300;
    }

    /* initialize CAN */
    can_init(CAN0, &can_parameter);

    /* initialize filter */
    can_filter.filter_number = 0;
    can_filter.filter_mode = CAN_FILTERMODE_MASK;
    can_filter.filter_bits = CAN_FILTERBITS_32BIT;
    can_filter.filter_list_high = 0x0000;
    can_filter.filter_list_low = 0x0000;
    can_filter.filter_mask_high = 0x0000;
    can_filter.filter_mask_low = 0x0000;
    can_filter.filter_fifo_number = CAN_FIFO1;
    can_filter.filter_enable = ENABLE;

    can_filter_init(&can_filter);
}

使用特权

评论回复
沙发
369122197| | 2023-5-5 12:23 | 只看该作者
303RCT6用户还挺多

使用特权

评论回复
板凳
elephant00| | 2024-2-7 16:33 | 只看该作者
时钟配置有误

使用特权

评论回复
地板
两只袜子| | 2024-2-7 16:34 | 只看该作者
可能是总线负载

使用特权

评论回复
5
jcky001| | 2024-2-7 16:34 | 只看该作者
确保您连接的CAN收发器(如果有的话)支持您设置的波特率。有些收发器可能不支持非常高的波特率。

使用特权

评论回复
6
cr315| | 2024-2-7 16:35 | 只看该作者
中断和DMA通道是否已正确配置并且没有冲突。

使用特权

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

本版积分规则

3

主题

6

帖子

0

粉丝