电子产业一站式赋能平台

PCB联盟网

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

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

[复制链接]

1001

主题

1001

帖子

8805

积分

高级会员

Rank: 5Rank: 5

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

xk5zwy3weyh64015950903.gif

xk5zwy3weyh64015950903.gif

+ M! B$ r( e: P点击上方蓝色字体,关注我们
3 ]" m5 d2 z, V$ {/ [$ y. a8 s
& m4 F( U2 ]8 }, d随着总线技术在汽车电子领域越来越广泛和深入的应用,特别是自动驾驶技术的迅速发展,汽车电子对总线宽度和数据传输速率的要求也越来也高,传统CAN(1MBit/s,8Bytes?Payload)已难以满足日益增加的需求。  ^  x) z- K; Y7 j
' ^: R8 x' F5 H& y% J% D9 s; P6 \
因此在2012年,Bosch发布了新的CAN FD标准 (CAN with Flexible Data Rate) ,CAN FD继承了CAN的绝大多数特性,如同样的物理层,双线串行通信协议,基于非破坏性仲裁技术,分布式实时控制,可靠的错误处理和检测机制等,同时CAN FD弥补了CAN在总线带宽和数据长度方面的不足。
3 T# B3 H' ~: o- m" F, v
' H8 ]( P' P" ], @( F* z/ C2015年6月30日,国际标准化组织(ISO)已经正式认可CAN?FD,并无反对票通过ISO 11898-1作为国际标准草案。- s  {/ P) v: k* j/ ^5 D" m
1
) |) b6 J4 R/ a' x% l' h什么是CAN FD?6 y) ^, f( v+ T8 s( w' V. P2 z. `7 `" C
CAN FD协议是由Bosch以及行业专家预研开发的,并于2012年发布。通过标准化对其进行了改进,现已纳入ISO 11898-1:2015。一开始的Bosch CAN FD版本(非ISO CAN FD)与ISO CAN FD是不兼容。# c. g; I* I. i& |
% ^8 n' C- D/ \( z
CAN FD具有以下4个主要优点:
  J2 \- w& G0 o" p+ \$ K) ^& o% p: z! e6 l# x& b: f. g2 f3 u1 {4 T

8 A) B- @, U$ o1 r1、增加了数据的长度
  E: m7 H# P5 s- pCAN FD每个数据帧最多支持64个数据字节,而传统CAN最多支持8个数据字节。这减少了协议开销,并提高了协议效率。
; W- l" l3 `1 i# J8 w/ o+ I# B% A
6 z9 ^* w! T# X, g" t3 y

* [) F' k& d% S% H; Z2、增加传输的速度( j9 U3 q2 t( H  z: W" g
CAN FD支持双比特率:与传统CAN一样,标称(仲裁)比特率限制为1 Mbit/s,而数据比特率则取决于网络拓扑/收发器。实际上,可以实现高达5 Mbit/s的数据比特率。2 ~0 |4 S% x0 Z! F. P' B" B' l

" g( _+ h8 D. N3 K, t8 t; ~

  b; S# N" S4 {: {8 {3、更好的可靠性6 X! |! j# @, M" O8 g
CAN FD使用改进的循环冗余校验(CRC)和“受保护的填充位计数器”,从而降低了未被检测到的错误的风险。这在汽车和工业自动化等安全攸关的应用中至关重要。
" J4 c/ Y" A$ }3 [) d8 X! [5 G3 i2 p
3 y9 Q1 t) [* ?) u5 ]4 Z6 \
/ X) V) l! x1 Z3 r3 u* V$ z2 U
4、平滑过渡) O6 |# Q; i# ?+ ~' U* {
在一些特定的情况下CAN FD能用在仅使用传统CAN的ECU上,这样就可以逐步引入CAN FD节点,从而为OEM简化程序和降低成本。  |! E- E7 {+ I; w6 [" r: Z
实际上,与传统CAN相比,CAN FD可以将网络带宽提高3到8倍,从而为数据的增长提供了一种简单的解决方案。
3 i. S  Z5 E. H1 k& Y0 J22 i6 `* v* T" S3 G  ^( [2 P
CAN FD帧结构
& r1 P, D& G# y' [& MCAN FD节点可以正常收、发CAN报文,但CAN节点不能正确收、发CAN FD报文,因为其帧格式不一致。
8 z& d! K; e9 ^, d5 i
: ~* a- i2 e! r+ Z2 [0 w% q. L

qmxwy0vo2x564015951003.png

qmxwy0vo2x564015951003.png

4 m8 O; G- H1 r+ q  k. b) }8 g) D  i& y8 M5 O# W8 a5 K
与CAN一样,CAN FD一共具有:帧起始,仲裁段,控制段,数据段,CRC段,ACK段和帧结束,7部分组成。* C& h( [) J5 x) Q, I1 d
$ D. \3 }" K5 a# {& Y
2.1、帧起始
+ N+ k* D6 b7 e) G, b0 W6 fCAN与CANFD使用相同的SOF标志位来标志报文的起始。帧起始由1个显性位构成,标志着报文的开始,并在总线上起着同步作用。
. Z$ M: Q9 J  }# w9 f
6 [) m  j' c- Q

m3bkhlkljkv64015951103.png

m3bkhlkljkv64015951103.png

7 E, [2 G: t* X; ?+ C* v4 n+ o, |$ z% t3 }0 u8 C) I
2.2、仲裁段
" C0 U" B* m- q' X+ B& u: |与CAN不同,CAN FD取消了对远程帧的支持,用RRS位替换了RTR位,为常显性。IDE用于区分标准帧和扩展帧。
, m: [2 g8 g, g; P2 J. F
4 n$ h, I' w" c

ixfdn0pzjvp64015951204.png

ixfdn0pzjvp64015951204.png
3 e+ D) S7 E9 u- m; }4 _9 u. R
5 p# e! H' U/ H6 R, y
标准帧仲裁段由11位ID和r1位(显性)、IDE(显性)组成,总共13位。6 q/ S# l3 H* F% U( T
扩展帧仲裁段由29位ID和SRR(隐性)、IDE(隐性)、r1位(显性)组成,总共32位。* b/ u" F8 _8 V- G
  • SRR:替代CAN标准帧中的RTR位;
  • IDE:扩展帧标志位;
  • r1:保留位,为显性。# l" @+ k, F! n+ C) C0 j
    ' V' @' n( ?+ u0 b& a# N6 V
    2.3、控制段
    2 r; h4 v/ _1 [" yCAN FD与CAN有着相同的IDE、res和DLC位,同时增加了FDF、BRS、ESI三个bit位。4 c- ]( W4 a3 Z2 _( u7 B, g2 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 a3 e/ u4 n' |2 i- Y' N  Z

    : z* w; f& T; E, O' h4 v& S2 {- D  L/ S- E( D

    xp0svatf12264015951304.jpg

    xp0svatf12264015951304.jpg

    2 p; c. Y: z$ H' E+ G6 E! I! M  Y9 \" K, |
    2.4、数据段 6 |' c$ S) a% F
    CAN FD兼容CAN的数据格式,同时最大还能支持:12、16、 20、 24、 32、 48和64byte。
    $ e( P9 s" L9 v% V: l" w- I
    ; x% c, P( Q  ?* S# g7 `像在传统CAN中一样,CAN FD DLC是4位,表示帧中数据字节的数量。为了维持4位DLC,CAN FD使用从9到15的其余7个值来表示所使用的数据字节数(12、16、20、24、32、48、64)。 . W% e  }8 ]7 X2 r) X
    " O) A6 g4 a, S! M. k

    se5z1b2slfd64015951404.png

    se5z1b2slfd64015951404.png
    / p( c7 q, Z- v3 Z
    编辑
    5 a; @/ O8 [. V

    xoavynovmn564015951504.png

    xoavynovmn564015951504.png

    / R1 ~2 k. U# l8 a+ @3 m; O( R" M, D
    $ j8 a' ?% n% J! d8 j$ K2.5、CRC段2 P: G8 d6 ]) K2 l9 u6 q
    传统CAN中的循环冗余校验(CRC)为15位,而在CAN FD中由固定填充位FSB(6/7位)、填充位计数(4位)、CRC(17/21位)和CRC界定符(1位)组成,总共28或33位组成。在传统CAN中,CRC中可以包含0到3个填充位,而在CAN FD中,总是有4个固定填充位以提高通信可靠性。
    $ {# X( s4 ^$ q( m& T1 W4 s: i8 U, J  o

    ueb3o3ddkac64015951604.png

    ueb3o3ddkac64015951604.png
    7 W5 G, o& d, j7 M" E' G8 L

    . {  _! c; W7 T固定填充位(FSB):CRC段中每4个位固定填充一个与上位相反的位。0 K( y$ ~/ E- J; k
  • 采用CRC17时,FSB为6个位;
  • 采用CRC21时,FSB为7个位。' u+ n' n/ ~! R; H7 F! U

    9 K8 n9 U2 G5 l1 M填充位计数:由填充位计数(3位)和奇偶校验位(1位)组成。
    ; h& Z4 K1 [" ~& G9 m" k0 d7 y8 j, d- M5 y" Y
    CRC:8 D: S8 J9 A$ O! R% S/ I
  • 报文长度小于16时,采用CRC17,17位组成;
  • 报文长度大于16时,采用CRC21,21位组成。( e8 p% u$ _& ]

    5 g& f( K) W4 x. oCRC界定符:固定为隐性位;从该位采样后,切换为仲裁域波特率。+ S1 G$ f, [# x+ v/ N; G! B% c% o

    6 n! z$ R: b( r; O4 A7 N

    xjsun1kqran64015951704.png

    xjsun1kqran64015951704.png

    5 k1 p8 K+ _# D: f2 ~9 q, v+ T; Z, |, n: Q/ \( f
    2.6、ACK段
      L9 [) _/ V/ U5 t6 J/ e% cACK紧跟着CRC结束标识位。不同的是,CAN FD支持2bits的ACK的识别,由ACK位和ACK界定符位组成。5 O" T/ s: X7 r5 M/ R* c
  • ACK:接收节点应答位,接收节点应应答显性位;
  • ACK界定符,固定为隐性。
    $ D& F: c  L8 _8 J- ~

    3 i- y7 ~& @# R5 y3 N: s: N. b6 U; C  k

    d5mhfl1gwzn64015951805.png

    d5mhfl1gwzn64015951805.png

    $ W/ ^* F7 B' `: v
    ( g2 @! i) R2 [" @. t( g' E2.7、帧结束
    3 ~$ S( u" O; @. F" W与CAN一样,CAN FD的帧结尾也为连续7位的隐性位。6 ?* W. C: }+ |) t5 Z- r1 v- l
    3
    & W; U3 @0 \& {! k' {一帧CAN FD报文位数
    7 L( Y2 k% y0 M, s: |' y根据CAN FD帧结构组成,可以算出一帧CAN FD报文位数:
    ' ^3 p6 O, Z" c' Q' p6 Y) o% p
    8 L) M( T7 U- f, J' xCAN FD报文位数 = 帧起始(1位)+ 仲裁段(13/32位)+ 控制段(8位)+ 数据段(0~512位)+ CRC段(28/33位)+ ACK段(2位)+ 帧结束(7位)
    8 [/ M# B+ x1 W0 _, \, y7 R" J+ m# a/ x% ?

    7 q$ @$ J4 T  p影响报文位数主要为仲裁段(帧ID长度)和数据段(CRC段受数据段长度影响)。通过帧类型、帧长度组合出不同情况报文位数:5 N+ H! e9 B9 n2 ]0 F
  • 标准帧,数据0字节% H5 r( q3 q8 g) J0 F) J# q+ v, h
    帧起始(1位)+ 仲裁段(13位)+ 控制段(8位)+ 数据段(0位)+ CRC段(28位)+ ACK段(2位)+ 帧结束(7位)= 59位  ^& i9 N/ W( |* _. ^
  • 标准帧,数据64字节/ G7 \/ [1 r3 T* m$ q/ ]8 X$ B$ j
    帧起始(1位)+ 仲裁段(13位)+ 控制段(8位)+ 数据段(512位)+ CRC段(33位)+ ACK段(2位)+ 帧结束(7位)= 576位# E- J* @5 ~4 j2 A
  • 扩展帧,数据0字节
    + o2 k# w7 V8 X+ K: ^/ a) Y5 B2 e
    帧起始(1位)+ 仲裁段(32位)+ 控制段(8位)+ 数据段(0位)+ CRC段(28位)+ ACK段(2位)+ 帧结束(7位)= 78位! m3 G% m: V/ W: _, `! K' f% G" Z
  • 扩展帧,数据64字节5 @1 b4 h% _; B4 e4 ]! B9 l
    帧起始(1位)+ 仲裁段(13位)+ 控制段(8位)+ 数据段(512位)+ CRC段(33位)+ ACK段(2位)+ 帧结束(7位)= 590位
    4 N3 Z4 d9 W& p7 d! T: t6 m6 {4
    1 F" W; P2 S$ U) r精品专栏仲裁域和数据域位数& [8 j+ `3 S. |! E  {  i) R5 W: X
    由于CANFD采用了双波特率形式:标准波特率(也称仲裁域波特率)和数据域波特率,所以帧结构中不同段采用的波特率也不同。; x+ r; V( I# A: Y; P( F( A) m
  • 仲裁域波特率所占位数帧起始(1位)+ 仲裁段(13位)+ 控制段的EDL、r0、BRS(3位)+ ACK段(2位)+ 帧结束(7位)
  • 数据域波特率所占位数控制段的ESI、DLC(5位)+ 数据段(0~512位)+ CRC段(28/33位)
    $ d( m- F6 e( p
    : ?9 I3 d# F3 u/ L: }# A
    主要说明的是,BRS位和CRC界定符位均同时使用了两个波特率
    - s5 @4 m" H" I/ Y4 r& S$ v
  • BRS位:由**仲裁域波特率 * 仲裁域采样点 + 数据域波特率 * (1 - 仲裁域采样点)**组成;
  • CRC界定符:由**数据域波特率 * 数据域采样点 + 仲裁域波特率 * (1 - 数据域采样点)**组成。/ H& t2 Z+ e; b) T7 l
    ; X' J  u  R  `9 w# B$ J
    此处将BRS认定采用仲裁域波特率、CRC界定符采用数据域波特率以方便计算。
    ( e0 P$ c6 G2 U* f3 }7 ~% K5
    6 R! C# B% |5 t, G6 |6 [位填充+ p1 L  h; L  x  p  x+ P
    当然,上述报文位数中,还未包含填充位个数。在CAN/CAN FD协议中规定:每5个相同的位就必须填充一个相反位,该位即为填充位。
    ) T% D- P% g* H6 B: [$ c6 z% B" M" _, I* y- r
    我们知道字节0x55或0xAA,其二进制分别为0101 0101或1010 1010,也就是每个位与上一位均相反,若此时ID和数据均为0x55或0xAA,则可以使填充位个数最少。
    ; f: u8 K# f# m/ C
    % w7 J& P: O$ L% H0 F6 N同理,字节0xFF或0x00,其二进制位1111 1111或0000 0000,也就是所有位均一致,若此时ID和数据均为0x00或0xFF,此时报文的填充位个数最多。$ V2 t+ \# Q! F' D" v& s# ~
    6$ X5 h# K" B$ U9 F% N, z
    不同类型报文位数6 J6 a7 v; e" _2 z3 A8 X& m. P
    基于以上报文位数的计算,我们可以得出算出不同类型报文所占位数,如下表所示:
    ; K8 }2 i& U$ i3 h- w7 A: {9 [  A; r4 G% e7 ]; |2 |, B$ \2 Z$ M) V

    sgea0hmjxnn64015951905.png

    sgea0hmjxnn64015951905.png
    . S! K% |: u2 H* i, B3 A9 Y; h# I
    0 d" z- ~! d; \) u2 ]$ w7 w
    从上表可知:4 w. E) R( @& F6 H+ j6 n
  • 当报文为CAN FD标准帧ID为0x555,数据长度为0时,报文位数最少,为59位;
  • 当报文为CAN FD扩展帧ID为0x0,数据长度为64字节,数据全为0xFF时,报文位数最多,为703位。
    : [3 m# Q. n& x& I" y# H

    9 [3 D2 O, g# f$ s" s3 y7+ A& f2 O9 ]7 d* {: Z' V+ O* u
    CAN FD报文时间计算' z, q# y* E: I2 }& }1 u* b
    最后,可以根据波特率算出不同类型报文时间了,计算公式如下:
    4 K" n: O$ R; V: ?4 f7 O! W9 {6 E. T1 A* I' b! T! w$ U- A
    报文时间 = 仲裁域位时间 * 仲裁域位数 + 数据域位时间 * 数据域位数
    ) S0 x1 V& T/ }$ J( r# e3 z5 S3 q, c" ?& k: C5 I5 q

    9 |$ y- M3 j$ @以位数最少的CANFD报文为例,在仲裁域波特率为1Mbps(位时间1us),数据域波特率为5Mbps(位时间200ns)时,其报文时间 = 1us * 26 + 33 * 200ns = 32.6us。4 j! W9 G) O0 r6 B

    # H! P' @# @5 a! d  C5 H' u那么一秒钟最多可以发送报文呢?由于报文发送成功后,需经过帧间隔(3个位)后才能发送下一帧报文,也就说仲裁段要在原来基础上加3个位,就可以算出每秒发送多少帧了。那么上述位数最少报文的发送时间耗时 = 1us * (26 + 3) + 33 * 200ns = 35.6us,也就是1秒钟最多可以发送1000000us / 35.6us = 28089帧报文。也就是说,1M/5M波特率下,发送CAN FD标准加速帧,最多可以发送28089帧。
    7 r# b6 [; H, }$ j7 v& |7 U8 i3 i! H% j4 m: j, H! ?
    ; d6 J# w* C( Z0 @( o- D+ [9 E
    下面我们给出一些常用波特率下,不同类型报文每秒最多可以发送的CANFD报文帧数(下表中报文BRS位为1,ESI位为0),供大家参考。! x  l7 n  o) C) n
    - Q* q  b+ e: f7 `7 m

    4qvfevh5dso64015952005.png

    4qvfevh5dso64015952005.png

    - V  H5 M; }9 T+ w1 f" [, V% r
    " Y( s8 h' O- P. w' f
    / O) N: p4 C' r" j

    hjslvshcpok64015952105.png

    hjslvshcpok64015952105.png
    6 C; c; S9 l9 w# }( E

    , t5 I  i' w" t7 Q- z( ~
    / q" J3 H: p0 r+ S  l6 [6 e0 ^9 M

    pnqtvnrwtxz64015952206.png

    pnqtvnrwtxz64015952206.png

    + R) T2 `7 M3 p* W4 Q/ l5 t
    - k: p: g$ }6 Z' H; _  B
      {1 ^& g: q$ n' K

    bkvnydpd1tk64015952306.png

    bkvnydpd1tk64015952306.png

    / m! b4 r' u4 Y5 B往期推荐详解AUTOSAR:AUTOSAR CAN网络管理/CAN NM  C8 R" m# A8 j4 j& m
    CAN总线网络中为什么需要安装终端电阻?
    / p- e6 N4 `1 |% b( E4 m一文搞懂CAN和CAN FD总线协议
    $ Y, _+ D1 X8 C  G# fCAN与CAN FD通信之间存在的问题
    ( Q  _- Z8 g# W详解CAN总线:CAN总线通信优先级机制
    ( W+ Y8 b' g* R/ J详解CAN总线:CAN总线故障界定与管理0 S4 y$ R) s, _9 z9 E) v2 h6 {

    & O2 W8 |. M- V4 b1 V

    hogg5imrok364015952406.jpg

    hogg5imrok364015952406.jpg

    9 s9 d% ?' h2 c; L0 u- H5 a) L

    b44ynvlbiem64015952506.gif

    b44ynvlbiem64015952506.gif

    & u) A, p$ r9 j8 ?- s6 [: U点击阅读原文,更精彩~
  • 回复

    使用道具 举报

    发表回复

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

    本版积分规则


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