关于CAN-FD传输速率设定的分析

南楼画角 提交于 2020-03-10 16:11:19

CAN-FD:英文为CAN with Flexible Data-Rate,翻译为【可变速率的CAN】

 

BRS(Bit Rate Switch)位速率转换开关,当BRS为显性位时数据段的位速率与仲裁段的位速率一致,当BRS为隐性位时数据段的位速率高于仲裁段的位速率;

 

CAN-FD采用了两种位速率:从控制场中的BRS位到ACK场之前(含CRC分界符)为可变速率,其余部分为原CAN总线用的速率。两种速率各有一套位时间定义寄存器,它们除了采用不同的位时间单位TQ外,位时间各段的分配比例也可不同。

 

因此,对于CAN-FD,是在CAN的基础上增加了一个数据域的传输速率,数据传输速率要大于等于原CAN总线用的速率。说白了CANFD支持两种传输速率,两种速率可以保持一致,也可以不保持一致。

 

 

 

上图上CubeMX截图,下面讲解一下如何进行位速率设置:

CAN-FD有两种模式:

  1. FDCAN_FRAME_FD_NO_BRS 不使用位速率转换开关
  2. FDCAN_FRAME_FD_BRS     使用位速率转换开关

 

这两种模式怎么设置niminal速率和data速率呢?如下:

当Mode = FDCAN_FRAME_FD_NO_BRS 的时候,两种速率保持一致,只需要设置常规的CAN速率即可,即nominal速率。

当Mode = FDCAN_FRAME_FD_BRS 的时候,需要两个速率都要设置,并且data速率要大于等于nominal速率。

 

接下来说一下怎么设置位速率:

 

位速率组成:

Syncseg

Propseg

Phaseseg1

Phaseseg2

同步段

传播时间段

相位缓冲段1

相位缓冲段2

 

 

Baudrate = 1/bit time

Bit time = Syncseg+Phaseseg1+Phaseseg2

 

其中 Phaseseg1包含了 progseg段,用来吸收网络上的物理延迟。

 

对于常用的CAN速率:

由于hal库里对应的四个值都进行了加1操作,如:

Nominal Prescaler = NBRP[8:0]+1,因此公式简化如下:

举例:

HSE 25M,主频400M,fdcanclk 为200M,baudrate = 500k,则

可以设置tsyncseg = 10,tsge1=31,tseg2=8,tsjw=8;

其中tsjw是包含在tseg1中的,在tseg1前面那一段。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!