HC32F4A0单片机的CAN接口波特率等配置说明

不想看书的小伙伴可以直接用。

系统时钟240000000外部晶振8M,120倍频,再4分频
CAN时钟400000006分频
u32Prescaler20CAN位时钟=CAN时钟/u32Prescaler
2000000 = 40000000 / 20
u32TimeSeg115波特率100Khz
=CAN位时钟/(u32TimeSeg1+u32TimeSeg2)
u32TimeSeg25
u32SJW5采样点位置75%=5/(5+15)

参考代码如下:

static void CanInitConfig(uint8_t chn)
{
    stc_can_init_t stcCanInit;
    stc_can_filter_config_t astcFilter[CAN_FILTER_NUM] = {
        {CAN_FILTER1_ID, CAN_FILTER1_ID_MASK, CAN_FILTER1_ID_TYPE},
        {CAN_FILTER2_ID, CAN_FILTER2_ID_MASK, CAN_FILTER2_ID_TYPE},
        {CAN_FILTER3_ID, CAN_FILTER3_ID_MASK, CAN_FILTER3_ID_TYPE},
    };

    /* Initializes CAN. */
    (void)CAN_StructInit(&stcCanInit);
    stcCanInit.stcBitCfg.u32Prescaler = 20U;//2= 1000K, 4=500K, 8=250, 20 =100K 
    stcCanInit.stcBitCfg.u32TimeSeg1  = 15U;
    stcCanInit.stcBitCfg.u32TimeSeg2  = 5U;
    stcCanInit.stcBitCfg.u32SJW       = 5U;
    stcCanInit.pstcFilter             = astcFilter;
    stcCanInit.u16FilterSelect        = CAN_FILTER_SEL;
    stcCanInit.u8WorkMode             = CAN_WORK_MD_NORMAL;//正常模式

    if (!chn)
    {
        /* Enable peripheral clock of CAN. */
        FCG_Fcg1PeriphClockCmd(CAN1_PERIPH_CLK, ENABLE);
        (void)CAN_Init(CAN1_UNIT, &stcCanInit);
        /* Enable the interrupts, the status flags can be read. */
        CAN_IntCmd(CAN1_UNIT, CAN_INT_ALL, DISABLE);
        /* Enalbe the interrupts that needed. */
        CAN_IntCmd(CAN1_UNIT, CAN_INT_SEL, ENABLE);
    }
    else
    {
        /* Enable peripheral clock of CAN. */
        FCG_Fcg1PeriphClockCmd(CAN2_PERIPH_CLK, ENABLE);
        (void)CAN_Init(CAN2_UNIT, &stcCanInit);
        /* Enable the interrupts, the status flags can be read. */
        CAN_IntCmd(CAN2_UNIT, CAN_INT_ALL, DISABLE);
        /* Enalbe the interrupts that needed. */
        CAN_IntCmd(CAN2_UNIT, CAN_INT_SEL, ENABLE);

    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值