看了很多资料,都迷迷糊糊的。
CAN总线有两个定时器。
定时寄存器0的位
7 6 5 4 3 2 1 0
SJW.1 SJW.0 BRP.5 BRP.4 BRP.3 BRP.2 BRP.1 BRP.0
定时寄存器1的位
7 6 5 4 3 2 1 0
SAM TSEG2.2 TSEG2.1 TSEG2.0 TSEG1.3 TSEG1.2 TSEG1.1 TSEG1.0
CAN系统时钟公式
tscl=2*tclk*(32*BRP.5+16*BRP.4+8*BRP.3+4*BRP.2+2*BRP.1+BRP.0+1)
其中tclk=1/晶振频率
同步跳转宽度 tSJW="tscl"*(2*SJW.1+SJW.0+1)
位周期T=tSYNCSEG+tTSEG1+tTSEG2
tTSEG1=tscl*(8*TSEG1.3+4*TSEG1.2+2*TSEG1.1+TSEG1.0+1)
tTSEG2=tscl*(4*TSEG2.2+2*TSEG2.1+TSEG2.0+1)
比如定时器0为0x31 定时器1为0x1c,那么波特率为10K
周立功有篇文章就是讲这个的,这个和整个系统的优化有很大的关系的。