电子产业一站式赋能平台

PCB联盟网

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

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

[复制链接]

1001

主题

1001

帖子

8805

积分

高级会员

Rank: 5Rank: 5

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

dnhp3tgppik64018799844.gif

dnhp3tgppik64018799844.gif
& \( C9 ]" o- c" p0 C( I+ M; T+ `
点击上方蓝色字体,关注我们
3 _* ?3 ?3 N! ~- k5 \0 Q2 b6 g0 j" |  _! W4 U- O) m3 ?
随着总线技术在汽车电子领域越来越广泛和深入的应用,特别是自动驾驶技术的迅速发展,汽车电子对总线宽度和数据传输速率的要求也越来也高,传统CAN(1MBit/s,8Bytes?Payload)已难以满足日益增加的需求。' `( @$ Q$ e6 v( \7 L

( y) s" R0 L, F4 }3 S! m. W9 {! x因此在2012年,Bosch发布了新的CAN FD标准 (CAN with Flexible Data Rate) ,CAN FD继承了CAN的绝大多数特性,如同样的物理层,双线串行通信协议,基于非破坏性仲裁技术,分布式实时控制,可靠的错误处理和检测机制等,同时CAN FD弥补了CAN在总线带宽和数据长度方面的不足。
  {+ h# _3 R- `7 _% Z, H" l  _  d7 H& Y) x2 v. o
2015年6月30日,国际标准化组织(ISO)已经正式认可CAN?FD,并无反对票通过ISO 11898-1作为国际标准草案。* W5 ?4 r. X5 Q; y0 s
1  o, S$ p, K- k& }3 @1 e
什么是CAN FD?
1 c% m0 j2 T4 \0 p( E4 TCAN FD协议是由Bosch以及行业专家预研开发的,并于2012年发布。通过标准化对其进行了改进,现已纳入ISO 11898-1:2015。一开始的Bosch CAN FD版本(非ISO CAN FD)与ISO CAN FD是不兼容。1 [  N9 i) R8 N& u9 _, W5 h- z% T

9 q7 O: F9 p: a5 lCAN FD具有以下4个主要优点:( r5 l& _+ g" Q, Z6 E

) [$ T% S: V6 g# \6 L* O
+ A: N" M3 A$ E4 C. K" L/ F2 C
1、增加了数据的长度
8 N8 N- P( k# f9 ]  xCAN FD每个数据帧最多支持64个数据字节,而传统CAN最多支持8个数据字节。这减少了协议开销,并提高了协议效率。5 A) u4 O# |( x% W7 h9 L/ [
/ b4 x8 P8 k, j6 m4 X
; U" h, t% p; H# h7 ~3 f- @1 A
2、增加传输的速度. g/ q5 h# m" c
CAN FD支持双比特率:与传统CAN一样,标称(仲裁)比特率限制为1 Mbit/s,而数据比特率则取决于网络拓扑/收发器。实际上,可以实现高达5 Mbit/s的数据比特率。# ^' r  D) @( r/ S% C; ]
6 r/ ~1 X* A( I) v9 T

/ ], f- u% r/ N0 _# e3、更好的可靠性9 f4 p0 v3 E1 J& v  q
CAN FD使用改进的循环冗余校验(CRC)和“受保护的填充位计数器”,从而降低了未被检测到的错误的风险。这在汽车和工业自动化等安全攸关的应用中至关重要。
  O0 _# Z" a. C* u3 y+ A9 e, M0 S8 L3 }0 n, W2 a

# _8 O* I7 K) G2 w, ~; j4、平滑过渡
5 V$ Z, J+ j6 A& ~8 H在一些特定的情况下CAN FD能用在仅使用传统CAN的ECU上,这样就可以逐步引入CAN FD节点,从而为OEM简化程序和降低成本。
7 V) ?# q$ U- z4 u0 m2 [实际上,与传统CAN相比,CAN FD可以将网络带宽提高3到8倍,从而为数据的增长提供了一种简单的解决方案。
4 a( M: O- m, V/ W/ r2
' G) z4 v1 u3 F3 @' sCAN FD帧结构- Z( x- [7 @0 a/ k5 r% I7 Z
CAN FD节点可以正常收、发CAN报文,但CAN节点不能正确收、发CAN FD报文,因为其帧格式不一致。; A3 ?5 b5 V% m* T6 Y: v

7 T' ~6 `* u) r0 `

tvzhdi0uwmr64018799944.png

tvzhdi0uwmr64018799944.png
; B" J% k4 v% @& i. e9 H# g$ v

5 ~# t3 E$ s& k7 [. L2 B, @与CAN一样,CAN FD一共具有:帧起始,仲裁段,控制段,数据段,CRC段,ACK段和帧结束,7部分组成。- q3 x/ O+ I  L3 N. p' T

' Z% Y9 O$ _( ^6 x2.1、帧起始
5 O# u2 {* p( \6 d2 ZCAN与CANFD使用相同的SOF标志位来标志报文的起始。帧起始由1个显性位构成,标志着报文的开始,并在总线上起着同步作用。
* |3 E1 t5 s7 m/ A) ~4 a2 i3 ~0 ?! N& J. ^2 Z0 t! b) K

h0mibpp0xdb64018800044.png

h0mibpp0xdb64018800044.png
4 G% b. v& y" l7 }4 @! P

; R: A6 o- S7 |9 N2.2、仲裁段: N0 I! T* D4 C# v$ [" U
与CAN不同,CAN FD取消了对远程帧的支持,用RRS位替换了RTR位,为常显性。IDE用于区分标准帧和扩展帧。- B, B7 s7 r( t" A4 @* W: Q3 P1 D

. j8 Z$ [4 S: F4 z3 U6 X" j' |

s3c5a41hry364018800144.png

s3c5a41hry364018800144.png
( x2 N8 `& N3 k1 b2 p1 ^9 q4 S" V
% E1 b2 t  Z: h
标准帧仲裁段由11位ID和r1位(显性)、IDE(显性)组成,总共13位。1 U0 V! J7 h0 r3 u1 N3 q
扩展帧仲裁段由29位ID和SRR(隐性)、IDE(隐性)、r1位(显性)组成,总共32位。
' j. e/ p% {$ L, f: d2 h) {
  • SRR:替代CAN标准帧中的RTR位;
  • IDE:扩展帧标志位;
  • r1:保留位,为显性。
    , c% K7 B' i2 L2 X" r# r, D2 R% O# N
    0 x& o: X0 x- H6 B: f( X
    2.3、控制段9 ?/ {* h: Q" w' u
    CAN FD与CAN有着相同的IDE、res和DLC位,同时增加了FDF、BRS、ESI三个bit位。
    , N0 W( l$ N& z
  • 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)。7 D" ?0 N# O; l2 p+ _" Z

    # x3 _0 t6 Y6 R& s/ \
    / W5 Z! C- D3 A

    0hmtg4g0iiz64018800244.jpg

    0hmtg4g0iiz64018800244.jpg
    / q1 G7 J0 L4 T! |

    7 Q$ d$ R% j/ x$ ]2 f2 ?2.4、数据段 / O  P" u* W- |" O* h. P
    CAN FD兼容CAN的数据格式,同时最大还能支持:12、16、 20、 24、 32、 48和64byte。/ c) A- A* z! ?6 }+ R3 Z" `+ u( e) |

    3 N. `7 Q9 G, N- k. e像在传统CAN中一样,CAN FD DLC是4位,表示帧中数据字节的数量。为了维持4位DLC,CAN FD使用从9到15的其余7个值来表示所使用的数据字节数(12、16、20、24、32、48、64)。
    2 f( k  C) E& I2 ^. k" Y3 `
    # P$ }& D; `) v6 F, b

    41zf1fngdv264018800344.png

    41zf1fngdv264018800344.png

    1 E  ?, i. I, Y( F# I5 H编辑
    ( ?. s& [: \" z

    y2qkyb0dtw364018800444.png

    y2qkyb0dtw364018800444.png

    : ^; v" J4 y  x/ ^$ ^$ z( T
    - {/ `( h0 f# v# I4 s# q2.5、CRC段
    $ e* U  k5 Y' u* i; h& `- c传统CAN中的循环冗余校验(CRC)为15位,而在CAN FD中由固定填充位FSB(6/7位)、填充位计数(4位)、CRC(17/21位)和CRC界定符(1位)组成,总共28或33位组成。在传统CAN中,CRC中可以包含0到3个填充位,而在CAN FD中,总是有4个固定填充位以提高通信可靠性。
    : L( f  o' T$ \8 B5 F
    9 |! U4 v4 L. w+ `% L6 S5 V: N

    wr0pymmgfpe64018800544.png

    wr0pymmgfpe64018800544.png
    : u8 g. x; [$ }+ V0 T

    4 m2 o  P9 [! E6 P; z4 k9 g固定填充位(FSB):CRC段中每4个位固定填充一个与上位相反的位。8 R1 i- k% Z' z" }  q6 G
  • 采用CRC17时,FSB为6个位;
  • 采用CRC21时,FSB为7个位。4 V7 v* D( ~& f. `
    8 U; s& j1 g  F
    填充位计数:由填充位计数(3位)和奇偶校验位(1位)组成。2 k& z9 u4 A! x
    # F0 }1 ]: C, d, L- p
    CRC:' ?0 ?" P( s- z
  • 报文长度小于16时,采用CRC17,17位组成;
  • 报文长度大于16时,采用CRC21,21位组成。
    + F( x: K- q: O, |# Q
    6 Q" L$ b: Q- j
    CRC界定符:固定为隐性位;从该位采样后,切换为仲裁域波特率。
    ' ?9 I, U5 Q* t& \; x. [
    6 W4 c& G: M4 o% j

    ve42wunxsmk64018800644.png

    ve42wunxsmk64018800644.png

    ' Z7 i9 s2 N) i; a! T6 `/ f8 q% w/ M1 W
    2.6、ACK段
    5 T3 m$ ~: v3 @6 t( |* d& v& o1 q" cACK紧跟着CRC结束标识位。不同的是,CAN FD支持2bits的ACK的识别,由ACK位和ACK界定符位组成。
    + ~" v3 X4 B! K( z: o1 y0 W
  • ACK:接收节点应答位,接收节点应应答显性位;
  • ACK界定符,固定为隐性。
    6 T' n& _& p1 O
    $ ], H# h$ ?: l  J2 h

    4 ?, D2 Q2 o& C& Q" K

    gomnvrtbgra64018800744.png

    gomnvrtbgra64018800744.png
    5 e1 t% }5 k3 o

      y: h6 q7 S. d3 D2.7、帧结束8 p# u" C! \. u7 T7 c6 Z
    与CAN一样,CAN FD的帧结尾也为连续7位的隐性位。5 H3 M- Z$ N5 S) f
    3
    . P0 G/ V: I: v- F, u$ R一帧CAN FD报文位数
    " v* O# D# c# O根据CAN FD帧结构组成,可以算出一帧CAN FD报文位数:# H0 p/ l! R" V; p

    9 E& b' z, v9 U& Z  L6 GCAN FD报文位数 = 帧起始(1位)+ 仲裁段(13/32位)+ 控制段(8位)+ 数据段(0~512位)+ CRC段(28/33位)+ ACK段(2位)+ 帧结束(7位)
    : X8 {( l( ?7 u) s
    4 [  u. R' ?; n1 u4 O9 g* g
    : k, e6 U) j. x. Z) b
    影响报文位数主要为仲裁段(帧ID长度)和数据段(CRC段受数据段长度影响)。通过帧类型、帧长度组合出不同情况报文位数:
    . Q6 l* K: u! `- e
  • 标准帧,数据0字节' j: i0 |; d# D* O* U
    帧起始(1位)+ 仲裁段(13位)+ 控制段(8位)+ 数据段(0位)+ CRC段(28位)+ ACK段(2位)+ 帧结束(7位)= 59位& P8 R$ G2 b0 I8 s5 _; {
  • 标准帧,数据64字节; z2 J& x  d/ ?$ I
    帧起始(1位)+ 仲裁段(13位)+ 控制段(8位)+ 数据段(512位)+ CRC段(33位)+ ACK段(2位)+ 帧结束(7位)= 576位+ B$ T; Y3 Y! C5 W
  • 扩展帧,数据0字节
    5 e8 E) V: f# N
    帧起始(1位)+ 仲裁段(32位)+ 控制段(8位)+ 数据段(0位)+ CRC段(28位)+ ACK段(2位)+ 帧结束(7位)= 78位7 F7 E2 Y( }/ G0 P, z# z  Q
  • 扩展帧,数据64字节
    7 Q: ^7 R/ x% J" A% c4 k* U& A0 N5 j
    帧起始(1位)+ 仲裁段(13位)+ 控制段(8位)+ 数据段(512位)+ CRC段(33位)+ ACK段(2位)+ 帧结束(7位)= 590位
    ( X5 C- J3 v% G$ r: t4
    1 f- w, d2 b) a精品专栏仲裁域和数据域位数: K; L% D0 B; k% g) w
    由于CANFD采用了双波特率形式:标准波特率(也称仲裁域波特率)和数据域波特率,所以帧结构中不同段采用的波特率也不同。. |$ E. \. S2 K# Z$ \7 Y
  • 仲裁域波特率所占位数帧起始(1位)+ 仲裁段(13位)+ 控制段的EDL、r0、BRS(3位)+ ACK段(2位)+ 帧结束(7位)
  • 数据域波特率所占位数控制段的ESI、DLC(5位)+ 数据段(0~512位)+ CRC段(28/33位)5 g$ O' V6 a3 |
    ( Y! v! h' k( ~" ^. \4 `% N
    主要说明的是,BRS位和CRC界定符位均同时使用了两个波特率
    2 L3 T# A0 V3 C6 ^% G; Z
  • BRS位:由**仲裁域波特率 * 仲裁域采样点 + 数据域波特率 * (1 - 仲裁域采样点)**组成;
  • CRC界定符:由**数据域波特率 * 数据域采样点 + 仲裁域波特率 * (1 - 数据域采样点)**组成。+ d+ n. s4 r% i8 R8 e5 W

    % @1 n0 }1 \% k  U' a. f此处将BRS认定采用仲裁域波特率、CRC界定符采用数据域波特率以方便计算。
    3 Y6 i! [8 k6 f& `$ V- J5
    : t9 K. t9 [2 R2 f, V位填充4 Z& ?# `- J# i0 c  ]( @* C2 @8 M
    当然,上述报文位数中,还未包含填充位个数。在CAN/CAN FD协议中规定:每5个相同的位就必须填充一个相反位,该位即为填充位。2 x# a$ J8 I& ]/ c7 z6 d

    5 d  x% u# N  h) z我们知道字节0x55或0xAA,其二进制分别为0101 0101或1010 1010,也就是每个位与上一位均相反,若此时ID和数据均为0x55或0xAA,则可以使填充位个数最少。: k2 S. i' Z* j2 A  n8 k0 }" I
    - X( H# G2 j. f7 P9 z2 h' ~
    同理,字节0xFF或0x00,其二进制位1111 1111或0000 0000,也就是所有位均一致,若此时ID和数据均为0x00或0xFF,此时报文的填充位个数最多。: z5 ]6 r* ]$ {
    6
    1 _, @  E, T% b+ B' E不同类型报文位数# X, l4 X% V3 q% ?+ [. F
    基于以上报文位数的计算,我们可以得出算出不同类型报文所占位数,如下表所示:$ W2 @9 O# \$ ~1 p  ^  w. ?6 t0 H+ ?& X

    ' B% w% s3 l7 u5 J4 X

    3hcybfif01d64018800845.png

    3hcybfif01d64018800845.png
    0 D' R& M, J+ X

    2 ?4 X9 \$ N# ]: a$ A从上表可知:- \$ U3 |7 S" j8 q1 {2 b, W( o$ A
  • 当报文为CAN FD标准帧ID为0x555,数据长度为0时,报文位数最少,为59位;
  • 当报文为CAN FD扩展帧ID为0x0,数据长度为64字节,数据全为0xFF时,报文位数最多,为703位。; s  O( y4 j" s2 ?2 R

    9 b; ]/ F& T) n* |/ K) d7
    9 N1 P2 i- h( [2 [1 g9 mCAN FD报文时间计算
    / z. T, T& l' U8 N最后,可以根据波特率算出不同类型报文时间了,计算公式如下:
      G* j' N  A" M. g, {" f' u# g* x+ W7 M% ^: B' d
    报文时间 = 仲裁域位时间 * 仲裁域位数 + 数据域位时间 * 数据域位数5 E) y' q4 ?) h# p
    ' |! c' u7 U) l
    & Y# s" c4 T2 A* S; r% ?" ]' o
    以位数最少的CANFD报文为例,在仲裁域波特率为1Mbps(位时间1us),数据域波特率为5Mbps(位时间200ns)时,其报文时间 = 1us * 26 + 33 * 200ns = 32.6us。# B' ^8 v1 M4 k# ?
    8 t6 f* u& T8 w; p" w$ ?
    那么一秒钟最多可以发送报文呢?由于报文发送成功后,需经过帧间隔(3个位)后才能发送下一帧报文,也就说仲裁段要在原来基础上加3个位,就可以算出每秒发送多少帧了。那么上述位数最少报文的发送时间耗时 = 1us * (26 + 3) + 33 * 200ns = 35.6us,也就是1秒钟最多可以发送1000000us / 35.6us = 28089帧报文。也就是说,1M/5M波特率下,发送CAN FD标准加速帧,最多可以发送28089帧。" q* m& I2 W+ o4 ~3 ]0 V
    % u# ]3 x( ~2 A, x0 P8 I, w6 |
    1 f- t/ q. m. [* }. }, Y7 t
    下面我们给出一些常用波特率下,不同类型报文每秒最多可以发送的CANFD报文帧数(下表中报文BRS位为1,ESI位为0),供大家参考。
    " i! [, r% Y. s2 ?: Y4 l
    " g/ R; D5 |0 r4 ^  o

    yc5invgusdw64018800945.png

    yc5invgusdw64018800945.png

    4 T( O% O8 C: g% P' M3 ?
    : {1 Q! e1 N9 h5 |  [( w1 O; ?9 a) s# A3 T6 W9 n) ~

    kjiyssyjpv464018801045.png

    kjiyssyjpv464018801045.png
    ) g; e8 |4 r$ I. Y# Z
    ( k% T4 D# _2 u+ ~( n- S$ v
    ! f" F) n: v9 a( V5 ~- N

    iuhwsoola0c64018801145.png

    iuhwsoola0c64018801145.png
    3 w' H+ ^7 P+ e, n
    ; ^2 O& j: l, [+ p

    & C( ]2 F/ V4 L  s

    lz0nbc2bo2o64018801245.png

    lz0nbc2bo2o64018801245.png
      X7 u! x* ~: X5 p9 k& ^1 k
    往期推荐详解AUTOSAR:AUTOSAR CAN网络管理/CAN NM& o- |9 u' G, @+ s' |" {  T8 k! P  j% E7 ~
    CAN总线网络中为什么需要安装终端电阻?' f" H5 {$ t& P3 d
    一文搞懂CAN和CAN FD总线协议) n) t! y4 f  S' v$ V
    CAN与CAN FD通信之间存在的问题# B, k- t4 U. D0 E  I. f: j
    详解CAN总线:CAN总线通信优先级机制
    % {0 B% X  K( a) q详解CAN总线:CAN总线故障界定与管理( S$ a1 f) k* J0 j: P

    3 @+ u5 Z0 Y0 F4 n4 r9 ^2 v( W  n

    wxa5vstfiqv64018801345.jpg

    wxa5vstfiqv64018801345.jpg
      u+ F. y4 Z5 l( o" i* S

    wns5vw4p32464018801445.gif

    wns5vw4p32464018801445.gif
    $ j7 X) P5 }3 |) X7 Q
    点击阅读原文,更精彩~
  • 回复

    使用道具 举报

    发表回复

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

    本版积分规则


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