请叫我污春 发表于 2022-5-6 14:51

HC32F460怎么设置CAN的波特率

请问这个芯片CAN的波特率是怎么设置的啊,如果直接用外部的高速振荡器那频率不是8m了吗,can的速率最高才1m,还有例程里面配置can时钟的代码在哪里啊,找蒙蔽了{:cry:},手册里面的时钟树,计算公式都看了,但是在程序里面就是看不懂在哪里设置时钟的,求大哥们告知一下,多谢多谢

请叫我污春 发表于 2022-5-6 14:57

有大哥会吗,求解惑

wubangmi 发表于 2022-5-6 15:45


用户手册是这么描述的,也就是说,你把外部晶振使能后,他就自动作为CAN的时钟了,其他地方不需要你配置

请叫我污春 发表于 2022-5-6 16:00

wubangmi 发表于 2022-5-6 15:45
用户手册是这么描述的,也就是说,你把外部晶振使能后,他就自动作为CAN的时钟了,其他地方不需要你配置 ...

我也看到这个话了,但是不知道它的波特率到底是多大啊,我外部用的是8m晶振,模板给的PRESC是0,那算下来波特率有8m了{:dizzy:}, 而且要是改变波特率的话该怎么改啊,这样的话外部晶振不同的话波特率就不一样了啊,反正很懵逼

请叫我污春 发表于 2022-5-6 16:04

本帖最后由 请叫我污春 于 2022-5-6 16:05 编辑


C:\Users\FGC\Desktop

wubangmi 发表于 2022-5-6 16:17


用户手册上有公式,你懵逼那就证明你没好好看,也没静下心来要把他搞明白,把这两个公式整合起来一起看就明白了。
说个明白的话就是。CAN波特率 = 外部晶振频率(比如8Mhz)/((SEG_1 + 2) + (SEG_2 + 1)) ;
SEG_1和 SEG_2和分频系数(PRESC)是你需要设置的。
至于采样点要怎么分配,配成多少合适,那就是另外一个话题了。

两只袜子 发表于 2022-5-6 16:20

哈哈,经典啊,你懵逼就证明你没好好看。多看数据手册总是好的

sagade 发表于 2022-5-6 16:28

//<<Can bit time config
    stcCanInitCfg.stcCanBt.PRESC = 1u-1u;
    stcCanInitCfg.stcCanBt.SEG_1 = 5u-2u;
    stcCanInitCfg.stcCanBt.SEG_2 = 3u-1u;
    stcCanInitCfg.stcCanBt.SJW   = 3u-1u;
        /*
        Fcanclk = XTAL_VALUE = 8M
        TQ = (PRESC+1) / Fcanclk = 1 / 8M
        BT = tseg1 + tseg2 = ((SEG_1+2) + (SEG_2+1)) * TQ = (5+3) * (1/8Mhz) = 1/1M
        */1位要1/1M秒,换算成波特率就是1M了。

请叫我污春 发表于 2022-5-6 16:28

wubangmi 发表于 2022-5-6 16:17
用户手册上有公式,你懵逼那就证明你没好好看,也没静下心来要把他搞明白,把这两个公式整合起来一起看就 ...

确实是自己没有认真看数据手册,受教了,非常感谢您{:handshake:}{:handshake:}

请叫我污春 发表于 2022-5-6 17:12

sagade 发表于 2022-5-6 16:28
1位要1/1M秒,换算成波特率就是1M了。

懂了,多谢{:biggrin:}

请叫我污春 发表于 2022-5-6 17:13

两只袜子 发表于 2022-5-6 16:20
哈哈,经典啊,你懵逼就证明你没好好看。多看数据手册总是好的

是的

qcliu 发表于 2022-6-2 17:31

需要单独的时钟源吗

coshi 发表于 2022-6-2 17:45

得详细看看寄存器说明

tpgf 发表于 2022-6-2 18:26

想要设置多少的波特率啊

drer 发表于 2022-6-2 18:34

可以分频或者倍频嘛

wiba 发表于 2022-6-2 18:48

解释的非常到位啊

kxsi 发表于 2022-6-2 18:59

用公式很方便 的
页: [1]
查看完整版本: HC32F460怎么设置CAN的波特率