电子产业一站式赋能平台

PCB联盟网

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

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

[复制链接]

397

主题

397

帖子

2455

积分

三级会员

Rank: 3Rank: 3

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

1tjjvajtpqm640347403.gif

1tjjvajtpqm640347403.gif
5 X' w* R- l" Q3 l
点击上方蓝色字体,关注我们
- l3 }% u* q+ C2 H9 d$ J3 W4 e6 n) S. X. e# Y: ]
随着总线技术在汽车电子领域越来越广泛和深入的应用,特别是自动驾驶技术的迅速发展,汽车电子对总线宽度和数据传输速率的要求也越来也高,传统CAN(1MBit/s,8Bytes?Payload)已难以满足日益增加的需求。6 E! @2 V. v9 a$ F$ Y1 U6 K
. W7 y2 {/ j" n# F8 o  t
因此在2012年,Bosch发布了新的CAN FD标准 (CAN with Flexible Data Rate) ,CAN FD继承了CAN的绝大多数特性,如同样的物理层,双线串行通信协议,基于非破坏性仲裁技术,分布式实时控制,可靠的错误处理和检测机制等,同时CAN FD弥补了CAN在总线带宽和数据长度方面的不足。
# \* J3 l/ n. _6 l0 E/ R$ g6 t+ l4 C! L- W/ a$ s$ `, w
2015年6月30日,国际标准化组织(ISO)已经正式认可CAN?FD,并无反对票通过ISO 11898-1作为国际标准草案。
1 E+ o! ?( p  [% h3 P11 h# m8 f! z. h' m1 k
什么是CAN FD?
$ [9 Z3 h+ z0 F2 y0 lCAN FD协议是由Bosch以及行业专家预研开发的,并于2012年发布。通过标准化对其进行了改进,现已纳入ISO 11898-1:2015。一开始的Bosch CAN FD版本(非ISO CAN FD)与ISO CAN FD是不兼容。
6 m% D) A  N7 N) o. ^/ P* R. H: u/ N* z
CAN FD具有以下4个主要优点:  G* {* _2 f; A  R' N/ z2 n+ B
% U9 `  d! ~* _% n4 ?9 c, h+ K
( x+ @) e9 y- X) p
1、增加了数据的长度6 [1 {& m# z3 l2 r
CAN FD每个数据帧最多支持64个数据字节,而传统CAN最多支持8个数据字节。这减少了协议开销,并提高了协议效率。
/ J, S# ~: o, {4 Z0 m7 F0 e+ M
! _! Z, B% y4 A

# M& S( k" l6 g) t% L2、增加传输的速度
* }/ w* ]( i9 N3 S2 R: ^CAN FD支持双比特率:与传统CAN一样,标称(仲裁)比特率限制为1 Mbit/s,而数据比特率则取决于网络拓扑/收发器。实际上,可以实现高达5 Mbit/s的数据比特率。& `0 k* ^2 _( \* _& P
3 j: Q' |" ]4 E( e! h3 {
: ~1 r" P/ t3 U, v
3、更好的可靠性2 o. T% Z' t( a2 G, V% s
CAN FD使用改进的循环冗余校验(CRC)和“受保护的填充位计数器”,从而降低了未被检测到的错误的风险。这在汽车和工业自动化等安全攸关的应用中至关重要。, w/ G+ X; x4 Q2 e& E

- o7 x& t# g  I0 |$ |9 }

# i/ N& l  _  s8 C4、平滑过渡
) P% [. I, J; n9 c# Z在一些特定的情况下CAN FD能用在仅使用传统CAN的ECU上,这样就可以逐步引入CAN FD节点,从而为OEM简化程序和降低成本。
6 L& h# ^8 Y% c" F- K+ u实际上,与传统CAN相比,CAN FD可以将网络带宽提高3到8倍,从而为数据的增长提供了一种简单的解决方案。# o- P! V2 M$ q/ [' D% F
2; ~" P3 E" P# H9 A2 ?, i
CAN FD帧结构
( T) ~$ \$ x2 L: }" FCAN FD节点可以正常收、发CAN报文,但CAN节点不能正确收、发CAN FD报文,因为其帧格式不一致。4 ?+ J) N" p8 N; M7 {$ I. @% j
  v. Y; {9 ~7 U+ b9 l

avrp3a4gr4x640347503.png

avrp3a4gr4x640347503.png
8 F5 i* I' A1 I4 u& t/ F" S
" Z9 P  r  [, G, Y* c9 f
与CAN一样,CAN FD一共具有:帧起始,仲裁段,控制段,数据段,CRC段,ACK段和帧结束,7部分组成。
: a3 o" H8 e% F- ~2 l. d4 m9 g& c# @% i9 F, C- C
2.1、帧起始& j6 S' w6 [( ?; I
CAN与CANFD使用相同的SOF标志位来标志报文的起始。帧起始由1个显性位构成,标志着报文的开始,并在总线上起着同步作用。- ]9 V3 R. H+ J3 O; A: {3 v

. V8 a5 @8 p& L8 a) A) x

ttufngd1tby640347603.png

ttufngd1tby640347603.png
. b5 Y5 J( H8 u& g* L9 \$ ^
& K4 H9 \, R, s) g& Y( y
2.2、仲裁段
( B; a6 _# h3 {6 W5 O2 N* M与CAN不同,CAN FD取消了对远程帧的支持,用RRS位替换了RTR位,为常显性。IDE用于区分标准帧和扩展帧。' c$ m- d* B: g2 Y0 R" C/ {9 v- A

- t) m/ c  M$ S' ~3 s0 q

vgcbnfvvtae640347703.png

vgcbnfvvtae640347703.png
' D, s1 ]+ X7 c. ^6 |: h; o7 ~

% P9 z1 I' A9 _5 E0 T+ R3 r0 `标准帧仲裁段由11位ID和r1位(显性)、IDE(显性)组成,总共13位。. c- o3 s3 i; z- o& T; }7 h
扩展帧仲裁段由29位ID和SRR(隐性)、IDE(隐性)、r1位(显性)组成,总共32位。( g/ l1 y% m; j
  • SRR:替代CAN标准帧中的RTR位;
  • IDE:扩展帧标志位;
  • r1:保留位,为显性。
    , T* t% z/ J0 g5 Q$ |; X
    : `$ _& F( n( B) B' A( V
    2.3、控制段  f; j2 I# T# b& |; u
    CAN FD与CAN有着相同的IDE、res和DLC位,同时增加了FDF、BRS、ESI三个bit位。) h# K- W1 D* Y+ }' c1 ]
  • 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)。
    1 X+ p! h; F' ~! q+ g; Y; n

    8 U  n5 V% F8 p6 k
    7 T: ~$ l* u# R: v. ^

    hgxjrs4oadc640347803.jpg

    hgxjrs4oadc640347803.jpg

    2 a! t+ h! s# P" \$ R) [; \3 k* J+ }- U
    2.4、数据段 3 x6 ?' u& u/ h) `/ ]
    CAN FD兼容CAN的数据格式,同时最大还能支持:12、16、 20、 24、 32、 48和64byte。
    : m+ K3 D; o7 z! e; R
    . [: l- q8 b3 w  _像在传统CAN中一样,CAN FD DLC是4位,表示帧中数据字节的数量。为了维持4位DLC,CAN FD使用从9到15的其余7个值来表示所使用的数据字节数(12、16、20、24、32、48、64)。 ; ]5 a: c: @2 g
    7 V( V8 X' F* L% K2 d8 S3 V7 q

    3ngiuvt5awa640347904.png

    3ngiuvt5awa640347904.png

    8 P7 {! i6 m: v* q编辑
    ) j* X4 x- Y3 w8 P' P$ b% E

    xixk0w1gqs2640348004.png

    xixk0w1gqs2640348004.png
    7 Q1 @* {" \$ N

    ( U$ J  i: N/ Z9 k) @% {4 L+ m* u7 p2.5、CRC段% O5 @6 P/ S+ Y' J
    传统CAN中的循环冗余校验(CRC)为15位,而在CAN FD中由固定填充位FSB(6/7位)、填充位计数(4位)、CRC(17/21位)和CRC界定符(1位)组成,总共28或33位组成。在传统CAN中,CRC中可以包含0到3个填充位,而在CAN FD中,总是有4个固定填充位以提高通信可靠性。
    8 I/ ^# Z. M6 \1 s& T% y* r8 ?" `: j4 x5 k0 b4 y7 z, x* o# F

    2q4r1ssetuo640348104.png

    2q4r1ssetuo640348104.png

    / z  Y. V' q  P' p5 i/ V& Q
    , K2 c: z; Q2 h) S/ |& r固定填充位(FSB):CRC段中每4个位固定填充一个与上位相反的位。. n' k1 }' L5 b5 R% e
  • 采用CRC17时,FSB为6个位;
  • 采用CRC21时,FSB为7个位。
    ; P& v  t; O3 Q

    , q1 q( [* h- A' K: q. q填充位计数:由填充位计数(3位)和奇偶校验位(1位)组成。
    2 Q2 }# l: z; n* x: f
    + t! k3 |8 r  ICRC:) o4 u% c* {  b& d6 [$ q9 K0 S
  • 报文长度小于16时,采用CRC17,17位组成;
  • 报文长度大于16时,采用CRC21,21位组成。
    7 O) M. f* a6 j! n) F( h
    # ^, R8 D- j5 D9 @
    CRC界定符:固定为隐性位;从该位采样后,切换为仲裁域波特率。
    8 |6 _; b  S$ G+ F/ O8 ]
    $ o6 F+ g& s/ D. \$ N+ ]: H# c

    4k4efjqaaoj640348204.png

    4k4efjqaaoj640348204.png
    6 O# l7 D7 {! a! f/ N& v1 b

    + t* g, X& a5 ^: B: D6 D' _2.6、ACK段3 s# O' K) I9 v; J' [$ U, {6 Z- F
    ACK紧跟着CRC结束标识位。不同的是,CAN FD支持2bits的ACK的识别,由ACK位和ACK界定符位组成。
    ) t2 G& o, Y9 b0 _/ N8 W+ V
  • ACK:接收节点应答位,接收节点应应答显性位;
  • ACK界定符,固定为隐性。' v& k" ^3 m3 Y. P; f$ \9 {; W+ A

    6 p& f; |) @* D6 m/ _+ K# c2 l' a) }

    k5a1rm2trmw640348304.png

    k5a1rm2trmw640348304.png
    % t; S( J4 a$ Y6 Q; d% N  J

    ! J  G4 @3 F" `9 V* Y2.7、帧结束: X( @* l; i( y9 L
    与CAN一样,CAN FD的帧结尾也为连续7位的隐性位。, B" R4 c3 A0 a# H' N) u$ |
    3; D: b" A2 |" M. e# D! m- ~$ B( J
    一帧CAN FD报文位数# E5 w' Z3 I' x; l  k4 S7 f& j
    根据CAN FD帧结构组成,可以算出一帧CAN FD报文位数:
    4 T' ?8 Y8 Q, \
    9 ]1 ?, W- o9 _! R' U) YCAN FD报文位数 = 帧起始(1位)+ 仲裁段(13/32位)+ 控制段(8位)+ 数据段(0~512位)+ CRC段(28/33位)+ ACK段(2位)+ 帧结束(7位)
    ; ~7 ]2 B: R+ U4 W  l, Z6 t- Z8 B( ?7 `8 n" u

    / u/ U( o. _  e+ r$ {影响报文位数主要为仲裁段(帧ID长度)和数据段(CRC段受数据段长度影响)。通过帧类型、帧长度组合出不同情况报文位数:
      L5 L5 ~2 z8 U# Q* Q7 v3 E
  • 标准帧,数据0字节
    3 W/ o4 J5 S: d$ `% {4 P
    帧起始(1位)+ 仲裁段(13位)+ 控制段(8位)+ 数据段(0位)+ CRC段(28位)+ ACK段(2位)+ 帧结束(7位)= 59位. O# T+ a) `* g$ |. F1 \
  • 标准帧,数据64字节9 r; [7 E# U4 U2 Q# Y7 G
    帧起始(1位)+ 仲裁段(13位)+ 控制段(8位)+ 数据段(512位)+ CRC段(33位)+ ACK段(2位)+ 帧结束(7位)= 576位' E) x+ z; f! s# o( x) d
  • 扩展帧,数据0字节
    1 E0 i' R$ E. `9 J4 @3 _
    帧起始(1位)+ 仲裁段(32位)+ 控制段(8位)+ 数据段(0位)+ CRC段(28位)+ ACK段(2位)+ 帧结束(7位)= 78位) D* j( w- I, s
  • 扩展帧,数据64字节* R. @* S$ o! c; l# p
    帧起始(1位)+ 仲裁段(13位)+ 控制段(8位)+ 数据段(512位)+ CRC段(33位)+ ACK段(2位)+ 帧结束(7位)= 590位* E" M7 x( O' Q6 T) U6 ^
    4
    5 i7 n) a" s  ]6 \  Y! g6 E精品专栏仲裁域和数据域位数  n; b2 h5 G( f+ k/ _* |$ m. t+ z
    由于CANFD采用了双波特率形式:标准波特率(也称仲裁域波特率)和数据域波特率,所以帧结构中不同段采用的波特率也不同。3 k) C. r2 ^  P$ _6 W8 f
  • 仲裁域波特率所占位数帧起始(1位)+ 仲裁段(13位)+ 控制段的EDL、r0、BRS(3位)+ ACK段(2位)+ 帧结束(7位)
  • 数据域波特率所占位数控制段的ESI、DLC(5位)+ 数据段(0~512位)+ CRC段(28/33位)" A& t) H8 `8 d! J: J

    : J8 H5 M% a6 ]8 I2 U! q主要说明的是,BRS位和CRC界定符位均同时使用了两个波特率
    8 n' j2 Y: F- Q' W' N
  • BRS位:由**仲裁域波特率 * 仲裁域采样点 + 数据域波特率 * (1 - 仲裁域采样点)**组成;
  • CRC界定符:由**数据域波特率 * 数据域采样点 + 仲裁域波特率 * (1 - 数据域采样点)**组成。
    3 p5 h* I- X- [
    / M: E/ Q$ l4 M" r, r
    此处将BRS认定采用仲裁域波特率、CRC界定符采用数据域波特率以方便计算。
    " p6 ^' {; Y4 W; X! Q9 P5* r% P5 h: Y, p5 Q# c- ?9 |- ]
    位填充
    - t# G. C6 K: L, a当然,上述报文位数中,还未包含填充位个数。在CAN/CAN FD协议中规定:每5个相同的位就必须填充一个相反位,该位即为填充位。
    * G% y: N, ~% o" k9 N8 Q; c5 Y! Z# V: ]
    我们知道字节0x55或0xAA,其二进制分别为0101 0101或1010 1010,也就是每个位与上一位均相反,若此时ID和数据均为0x55或0xAA,则可以使填充位个数最少。" Y( C& j. W* z# c. U3 @
    4 P* Y& h( ^) H. V5 j' ]' f9 j
    同理,字节0xFF或0x00,其二进制位1111 1111或0000 0000,也就是所有位均一致,若此时ID和数据均为0x00或0xFF,此时报文的填充位个数最多。
    - ?* w" L4 G9 F; i' \8 s$ R  s6
    2 ^. c+ a+ t" V9 ^不同类型报文位数! S" m# P# `3 T
    基于以上报文位数的计算,我们可以得出算出不同类型报文所占位数,如下表所示:
    3 k& K4 X; K5 l$ `  k
    , B' p1 u6 h/ ]

    x3jk2nej4dq640348404.png

    x3jk2nej4dq640348404.png
    1 m8 k' ~5 }* J  j& K( v

    ) ]: E0 m' f, x6 S从上表可知:
    3 ~. c) A. O' i9 z  U/ I
  • 当报文为CAN FD标准帧ID为0x555,数据长度为0时,报文位数最少,为59位;
  • 当报文为CAN FD扩展帧ID为0x0,数据长度为64字节,数据全为0xFF时,报文位数最多,为703位。
    : P" b2 I. W4 R/ g. i, B

    6 s; q" H- Y- e7 L! [7% U; T# _; J0 k5 ]
    CAN FD报文时间计算: W. p! \2 W% |: ^4 i$ P% @2 b7 ~
    最后,可以根据波特率算出不同类型报文时间了,计算公式如下:
    $ ~' M2 Z& Z2 W0 _! O5 h& ~& R# {8 m- d8 ^# R$ K& d4 a- F/ X, O8 t
    报文时间 = 仲裁域位时间 * 仲裁域位数 + 数据域位时间 * 数据域位数
    1 x0 O' l: O) p: B! L3 z) P  h3 c% y* O/ u
    " I0 D" M) R% I1 p* D/ X. [' `, t
    以位数最少的CANFD报文为例,在仲裁域波特率为1Mbps(位时间1us),数据域波特率为5Mbps(位时间200ns)时,其报文时间 = 1us * 26 + 33 * 200ns = 32.6us。
    / p; j& ?8 i: r( o0 m6 ]7 O! K$ a" j# I$ K9 Z
    那么一秒钟最多可以发送报文呢?由于报文发送成功后,需经过帧间隔(3个位)后才能发送下一帧报文,也就说仲裁段要在原来基础上加3个位,就可以算出每秒发送多少帧了。那么上述位数最少报文的发送时间耗时 = 1us * (26 + 3) + 33 * 200ns = 35.6us,也就是1秒钟最多可以发送1000000us / 35.6us = 28089帧报文。也就是说,1M/5M波特率下,发送CAN FD标准加速帧,最多可以发送28089帧。
    5 s5 i& q8 x% V9 J" e1 p
    / w3 u3 J) M& }' G

    . t% h# L9 q1 J0 i! L下面我们给出一些常用波特率下,不同类型报文每秒最多可以发送的CANFD报文帧数(下表中报文BRS位为1,ESI位为0),供大家参考。
    - W: U) A  {( v7 p; Q$ N$ B
    6 q1 k9 v& Z) J$ S/ h* ~1 I6 b

    hlwh3xofe3u640348504.png

    hlwh3xofe3u640348504.png
    ! F  {, y: C+ j- }/ F
    ; U* U1 a9 R* m( b" u$ a
    + K+ ^7 l3 k9 n, I' j5 F) ~

    aj1ag2z24ip640348605.png

    aj1ag2z24ip640348605.png
    $ i+ w- z8 Q8 v# {7 f2 Y

      A: K& T! P, n6 j! H6 e
    + P# i& Z5 g9 k7 _% \

    uc5hltq5100640348705.png

    uc5hltq5100640348705.png

    8 O9 z; \/ p, v, x* ~& p) |% \, {7 N
    * d! o+ z0 y) n5 G2 I

    cfhvuqoapiu640348805.png

    cfhvuqoapiu640348805.png

    # F4 F  P, y7 ?% a* M/ A7 S4 y往期推荐详解AUTOSAR:AUTOSAR CAN网络管理/CAN NM
    ( m  j" X8 ?# Q( i2 x# hCAN总线网络中为什么需要安装终端电阻?  [% i. t8 L, d8 b2 {& M
    一文搞懂CAN和CAN FD总线协议
    8 x6 x0 [& G& V/ A- j2 ]& ^) bCAN与CAN FD通信之间存在的问题
    % m: d2 \, @" |% S. v( R详解CAN总线:CAN总线通信优先级机制$ Y- r0 u9 I( H8 P% n
    详解CAN总线:CAN总线故障界定与管理
    # X) v2 z# V! W; i; B3 E4 K

    1 m, Q  X( ~+ x% O9 ?0 D6 U

    tamegrfwp1s640348905.jpg

    tamegrfwp1s640348905.jpg
    ( _, q$ t$ `2 q7 a

    nfowdwkln0i640349005.gif

    nfowdwkln0i640349005.gif
    4 n, D! Y1 y/ `* |1 I1 t
    点击阅读原文,更精彩~
  • 回复

    使用道具 举报

    发表回复

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

    本版积分规则


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