1. CAN位时间参数配置的核心原理
CAN总线通信的稳定性很大程度上取决于位时间参数的合理配置。位时间(Bit Time)指的是在总线上传输一个数据位所需要的时间,它是波特率的倒数。比如500Kbps的波特率对应的位时间就是2微秒(1/500000 = 0.000002秒)。
位时间由几个关键部分组成,每个部分都以时间量子(Time Quantum, TQ)为单位。TQ是CAN控制器能够处理的最小时间单位,其计算公式为:TQ = (Prescaler) / Fcan,其中Prescaler是预分频系数,Fcan是CAN控制器的输入时钟频率。
一个完整的位时间包含四个段:
- 同步段(Sync Seg):固定为1个TQ,用于节点间的时钟同步
- 传播时间段(Prop Seg):用于补偿网络中的物理延迟
- 相位缓冲段1(Phase Seg1):用于对抗信号抖动
- 相位缓冲段2(Phase Seg2):同样用于对抗信号抖动
采样点通常位于相位缓冲段1的结束位置,ISO 11898协议推荐将其设置在位时间的75%-82%之间。这个位置的选择很关键——太靠前容易受到信号抖动影响,太靠后则可能错过数据变化。
我在实际项目中发现,很多通信不稳定问题都源于采样点设置不当。有一次调试500Kbps的CAN网络,采样点设置在78%时通信很稳定,但改为85%后就开始出现偶发的校验错误。这就是因为采样点过于靠后,错过了某些节点的信号变化边缘。
2. 预分频系数与波特率的精确计算
预分频系数(Prescaler)是连接控制器时钟与波特率的桥梁。它的计算公式为:Prescaler = Fcan / (波特率 × TQ总数)。其中TQ总数 = 1(Sync Seg) + Prop Seg + Phase Seg1 + Phase Seg2。
以TC275芯片为例,其CAN控制器时钟频率为80MHz。如果要配置500Kbps的波特率,假设TQ总数为16,那么预分频系数 = 80,000,000 / (500,000 × 16) = 10。这意味着需要将预分频寄存器设
330



被折叠的 条评论
为什么被折叠?



