电子产业一站式赋能平台

PCB联盟网

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

CAN FD网络中每秒最多可以发送多少帧报文?

[复制链接]

1001

主题

1001

帖子

8805

积分

高级会员

Rank: 5Rank: 5

积分
8805
发表于 2023-6-16 12:00:00 | 显示全部楼层 |阅读模式

m3aucmb0lpk64025014151.gif

m3aucmb0lpk64025014151.gif
$ m6 l$ a7 h6 R, M5 Z) A
点击上方蓝色字体,关注我们; O/ |3 h! T7 p. m

8 e, x: x( f) k( d+ u$ S随着总线技术在汽车电子领域越来越广泛和深入的应用,特别是自动驾驶技术的迅速发展,汽车电子对总线宽度和数据传输速率的要求也越来也高,传统CAN(1MBit/s,8Bytes?Payload)已难以满足日益增加的需求。
! c( H" X  b7 A" F2 z
( ~4 y0 a7 b* [2 y因此在2012年,Bosch发布了新的CAN FD标准 (CAN with Flexible Data Rate) ,CAN FD继承了CAN的绝大多数特性,如同样的物理层,双线串行通信协议,基于非破坏性仲裁技术,分布式实时控制,可靠的错误处理和检测机制等,同时CAN FD弥补了CAN在总线带宽和数据长度方面的不足。' I4 u# w- y! m+ k- c2 F8 g" F: }6 y

; T, E2 b" W# p& a2015年6月30日,国际标准化组织(ISO)已经正式认可CAN?FD,并无反对票通过ISO 11898-1作为国际标准草案。% V7 m& R, u, h
10 i( N# G4 k# {$ H2 T. p: j9 I4 w: f
什么是CAN FD?3 e$ H) u# Q5 O
CAN FD协议是由Bosch以及行业专家预研开发的,并于2012年发布。通过标准化对其进行了改进,现已纳入ISO 11898-1:2015。一开始的Bosch CAN FD版本(非ISO CAN FD)与ISO CAN FD是不兼容。- w, D% |8 ^/ g: u" I
$ |. \# n- i. Q, I" ^+ C8 `! `
CAN FD具有以下4个主要优点:1 K: z) x$ d* H( b' P7 Q
6 X, v" g, ^9 @

8 b- {/ }, a, K/ T+ ?! P1、增加了数据的长度
1 M# `- ^% @$ l8 W6 r) cCAN FD每个数据帧最多支持64个数据字节,而传统CAN最多支持8个数据字节。这减少了协议开销,并提高了协议效率。$ w' Q$ {2 H+ B7 H/ C
0 ?2 }  `$ k& z

5 n& P& b( y* O2、增加传输的速度3 }" \" ]8 ?: X* h) u
CAN FD支持双比特率:与传统CAN一样,标称(仲裁)比特率限制为1 Mbit/s,而数据比特率则取决于网络拓扑/收发器。实际上,可以实现高达5 Mbit/s的数据比特率。4 E: z1 N0 K: {* G

& O  [% Z0 p1 p/ K/ Q5 L  E
8 x) w. p5 R, D. J) g$ z$ L
3、更好的可靠性4 v1 ?. s$ F8 @# q8 s
CAN FD使用改进的循环冗余校验(CRC)和“受保护的填充位计数器”,从而降低了未被检测到的错误的风险。这在汽车和工业自动化等安全攸关的应用中至关重要。
0 t) c9 r6 I& i( ^! F1 [. B+ }$ Q; L  H4 W/ f. n
+ h1 M, I  ~, j' L! M( ~
4、平滑过渡' ?3 _: b$ t* ?+ R, R) Q7 u1 z
在一些特定的情况下CAN FD能用在仅使用传统CAN的ECU上,这样就可以逐步引入CAN FD节点,从而为OEM简化程序和降低成本。
' v; t$ `( u; s# D( E实际上,与传统CAN相比,CAN FD可以将网络带宽提高3到8倍,从而为数据的增长提供了一种简单的解决方案。# y) g/ U8 Z0 r
2
5 m% `( Q% l2 f" B1 VCAN FD帧结构; D2 C& p/ V) T0 ?2 q- v
CAN FD节点可以正常收、发CAN报文,但CAN节点不能正确收、发CAN FD报文,因为其帧格式不一致。, b2 z' K8 N, y0 T( r

) ~' W+ A" K2 g) U2 v. W

j5liwuu5x2264025014251.png

j5liwuu5x2264025014251.png
: c/ Q5 n7 O" Z6 ^

6 {+ Q7 g" c" j+ j1 j5 u; _$ ?5 m# e与CAN一样,CAN FD一共具有:帧起始,仲裁段,控制段,数据段,CRC段,ACK段和帧结束,7部分组成。
# w) C$ x8 R0 i# W% }. a1 W6 c9 K5 ^
, ?0 z9 u: d- f, l3 o2.1、帧起始
. {8 l( c5 Z7 E4 m+ dCAN与CANFD使用相同的SOF标志位来标志报文的起始。帧起始由1个显性位构成,标志着报文的开始,并在总线上起着同步作用。9 _! j- E0 u( l* s( s! J. [; t
  m; W& K; o6 l

vzyykrpqukd64025014351.png

vzyykrpqukd64025014351.png

( o- c' j, m4 y9 V6 N$ b
" ]' w( n6 C7 B9 Y% i6 \  T2.2、仲裁段
! ~6 V- @* }$ m+ |+ l4 _与CAN不同,CAN FD取消了对远程帧的支持,用RRS位替换了RTR位,为常显性。IDE用于区分标准帧和扩展帧。
) w9 v9 y9 ?  j; X" r6 }( M$ x- |1 T3 T) g. B' ^: y

1djupkxgna264025014451.png

1djupkxgna264025014451.png

, s# O: ~/ ~( x8 Q& \% c2 N
( M- J6 p- p' ]' m# z8 [3 d4 K标准帧仲裁段由11位ID和r1位(显性)、IDE(显性)组成,总共13位。  Q3 V" ?# W2 |0 x5 i, n# C6 G
扩展帧仲裁段由29位ID和SRR(隐性)、IDE(隐性)、r1位(显性)组成,总共32位。
/ }9 `/ {2 W: ^% G0 ^% F. E7 T
  • SRR:替代CAN标准帧中的RTR位;
  • IDE:扩展帧标志位;
  • r1:保留位,为显性。2 B3 S% t% b& J0 d
    # Q8 ?. r1 l; h9 p0 E+ {' x; F, I
    2.3、控制段
      M+ h7 w" {! h. iCAN FD与CAN有着相同的IDE、res和DLC位,同时增加了FDF、BRS、ESI三个bit位。
    0 Z9 O5 l& `% ~
  • FDF 位(Flexible Data Rate Format):原 CAN 数据帧中的保留位 r。表示 CAN 报文还是 CAN-FD 报文,FDF 位常为隐性(1),表示 CAN FD 报文;
  • BRS 位( Bit Rate Switch):表示位速率转换,当 BRS 为显性位(0)时数据段的位速率与仲裁段的位速率一致(恒定速率),当 BRS 为隐性位(1)时速率可变(即 BSR 到 CRC 使用转换速率传输);
  • ESI 位(Error State Indicator):发送节点错误状态指示,主动错误时发送显性位(0),被动错误时发送隐性位(1)。4 u, i; a9 g" ]( T
    7 K7 i* |# G0 C' `2 a, B

    ' ]4 \9 \, e: g0 s4 B. K+ k

    xq54pwl2b3u64025014551.jpg

    xq54pwl2b3u64025014551.jpg

    7 R9 j( u( a! v  z9 }: a0 r0 {  c1 a8 B( C  k! _5 H5 ^; Q
    2.4、数据段 : ]* u! |( Y& N' n
    CAN FD兼容CAN的数据格式,同时最大还能支持:12、16、 20、 24、 32、 48和64byte。
    3 S  M5 k- }9 w  W2 E( Q) X# W- c; x# t9 E' u$ v# p3 ?
    像在传统CAN中一样,CAN FD DLC是4位,表示帧中数据字节的数量。为了维持4位DLC,CAN FD使用从9到15的其余7个值来表示所使用的数据字节数(12、16、20、24、32、48、64)。 3 @9 K, W7 p7 H' C. f) E0 }  o

    5 m- e. w) a1 r. g) o. f( Z

    cut5otuoyxg64025014651.png

    cut5otuoyxg64025014651.png
    ! H& a$ A3 O% D5 o* G
    编辑
    7 m8 c$ z+ Z  {, I7 U9 y/ Y! b

    2fzj35ucod364025014751.png

    2fzj35ucod364025014751.png
    $ ~6 A; r# {& U1 p" @
    2 s( V8 |1 p/ T2 K& w4 m
    2.5、CRC段9 u1 T" ?: v! m5 S' x6 y
    传统CAN中的循环冗余校验(CRC)为15位,而在CAN FD中由固定填充位FSB(6/7位)、填充位计数(4位)、CRC(17/21位)和CRC界定符(1位)组成,总共28或33位组成。在传统CAN中,CRC中可以包含0到3个填充位,而在CAN FD中,总是有4个固定填充位以提高通信可靠性。
    , O9 Y0 `" h. f4 p
    . O1 e' q8 I; b; U2 L' U9 A+ L

    ux2byqic1nm64025014851.png

    ux2byqic1nm64025014851.png

    2 [4 [$ l& ~: r. i6 B: k
    $ p. r  {5 \- W5 B! r3 |. i固定填充位(FSB):CRC段中每4个位固定填充一个与上位相反的位。
    9 P5 @! M+ |5 R, |( K
  • 采用CRC17时,FSB为6个位;
  • 采用CRC21时,FSB为7个位。) Q, F0 b0 O8 i( I9 M
    2 i" |7 @2 ~& F" b7 R
    填充位计数:由填充位计数(3位)和奇偶校验位(1位)组成。+ H5 @9 O- L$ O3 _9 ?

    - Z( Z. S' U/ }* ECRC:1 i$ s* N) a; [* C( `0 m% ]
  • 报文长度小于16时,采用CRC17,17位组成;
  • 报文长度大于16时,采用CRC21,21位组成。& e  U1 F# Z1 X3 c1 h. t' L
    $ J  M1 M7 H% I% Y2 s# O3 \0 ?
    CRC界定符:固定为隐性位;从该位采样后,切换为仲裁域波特率。
    : w. [# k$ `3 R! _6 ?- H6 q  l* u9 d. M! H( q0 x3 A2 C$ b

    2e452fu2unj64025014951.png

    2e452fu2unj64025014951.png

    ( u3 p9 I; F# x* x7 }! J
    - }4 c, ^" j! W( r3 h$ _3 @; I2.6、ACK段0 y0 i1 S! x% O2 O7 o# i) Q+ d
    ACK紧跟着CRC结束标识位。不同的是,CAN FD支持2bits的ACK的识别,由ACK位和ACK界定符位组成。, b2 t- {9 a) R, _7 b" O: d
  • ACK:接收节点应答位,接收节点应应答显性位;
  • ACK界定符,固定为隐性。3 a) B- V% r  W9 M6 {5 }; N% s* j
    + k3 K- d" y. k

    ( W$ U6 m' [* M* C/ z  C4 s3 o

    as4x14rcrxf64025015051.png

    as4x14rcrxf64025015051.png

    $ C5 R, m& }2 o9 }  m
    ' G; c* @/ S1 C7 u2 {2.7、帧结束
    ) B; q) D: y. i7 @7 q2 p  V与CAN一样,CAN FD的帧结尾也为连续7位的隐性位。
    ' U. S. e- T3 E" o3/ b* R, I( M- s$ _9 u1 V
    一帧CAN FD报文位数
    6 H' p+ v/ ^# t# g; `根据CAN FD帧结构组成,可以算出一帧CAN FD报文位数:
    3 X# Y+ J& m/ T+ @1 `
      i6 e; O7 e9 Z5 r+ ~0 K# [CAN FD报文位数 = 帧起始(1位)+ 仲裁段(13/32位)+ 控制段(8位)+ 数据段(0~512位)+ CRC段(28/33位)+ ACK段(2位)+ 帧结束(7位)
    ' k: o) ~+ D6 a( f8 ?: J  @) D9 e
    9 D1 S5 }6 [$ J1 c; X+ q

    " p- t' H7 @: w: l2 a/ }2 b4 @1 Z影响报文位数主要为仲裁段(帧ID长度)和数据段(CRC段受数据段长度影响)。通过帧类型、帧长度组合出不同情况报文位数:, s* N& t  m: X  m' ?9 n( F
  • 标准帧,数据0字节
    6 l& \. e/ }3 `" n6 N
    帧起始(1位)+ 仲裁段(13位)+ 控制段(8位)+ 数据段(0位)+ CRC段(28位)+ ACK段(2位)+ 帧结束(7位)= 59位. E- u/ U' T4 q0 o% I
  • 标准帧,数据64字节/ k6 n; E5 Q5 G4 _* K, K- S* F
    帧起始(1位)+ 仲裁段(13位)+ 控制段(8位)+ 数据段(512位)+ CRC段(33位)+ ACK段(2位)+ 帧结束(7位)= 576位, O  O5 q, T' ~; i. a
  • 扩展帧,数据0字节
    ! N' \' X2 O# z5 q. H0 W
    帧起始(1位)+ 仲裁段(32位)+ 控制段(8位)+ 数据段(0位)+ CRC段(28位)+ ACK段(2位)+ 帧结束(7位)= 78位
    + I8 |7 P$ l3 t$ n2 n
  • 扩展帧,数据64字节% |: k( _, H( @1 r9 `
    帧起始(1位)+ 仲裁段(13位)+ 控制段(8位)+ 数据段(512位)+ CRC段(33位)+ ACK段(2位)+ 帧结束(7位)= 590位+ r1 U1 s3 k# s7 O3 m
    4
    9 S2 P/ |5 V. @* k& ~3 X精品专栏仲裁域和数据域位数$ K$ q4 n% ?; Y3 I
    由于CANFD采用了双波特率形式:标准波特率(也称仲裁域波特率)和数据域波特率,所以帧结构中不同段采用的波特率也不同。
    . [2 W4 |8 j. o  @
  • 仲裁域波特率所占位数帧起始(1位)+ 仲裁段(13位)+ 控制段的EDL、r0、BRS(3位)+ ACK段(2位)+ 帧结束(7位)
  • 数据域波特率所占位数控制段的ESI、DLC(5位)+ 数据段(0~512位)+ CRC段(28/33位)9 P/ Z' C% M7 w- I1 S$ l, L$ U

    # G+ h/ R0 I  o/ l( N主要说明的是,BRS位和CRC界定符位均同时使用了两个波特率# j% I) O. o! _& m+ L
  • BRS位:由**仲裁域波特率 * 仲裁域采样点 + 数据域波特率 * (1 - 仲裁域采样点)**组成;
  • CRC界定符:由**数据域波特率 * 数据域采样点 + 仲裁域波特率 * (1 - 数据域采样点)**组成。- U) r: v- q4 V8 u5 x
    ' F$ `- j' [# w! T+ W  z
    此处将BRS认定采用仲裁域波特率、CRC界定符采用数据域波特率以方便计算。5 v5 V8 H* p8 z, A" f' }, M- v
    5  \+ G' M5 x3 U, t( c+ {
    位填充
    9 W: L7 ~5 T* e' o) m! u当然,上述报文位数中,还未包含填充位个数。在CAN/CAN FD协议中规定:每5个相同的位就必须填充一个相反位,该位即为填充位。- N- W. Q7 M* i3 s% v
    : n" Y! @9 e5 M! m) O
    我们知道字节0x55或0xAA,其二进制分别为0101 0101或1010 1010,也就是每个位与上一位均相反,若此时ID和数据均为0x55或0xAA,则可以使填充位个数最少。
    ; L) d3 p- I, a+ \: ^2 u  N" u& d* T! K4 T, n
    同理,字节0xFF或0x00,其二进制位1111 1111或0000 0000,也就是所有位均一致,若此时ID和数据均为0x00或0xFF,此时报文的填充位个数最多。
    " w5 A* i" g3 u% I0 |% Z6- d9 J, i5 n1 d. y, M( Q' Z* w9 i
    不同类型报文位数
    - q% M+ F* t. z基于以上报文位数的计算,我们可以得出算出不同类型报文所占位数,如下表所示:
    2 `$ P! z  B$ M8 E6 G$ z+ }6 a0 i" R

    blo2v31vf1d64025015151.png

    blo2v31vf1d64025015151.png

    0 I1 `2 \* J. D
    / w( X, \- X% q7 a7 f从上表可知:. ]5 _+ h7 Y7 I2 F7 L  r! @
  • 当报文为CAN FD标准帧ID为0x555,数据长度为0时,报文位数最少,为59位;
  • 当报文为CAN FD扩展帧ID为0x0,数据长度为64字节,数据全为0xFF时,报文位数最多,为703位。
    . B7 ~! k/ h! ]  o

    1 [5 |+ v6 z4 W; _5 w7  Z7 c! z5 ]  k" h2 N7 m; x
    CAN FD报文时间计算
    & M2 u, L) r! O最后,可以根据波特率算出不同类型报文时间了,计算公式如下:
    : j- e, S: m! m/ B5 T1 j1 d% @: P$ `1 p; f
    报文时间 = 仲裁域位时间 * 仲裁域位数 + 数据域位时间 * 数据域位数, |" e9 s! O; }" c1 Z

      u1 e; P% L4 J5 a0 A$ p0 {
    : ?8 K. n; ^; d2 n' P) F: I7 F
    以位数最少的CANFD报文为例,在仲裁域波特率为1Mbps(位时间1us),数据域波特率为5Mbps(位时间200ns)时,其报文时间 = 1us * 26 + 33 * 200ns = 32.6us。0 k* U% ^) L! w2 m9 v# k
    9 K7 q6 s4 y- k  q0 d- U; j
    那么一秒钟最多可以发送报文呢?由于报文发送成功后,需经过帧间隔(3个位)后才能发送下一帧报文,也就说仲裁段要在原来基础上加3个位,就可以算出每秒发送多少帧了。那么上述位数最少报文的发送时间耗时 = 1us * (26 + 3) + 33 * 200ns = 35.6us,也就是1秒钟最多可以发送1000000us / 35.6us = 28089帧报文。也就是说,1M/5M波特率下,发送CAN FD标准加速帧,最多可以发送28089帧。
    ' L3 w% a* P0 E4 T3 f" e4 b, f, ?5 K0 P/ [

    , B2 ]5 ?# d+ z2 ?/ v- e5 r6 ^下面我们给出一些常用波特率下,不同类型报文每秒最多可以发送的CANFD报文帧数(下表中报文BRS位为1,ESI位为0),供大家参考。2 i5 N5 @/ Z5 K" r, V/ f6 T. j9 i
    % n4 F( b" }1 H% g0 d

    m35mbdwl1wv64025015252.png

    m35mbdwl1wv64025015252.png

    4 C  W; ]( Y! {6 p3 _, l/ l. e
    9 m) G4 i6 V* i1 X2 j$ d5 O3 o
    3 I2 j0 O1 ~. m1 ?4 T5 I% ~1 N, B

    u2zhp01pfel64025015352.png

    u2zhp01pfel64025015352.png
    2 q! R7 a# Q: R

    " I4 _. Q' z8 x! I' l: @- P2 p
    % ^( [4 Q$ J% e5 y5 O% N% r& j

    21zez0jqpwv64025015452.png

    21zez0jqpwv64025015452.png
    / Z4 t0 v; d% G
    % D1 O( Z( \' G8 F6 v

    5 H& o' U5 b: d8 [; g

    1dur2sdxjsw64025015552.png

    1dur2sdxjsw64025015552.png

    8 |( E3 }, Q* h9 o. c往期推荐详解AUTOSAR:AUTOSAR CAN网络管理/CAN NM
    ! R9 d' I5 s& E: C! bCAN总线网络中为什么需要安装终端电阻?3 ]9 m" \( ?' q) B4 T) }; P7 S
    一文搞懂CAN和CAN FD总线协议
    7 M# U7 ~: q, u1 t  p2 wCAN与CAN FD通信之间存在的问题
    6 z) Q, Q/ D- w3 B* A5 o! X详解CAN总线:CAN总线通信优先级机制
    ' |6 E$ A" A  }# ]/ t- P5 w4 c详解CAN总线:CAN总线故障界定与管理
    . ]- F# O$ k2 s. _7 z

    7 X, ?$ F3 U. d' g

    pr1mmxh03ye64025015652.jpg

    pr1mmxh03ye64025015652.jpg
    ; D9 d6 [( a5 K4 ]

    1tsikpfg3e164025015752.gif

    1tsikpfg3e164025015752.gif
    ( F( U0 {9 `+ p2 p. K, W
    点击阅读原文,更精彩~
  • 回复

    使用道具 举报

    发表回复

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

    本版积分规则


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