"); //-->
在CAN总线系统中,波特率的计算是一个关键步骤,它确保网络上的所有设备能够以相同的速率进行通信。
1
理论
波特率的计算涉及到几个关键参数,包括CAN控制器的时钟频率、分频因子、以及位时间的不同部分。
时钟频率(Fclk)
CAN控制器的时钟频率。
这是CAN模块的输入时钟,通常来自于微控制器的主时钟。
分频因子(Prescaler)
用于从主时钟频率中分频得到位时间计数器的时钟频率。
分频因子可以增大位时间,使得CAN总线能够在较低的波特率下工作。
位时间(Bit Time)
位时间由几个部分组成,总共需要满足规定的时间量子(Time Quanta,TQ)数:
同步段(Sync Seg):
用于同步不同节点上的数据边缘,固定为1 TQ。
传播时间段(Prop Seg):
用于补偿网络中的物理延迟,长度可以调整。
相位缓冲段1(Phase Seg1)和相位缓冲段2(Phase Seg2):
用于对抗信号抖动和网络延迟,长度可调。
基于上述参数,CAN波特率的计算公式如下:
波特率 = Fclk / (Prescaler * Bit Time)
其中,Bit Time = Sync Seg + Prop Seg + Phase Seg1 + Phase Seg2。
假设一个CAN控制器有如下参数:
Fclk = 16 MHz
Prescaler = 8
Sync Seg = 1 TQ
Prop Seg = 2 TQ
Phase Seg1 = 3 TQ
Phase Seg2 = 2 TQ
Bit Time = 1 + 2 + 3 + 2 = 8 TQ
则波特率为:
波特率 = 16 MHz / (8 * 8 TQ) = 16,000,000 / 64 = 250,000 bps (或250 kbps)
2
实践
以AT32F413这款MCU为例,CAN波特率计算公式如下所示:
CAN 总线的额定位时间由 3 部分组成:
1、同步段(SYNC_SEG),该段占用 1 时间单元,即公式中的1 x t
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。