|
手头有个别人写的程序,20M的晶振,1M/位 计算的CAN寄存器写的是:CAN0DATH:CAN0DATL = 0X5CC3
但是我现在计算出来的是0X5CC0,通讯不通, 5cc3通讯正常。不清楚他怎么算的,我的按照说明算的如下:
我用的20.0M晶振,设置传输速率位1M/秒。我计算出来是0X5CC0,但是通讯不通,请教各位我计算的对吗?
SYSCLK=20m
CAN时钟周期 =50ns
CAN时间量子 = 50ns
总线长度 2m
传输延时时间:400ns
波特率预分频器(BRP):不分频
传输速率位1M/秒 = 1000ns
求得位时间为:1000/50 = 20 tq
则Sync_Seg固定=1 tq
Prop_Seg = 400/50=8tq
Phase_Seg1 + Phase_Seg2 = 位时间 – ( Sync_Seg + Prop_Seg) = 20-1-8=11
Phase_Seg2 = Phase_Seg1 + 1
Phase_Seg2 = 6
Phase_Seg1 = 5
SJW = min ( 4, Phase_Seg1) = 4
BRPE = BRP – 1 = BRP扩展寄存器= 0x0000
SJWp = SJW – 1 = min (4, 6) – 1 = 3
TSEG1 = (Prop_Seg + Phase_Seg1 – 1) = 8+ 5 – 1 = 12
TSEG2 = (Phase_Seg2 – 1) = 6-1=5
位时间寄存器 = TSEG2 * 0x1000 + TSEG1 * 0x0100 + SJWp * 0x0040 +BRPE
=5* 0x1000+12*0x0100 +3*0x0040
=0x5000+C00+C0
=0X5CC0;
但是通讯不通,请教下会的人 |
阿莫论坛20周年了!感谢大家的支持与爱护!!
现在可以确认前几天特朗普说乌克兰有几千军队在库尔斯克被俄军包围的事情纯属子虚乌有。这种张嘴就来的垃圾就是如今美利坚的总统。 大多数美国人选择了特朗普。美国已经成了无耻流氓国家。所以,大多数美国人就是无耻流氓。论证完毕! 无耻流氓国家,还有什么恶心的事情做不出来?!
|