HC32F460怎么设置CAN的波特率
请问这个芯片CAN的波特率是怎么设置的啊,如果直接用外部的高速振荡器那频率不是8m了吗,can的速率最高才1m,还有例程里面配置can时钟的代码在哪里啊,找蒙蔽了{:cry:},手册里面的时钟树,计算公式都看了,但是在程序里面就是看不懂在哪里设置时钟的,求大哥们告知一下,多谢多谢 有大哥会吗,求解惑用户手册是这么描述的,也就是说,你把外部晶振使能后,他就自动作为CAN的时钟了,其他地方不需要你配置 wubangmi 发表于 2022-5-6 15:45
用户手册是这么描述的,也就是说,你把外部晶振使能后,他就自动作为CAN的时钟了,其他地方不需要你配置 ...
我也看到这个话了,但是不知道它的波特率到底是多大啊,我外部用的是8m晶振,模板给的PRESC是0,那算下来波特率有8m了{:dizzy:}, 而且要是改变波特率的话该怎么改啊,这样的话外部晶振不同的话波特率就不一样了啊,反正很懵逼
本帖最后由 请叫我污春 于 2022-5-6 16:05 编辑
C:\Users\FGC\Desktop
用户手册上有公式,你懵逼那就证明你没好好看,也没静下心来要把他搞明白,把这两个公式整合起来一起看就明白了。
说个明白的话就是。CAN波特率 = 外部晶振频率(比如8Mhz)/((SEG_1 + 2) + (SEG_2 + 1)) ;
SEG_1和 SEG_2和分频系数(PRESC)是你需要设置的。
至于采样点要怎么分配,配成多少合适,那就是另外一个话题了。 哈哈,经典啊,你懵逼就证明你没好好看。多看数据手册总是好的 //<<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了。 wubangmi 发表于 2022-5-6 16:17
用户手册上有公式,你懵逼那就证明你没好好看,也没静下心来要把他搞明白,把这两个公式整合起来一起看就 ...
确实是自己没有认真看数据手册,受教了,非常感谢您{:handshake:}{:handshake:} sagade 发表于 2022-5-6 16:28
1位要1/1M秒,换算成波特率就是1M了。
懂了,多谢{:biggrin:} 两只袜子 发表于 2022-5-6 16:20
哈哈,经典啊,你懵逼就证明你没好好看。多看数据手册总是好的
是的 需要单独的时钟源吗
得详细看看寄存器说明
想要设置多少的波特率啊 可以分频或者倍频嘛 解释的非常到位啊 用公式很方便 的
页:
[1]