电子产业一站式赋能平台

PCB联盟网

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

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

[复制链接]

397

主题

397

帖子

2457

积分

三级会员

Rank: 3Rank: 3

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

1tjjvajtpqm640347403.gif

1tjjvajtpqm640347403.gif
3 }. |: W. y# d* P1 l
点击上方蓝色字体,关注我们# V3 u$ h  }" T: w7 q3 A

" d- q* {& y1 x/ ?8 P. u随着总线技术在汽车电子领域越来越广泛和深入的应用,特别是自动驾驶技术的迅速发展,汽车电子对总线宽度和数据传输速率的要求也越来也高,传统CAN(1MBit/s,8Bytes?Payload)已难以满足日益增加的需求。9 e9 O/ @- n1 k1 B! y# i$ u2 u
  I9 C" n6 v$ ]. [
因此在2012年,Bosch发布了新的CAN FD标准 (CAN with Flexible Data Rate) ,CAN FD继承了CAN的绝大多数特性,如同样的物理层,双线串行通信协议,基于非破坏性仲裁技术,分布式实时控制,可靠的错误处理和检测机制等,同时CAN FD弥补了CAN在总线带宽和数据长度方面的不足。
( Y6 [! Q9 p4 D& A% \/ r$ x1 Z9 Q# R" Z8 C
2015年6月30日,国际标准化组织(ISO)已经正式认可CAN?FD,并无反对票通过ISO 11898-1作为国际标准草案。
) A4 H3 [% }" K0 b- D( e7 Y, w1
6 M$ O) o5 Y! \1 F: T" _什么是CAN FD?1 S$ f9 V# F- u& o) ?; l
CAN FD协议是由Bosch以及行业专家预研开发的,并于2012年发布。通过标准化对其进行了改进,现已纳入ISO 11898-1:2015。一开始的Bosch CAN FD版本(非ISO CAN FD)与ISO CAN FD是不兼容。! f" Q% h- n6 S1 h0 I

) d  @, @$ f! C" sCAN FD具有以下4个主要优点:6 m" b* c( _! [+ D
7 _% J# J! a& a/ G8 |1 y* r& M# q

' Y1 _; _9 M  Q! H  f1、增加了数据的长度0 _; n' O6 \6 b. X1 i" l
CAN FD每个数据帧最多支持64个数据字节,而传统CAN最多支持8个数据字节。这减少了协议开销,并提高了协议效率。+ b( b5 F, K. y& A4 I9 u3 _

2 N* `0 n0 g$ j
# Z' ~8 j  H! m7 n
2、增加传输的速度
# J1 S& Z+ t/ \0 }: J) j- MCAN FD支持双比特率:与传统CAN一样,标称(仲裁)比特率限制为1 Mbit/s,而数据比特率则取决于网络拓扑/收发器。实际上,可以实现高达5 Mbit/s的数据比特率。
- J8 z  I, R6 A0 I* q2 F5 b" N3 |! e% h" r
: ~6 [8 X7 x+ _6 n* d3 O
3、更好的可靠性
+ s  q# U, v) P% ?& FCAN FD使用改进的循环冗余校验(CRC)和“受保护的填充位计数器”,从而降低了未被检测到的错误的风险。这在汽车和工业自动化等安全攸关的应用中至关重要。
/ }- k; E5 l5 Y( a
" Q& B0 s9 M4 ^+ _5 i) r3 o

0 q* K9 O  k+ [7 e5 c8 }, S% I4、平滑过渡3 E' ~" ]; K. A) ^" A+ ]! |7 B
在一些特定的情况下CAN FD能用在仅使用传统CAN的ECU上,这样就可以逐步引入CAN FD节点,从而为OEM简化程序和降低成本。
9 |1 m/ }7 `# J( }# M实际上,与传统CAN相比,CAN FD可以将网络带宽提高3到8倍,从而为数据的增长提供了一种简单的解决方案。
" ]. f6 ~9 Q7 S2
. I0 f2 A2 J' ICAN FD帧结构
: s, q! f* A( Z! _. H9 N) `+ @( hCAN FD节点可以正常收、发CAN报文,但CAN节点不能正确收、发CAN FD报文,因为其帧格式不一致。, O! R  n: W( M# e  H3 S$ g

/ ^/ x2 N: g$ f/ w# g; s) f

avrp3a4gr4x640347503.png

avrp3a4gr4x640347503.png

- u8 Q! F" b" P  {; F4 }8 O( Q' J. P
4 T+ b6 X: O$ M与CAN一样,CAN FD一共具有:帧起始,仲裁段,控制段,数据段,CRC段,ACK段和帧结束,7部分组成。
/ }1 o8 s  G" a6 R0 C
+ O2 l" ^+ V$ a3 P% z  U, I! x' ]4 _2.1、帧起始
+ H3 g# M3 [" ~9 mCAN与CANFD使用相同的SOF标志位来标志报文的起始。帧起始由1个显性位构成,标志着报文的开始,并在总线上起着同步作用。
. V9 c. v& X( M8 r0 V( m; T( D7 w% T0 n7 ~* L- k

ttufngd1tby640347603.png

ttufngd1tby640347603.png

; n" t$ S7 V. E" w
! J$ h, [5 \: p7 A. [- h4 c& Q8 n2.2、仲裁段
6 s: \. ?6 I" n7 A/ k$ T与CAN不同,CAN FD取消了对远程帧的支持,用RRS位替换了RTR位,为常显性。IDE用于区分标准帧和扩展帧。
# h1 t1 z) J5 [. r5 a1 P4 c' [# f% g3 `; n, a  O8 w( g

vgcbnfvvtae640347703.png

vgcbnfvvtae640347703.png
& o7 h  E1 x8 w# ~# ^

9 S- d4 g; w0 w标准帧仲裁段由11位ID和r1位(显性)、IDE(显性)组成,总共13位。4 ^6 Y& j8 H0 i; U. D% f, i! v3 p
扩展帧仲裁段由29位ID和SRR(隐性)、IDE(隐性)、r1位(显性)组成,总共32位。
/ g& W3 a6 R. ]
  • SRR:替代CAN标准帧中的RTR位;
  • IDE:扩展帧标志位;
  • r1:保留位,为显性。
    6 E9 G! r% }  F
    3 I& a5 I% y( G" ~
    2.3、控制段
    : d- W) W; ]' QCAN FD与CAN有着相同的IDE、res和DLC位,同时增加了FDF、BRS、ESI三个bit位。
    6 j) z9 j& u5 S3 D" s
  • 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)。3 s- p5 e" D" i3 n5 n6 @/ x

    # A6 q& m, c2 q( s6 e
    6 m/ A' |6 C7 ]! T

    hgxjrs4oadc640347803.jpg

    hgxjrs4oadc640347803.jpg

    " O( v# j' I4 Z: ]$ R  Q6 B. a2 A: a+ d! d6 i: d2 M4 f$ r+ S
    2.4、数据段 : i+ K6 J4 U/ P' o4 M  N9 Y
    CAN FD兼容CAN的数据格式,同时最大还能支持:12、16、 20、 24、 32、 48和64byte。% Y4 |2 A8 o6 C" _+ W2 _  t

    / D: k$ T* y* ~6 `$ {像在传统CAN中一样,CAN FD DLC是4位,表示帧中数据字节的数量。为了维持4位DLC,CAN FD使用从9到15的其余7个值来表示所使用的数据字节数(12、16、20、24、32、48、64)。
    9 E: |! E; ~2 @; l2 P( D, M6 k& }0 k1 @& T0 k& b

    3ngiuvt5awa640347904.png

    3ngiuvt5awa640347904.png

    5 O2 p( C3 g  Y3 M编辑$ H- w+ D+ O' \" u7 {0 z5 D0 t

    xixk0w1gqs2640348004.png

    xixk0w1gqs2640348004.png

    1 f% \  j8 j$ \: m# O9 \  b; _3 A; q5 c4 k
    2.5、CRC段8 Q& w5 J4 Z; e  M; E- O: f' p
    传统CAN中的循环冗余校验(CRC)为15位,而在CAN FD中由固定填充位FSB(6/7位)、填充位计数(4位)、CRC(17/21位)和CRC界定符(1位)组成,总共28或33位组成。在传统CAN中,CRC中可以包含0到3个填充位,而在CAN FD中,总是有4个固定填充位以提高通信可靠性。* M4 X2 o1 `( ]% i7 I" L6 A4 J

      o$ ]$ B$ o( C4 L# l) r, m" V( `

    2q4r1ssetuo640348104.png

    2q4r1ssetuo640348104.png

    7 ?8 X3 Y9 h  o. z& }- Q& K3 f5 x! ]+ S
    固定填充位(FSB):CRC段中每4个位固定填充一个与上位相反的位。
    % h2 }' z0 t7 E4 r/ }3 R2 x. u
  • 采用CRC17时,FSB为6个位;
  • 采用CRC21时,FSB为7个位。; H/ ?3 G. z; d' T

    ) J7 n, }: v5 i* P! m填充位计数:由填充位计数(3位)和奇偶校验位(1位)组成。7 j& q+ I3 ?2 \4 C! M& v

    7 J2 V" @" y  fCRC:
    ) D; [6 m: E& f/ i
  • 报文长度小于16时,采用CRC17,17位组成;
  • 报文长度大于16时,采用CRC21,21位组成。
    ( f4 }% V! W% k2 d( y  s+ p
    ' K( b" x- Y' |* u! T( D# \
    CRC界定符:固定为隐性位;从该位采样后,切换为仲裁域波特率。$ d- M( q" M1 }+ l

    + q! t. Z; c# _* z' }  o

    4k4efjqaaoj640348204.png

    4k4efjqaaoj640348204.png
    / Y' ~: H; v! M8 u$ A2 |

    * n/ H# P& b4 O  m' Y. Y. X2 |2.6、ACK段1 k! U) Z' A  n- `( a& ^8 [5 m% {
    ACK紧跟着CRC结束标识位。不同的是,CAN FD支持2bits的ACK的识别,由ACK位和ACK界定符位组成。
    - r1 c4 }4 Z( G$ ^; O
  • ACK:接收节点应答位,接收节点应应答显性位;
  • ACK界定符,固定为隐性。/ j' R9 ~/ |8 N1 c) W" B4 \

    9 H/ w7 K# B7 \- L, z2 I" @( `2 ]
    8 ~# h$ d1 D& Z1 U- M* t) Y

    k5a1rm2trmw640348304.png

    k5a1rm2trmw640348304.png
    / g% N6 c8 d! o( b. H8 F0 `5 _* F; W8 Z
    - ~( N( z8 x( V! T/ q$ m2 p' z
    2.7、帧结束
    1 S' `' v0 {' J* x1 `' [- X" n与CAN一样,CAN FD的帧结尾也为连续7位的隐性位。
    5 o1 W/ F: l1 X3 ]* Y3 j* H' K. w31 I# f1 r5 c* ]- h: T/ @  {4 H7 [
    一帧CAN FD报文位数
    4 F3 ]; q4 _% W' i根据CAN FD帧结构组成,可以算出一帧CAN FD报文位数:
    : F8 U  ~, O* Y9 n& p9 @+ D
    4 p$ E4 p( S8 l7 dCAN FD报文位数 = 帧起始(1位)+ 仲裁段(13/32位)+ 控制段(8位)+ 数据段(0~512位)+ CRC段(28/33位)+ ACK段(2位)+ 帧结束(7位)
    / h& }, D' P* |5 D, X. S/ b, M3 ?7 Y2 V$ k8 a7 c0 t4 c$ {( E. |

    0 V2 i2 t' P! v" b7 M影响报文位数主要为仲裁段(帧ID长度)和数据段(CRC段受数据段长度影响)。通过帧类型、帧长度组合出不同情况报文位数:
    " q, C+ h: C: g6 ?
  • 标准帧,数据0字节
    " M7 n# |# ]' H) ^9 s5 e
    帧起始(1位)+ 仲裁段(13位)+ 控制段(8位)+ 数据段(0位)+ CRC段(28位)+ ACK段(2位)+ 帧结束(7位)= 59位
    " X1 |7 _. d% F0 o
  • 标准帧,数据64字节) w7 q5 _  q. p, H8 I9 z
    帧起始(1位)+ 仲裁段(13位)+ 控制段(8位)+ 数据段(512位)+ CRC段(33位)+ ACK段(2位)+ 帧结束(7位)= 576位
    3 y7 V. r0 _0 h% n3 h( T! M. i
  • 扩展帧,数据0字节# L  `; m: N: w* o% G! @$ g
    帧起始(1位)+ 仲裁段(32位)+ 控制段(8位)+ 数据段(0位)+ CRC段(28位)+ ACK段(2位)+ 帧结束(7位)= 78位) [+ F0 u; _9 D) E
  • 扩展帧,数据64字节  c7 o- s2 H2 J5 R! x8 @
    帧起始(1位)+ 仲裁段(13位)+ 控制段(8位)+ 数据段(512位)+ CRC段(33位)+ ACK段(2位)+ 帧结束(7位)= 590位
    % c* x1 o" W8 b, K$ @6 m( K48 g: k9 ?. E+ u: B
    精品专栏仲裁域和数据域位数
    # C( j! F4 [. m, i* a: Q由于CANFD采用了双波特率形式:标准波特率(也称仲裁域波特率)和数据域波特率,所以帧结构中不同段采用的波特率也不同。
      Z" y' g/ V5 f9 V- c4 E) a  F
  • 仲裁域波特率所占位数帧起始(1位)+ 仲裁段(13位)+ 控制段的EDL、r0、BRS(3位)+ ACK段(2位)+ 帧结束(7位)
  • 数据域波特率所占位数控制段的ESI、DLC(5位)+ 数据段(0~512位)+ CRC段(28/33位)
    0 p$ d: P/ W+ `, J( V

    : i; M: k  ~/ |9 O- s6 {3 s3 a2 H- g# R主要说明的是,BRS位和CRC界定符位均同时使用了两个波特率
    & y2 c# `- ~3 M" c
  • BRS位:由**仲裁域波特率 * 仲裁域采样点 + 数据域波特率 * (1 - 仲裁域采样点)**组成;
  • CRC界定符:由**数据域波特率 * 数据域采样点 + 仲裁域波特率 * (1 - 数据域采样点)**组成。
    # d/ M9 n2 H5 h7 R  p3 }% K/ P
    4 _* p# C6 h8 h" h) }' A  m, Q
    此处将BRS认定采用仲裁域波特率、CRC界定符采用数据域波特率以方便计算。
      N0 _) C( A" n: O8 c9 q$ K. C5: E+ n+ T+ t/ u' P! X, q6 M/ E+ A
    位填充, {% u- m/ y" ]4 {# e; V6 Q
    当然,上述报文位数中,还未包含填充位个数。在CAN/CAN FD协议中规定:每5个相同的位就必须填充一个相反位,该位即为填充位。
    4 H, b: Y" t( {
    8 s0 g4 i) E+ k% s" q' m我们知道字节0x55或0xAA,其二进制分别为0101 0101或1010 1010,也就是每个位与上一位均相反,若此时ID和数据均为0x55或0xAA,则可以使填充位个数最少。5 C6 ]2 I3 C" M% U+ y0 S/ _
    8 H9 e1 U; [7 g
    同理,字节0xFF或0x00,其二进制位1111 1111或0000 0000,也就是所有位均一致,若此时ID和数据均为0x00或0xFF,此时报文的填充位个数最多。0 s. T- s. W7 |$ S
    6
    , k; `1 {4 V+ K! q. I不同类型报文位数
    , v8 P! G" w# ^0 a基于以上报文位数的计算,我们可以得出算出不同类型报文所占位数,如下表所示:2 X1 e8 y  c0 S, t
    . \1 n4 w( L% ^

    x3jk2nej4dq640348404.png

    x3jk2nej4dq640348404.png
    + m; O+ b! N5 v2 V  I7 Y

    ; x' @$ T4 \( e) c; ]从上表可知:% l: k: g7 a' c: F; k; Y7 i# E
  • 当报文为CAN FD标准帧ID为0x555,数据长度为0时,报文位数最少,为59位;
  • 当报文为CAN FD扩展帧ID为0x0,数据长度为64字节,数据全为0xFF时,报文位数最多,为703位。0 a$ m4 x! c/ D( f
    " \; b4 N- f  L- T2 X# W. c7 h
    72 Y  K7 F- h4 m( ?# n; x
    CAN FD报文时间计算
    4 B7 q  X7 ^3 p& l# ?6 L最后,可以根据波特率算出不同类型报文时间了,计算公式如下:
    ' a9 P- B, K; G  D; B2 R8 Q3 ~( q' F' _% p. J( `) |+ K% ]
    报文时间 = 仲裁域位时间 * 仲裁域位数 + 数据域位时间 * 数据域位数) r/ ]0 Z2 L7 T. \
    ; v5 w8 }! {( c3 t$ {' }

      J& k2 d: T+ X7 w0 d以位数最少的CANFD报文为例,在仲裁域波特率为1Mbps(位时间1us),数据域波特率为5Mbps(位时间200ns)时,其报文时间 = 1us * 26 + 33 * 200ns = 32.6us。$ {4 ]) I" t" H  t3 N6 Y

      k( B0 k- R$ n0 j3 ]那么一秒钟最多可以发送报文呢?由于报文发送成功后,需经过帧间隔(3个位)后才能发送下一帧报文,也就说仲裁段要在原来基础上加3个位,就可以算出每秒发送多少帧了。那么上述位数最少报文的发送时间耗时 = 1us * (26 + 3) + 33 * 200ns = 35.6us,也就是1秒钟最多可以发送1000000us / 35.6us = 28089帧报文。也就是说,1M/5M波特率下,发送CAN FD标准加速帧,最多可以发送28089帧。) B; U( q' E& S' v) k- ?
    . I8 ?8 B9 A; _3 L" E

    0 j# R, A, H0 R: l# V3 G* ]" ~下面我们给出一些常用波特率下,不同类型报文每秒最多可以发送的CANFD报文帧数(下表中报文BRS位为1,ESI位为0),供大家参考。
    # h* w& @5 L1 H5 j. P8 Q
    7 R% l/ H" n5 w" b6 q$ g/ W

    hlwh3xofe3u640348504.png

    hlwh3xofe3u640348504.png

    / X1 ~% l" O, f9 c5 x0 F& z0 n3 z; Q5 J& ]8 `" z
    6 H' X7 @7 g# E" @; s: S

    aj1ag2z24ip640348605.png

    aj1ag2z24ip640348605.png

    . a1 m; k6 W7 u  b+ l7 U1 e+ l) G' [7 u4 d5 S5 E; ?9 p2 r
    ; s$ Z+ d  M! {3 h1 _) O: j2 D6 Y2 q2 B

    uc5hltq5100640348705.png

    uc5hltq5100640348705.png
    ' n1 @/ u& N- }( r

    . @8 S9 [6 ?8 }+ E) G7 k" ]7 O" @; Q3 [% S

    cfhvuqoapiu640348805.png

    cfhvuqoapiu640348805.png
    + ~1 s9 I6 \+ G7 N* o6 C0 g9 b2 ~1 Z
    往期推荐详解AUTOSAR:AUTOSAR CAN网络管理/CAN NM  V  `7 o$ [: k4 T# f: T
    CAN总线网络中为什么需要安装终端电阻?
    " F0 l. }% [* x1 }3 i1 t2 [9 z' H一文搞懂CAN和CAN FD总线协议/ P* d4 }9 k* o2 |) N* t
    CAN与CAN FD通信之间存在的问题) O- ?3 B+ i4 m' H
    详解CAN总线:CAN总线通信优先级机制5 ^. Z. B- W& c7 L
    详解CAN总线:CAN总线故障界定与管理/ F6 R1 r0 W6 q! c

    - h2 Q  B% C$ h3 [9 u! r8 b

    tamegrfwp1s640348905.jpg

    tamegrfwp1s640348905.jpg
    . \) e' X, q1 U- r

    nfowdwkln0i640349005.gif

    nfowdwkln0i640349005.gif

    4 e2 z" l! e) d0 ?" s点击阅读原文,更精彩~
  • 回复

    使用道具 举报

    发表回复

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

    本版积分规则


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