电子产业一站式赋能平台

PCB联盟网

搜索
查看: 348|回复: 0
收起左侧

如何计算CAN通信波特率

[复制链接]

732

主题

732

帖子

3482

积分

四级会员

Rank: 4

积分
3482
发表于 2024-1-8 12:01:00 | 显示全部楼层 |阅读模式

qzqkni4docl64051146.gif

qzqkni4docl64051146.gif

点击上方蓝色字体,关注我们
在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波特率计算公式如下所示:

    rgbpvfy3t1h64051246.png

    rgbpvfy3t1h64051246.png


    CAN 总线的额定位时间由 3 部分组成:
    1、同步段(SYNC_SEG),该段占用 1 时间单元,即公式中的1 x t??。
    2、位段 1(BIT SEGMENT 1),包括 CAN 标准里的 PROP_SEG 和 PHASE_SEG1,记为 BSEG1, 该段占用 1 至 16 时间单元,时间单元个数由 BTS1[3:0]位定义,即公式中的t????????1 = (1 + BTS1[3:0]) x t??。
    3、位段 2(BIT SEGMENT 2),包括 CAN 标准里的 PHASE_SEG2,记为 BSEG2,该段占用 1 至 8 时间单元,时间单元个数由 BTS2[2:0]位定义,即公式中的t????????2 = (1 + BTS2[2:0]) x t??。

    时间单元的长度由 CAN 位时序寄存器(CAN_BTMG) 的 BRDIV[11:0]位及 PCLK 定义,即公式中的t??。

    oaqvcgxca4k64051347.png

    oaqvcgxca4k64051347.png


    按照公式继续推导如下:

    zpworkhxhuw64051447.png

    zpworkhxhuw64051447.png


    其中, BRDIV[11:0]、 BTS1[3:0]和 BTS2[2:0]为 CAN 位时序寄存器 (CAN_BTMG)中参数,在 AT32F413的 BSP 程序中对应结构体对照表如下:

    narrgceplzy64051547.png

    narrgceplzy64051547.png


    举个例子,设定f????????????=192MHz, f??????1?????? = f????????=24MHz 时, 1M 波特率的软件设置如下:

    fu5ik3oktk164051647.png

    fu5ik3oktk164051647.png



    3
    注意事项
  • 确保总的Bit Time在CAN控制器的可配置范围内。
  • 不同的CAN控制器可能有不同的最大和最小TQ限制。
  • 适当设置波特率可以减少误差,提高网络的稳定性和可靠性。
  • 高波特率适用于短距离通信,而长距离通信则需要降低波特率以减少误差。


    4tq2lmtsovt64051747.png

    4tq2lmtsovt64051747.png

    往期推荐CAN FD网络中每秒最多可以发送多少帧报文?
    CAN总线网络中为什么需要安装终端电阻?
    详解AUTOSAR:AUTOSAR CAN网络管理/CAN NM
    CAN与CAN FD通信之间存在的问题
    详解UDS CAN诊断:什么是UDS(ISO 14229)诊断?
    一文搞懂CAN和CAN FD总线协议
          

    qiu55aaymjb64051847.jpg

    qiu55aaymjb64051847.jpg

    lbqxxlyorxk64051947.gif

    lbqxxlyorxk64051947.gif

    点击阅读原文,更精彩~
  • 回复

    使用道具 举报

    发表回复

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条


    联系客服 关注微信 下载APP 返回顶部 返回列表