电子产业一站式赋能平台

PCB联盟网

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

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

[复制链接]

1001

主题

1001

帖子

8805

积分

高级会员

Rank: 5Rank: 5

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

dnhp3tgppik64018799844.gif

dnhp3tgppik64018799844.gif

+ \# l4 P  s( q! H7 X/ z点击上方蓝色字体,关注我们) n% }: v: ]$ M3 r

8 R, k! M! P% |( g随着总线技术在汽车电子领域越来越广泛和深入的应用,特别是自动驾驶技术的迅速发展,汽车电子对总线宽度和数据传输速率的要求也越来也高,传统CAN(1MBit/s,8Bytes?Payload)已难以满足日益增加的需求。) H, z; p; ?9 W2 F! n! ]: i5 s9 k

, d) v8 T& I% Y) _因此在2012年,Bosch发布了新的CAN FD标准 (CAN with Flexible Data Rate) ,CAN FD继承了CAN的绝大多数特性,如同样的物理层,双线串行通信协议,基于非破坏性仲裁技术,分布式实时控制,可靠的错误处理和检测机制等,同时CAN FD弥补了CAN在总线带宽和数据长度方面的不足。
9 [/ k9 f" i& F$ R( l- p, N( @8 r6 W9 ]1 W% d
2015年6月30日,国际标准化组织(ISO)已经正式认可CAN?FD,并无反对票通过ISO 11898-1作为国际标准草案。% F' L+ D6 ^* r5 q" G, E! P! V
1/ M3 L2 h% J0 h$ P5 ?; ~; \" Z: b
什么是CAN FD?
; z; y1 b7 _9 X/ w5 g( MCAN FD协议是由Bosch以及行业专家预研开发的,并于2012年发布。通过标准化对其进行了改进,现已纳入ISO 11898-1:2015。一开始的Bosch CAN FD版本(非ISO CAN FD)与ISO CAN FD是不兼容。
: O9 Y! d7 k7 l( p6 y
3 V- x& k$ M; C+ x) qCAN FD具有以下4个主要优点:
& w$ U( N3 M( ]* l" _$ Z
* t, Y% M* u- |. A& X/ N
% o( u4 T& B  y  T6 E
1、增加了数据的长度
0 L9 t' [/ s+ }# |1 t) E$ oCAN FD每个数据帧最多支持64个数据字节,而传统CAN最多支持8个数据字节。这减少了协议开销,并提高了协议效率。9 D' P. ~& G/ D# B* }. {

8 ~3 L* U# ^5 i5 _- Q4 m
  Z8 j, r# E2 f, E
2、增加传输的速度. u2 E$ _5 ]% I* d# Q: [/ P$ u* R
CAN FD支持双比特率:与传统CAN一样,标称(仲裁)比特率限制为1 Mbit/s,而数据比特率则取决于网络拓扑/收发器。实际上,可以实现高达5 Mbit/s的数据比特率。' s' l- C' t6 q
, c! \8 g# t/ e/ K( h
% s4 m: _5 L+ I$ k8 ?# Y
3、更好的可靠性
% p" U: A3 `. W! xCAN FD使用改进的循环冗余校验(CRC)和“受保护的填充位计数器”,从而降低了未被检测到的错误的风险。这在汽车和工业自动化等安全攸关的应用中至关重要。
8 h( J$ T; F" ^: Q; p9 A, k' E# q8 I" w
' V  }7 `# t6 `/ q( C
4、平滑过渡- R' Q4 B5 w0 b9 y
在一些特定的情况下CAN FD能用在仅使用传统CAN的ECU上,这样就可以逐步引入CAN FD节点,从而为OEM简化程序和降低成本。) U  n0 j0 E( @( j8 s
实际上,与传统CAN相比,CAN FD可以将网络带宽提高3到8倍,从而为数据的增长提供了一种简单的解决方案。& F) X9 `  K; r) b* T9 i
2
2 x% M2 f+ u$ d: x, q% ]# N, z" WCAN FD帧结构' m% P, t4 |5 h2 P& |9 n0 X; |
CAN FD节点可以正常收、发CAN报文,但CAN节点不能正确收、发CAN FD报文,因为其帧格式不一致。4 ]8 y% b4 O" i: G% p# i: q

, [% S& v- Q0 K1 p4 H+ {4 \% v* h

tvzhdi0uwmr64018799944.png

tvzhdi0uwmr64018799944.png
. {" P  Q, y& U: B, `2 g
1 S  [, |5 p. N) \1 p8 I
与CAN一样,CAN FD一共具有:帧起始,仲裁段,控制段,数据段,CRC段,ACK段和帧结束,7部分组成。/ K" w" r3 v( ~6 R' {) h
1 |1 w, H9 Y* m5 l* r( R
2.1、帧起始9 j5 g! Y! P; U$ `6 h
CAN与CANFD使用相同的SOF标志位来标志报文的起始。帧起始由1个显性位构成,标志着报文的开始,并在总线上起着同步作用。8 q  q8 ]3 V! V# H2 b

% w' E/ r5 D: ]  D5 _% G

h0mibpp0xdb64018800044.png

h0mibpp0xdb64018800044.png

1 I! T, G5 i" _% a# H3 h+ W2 |* N. }- N
2.2、仲裁段& e4 N; V- k- p. K
与CAN不同,CAN FD取消了对远程帧的支持,用RRS位替换了RTR位,为常显性。IDE用于区分标准帧和扩展帧。
, M5 `9 o" J& {7 ]4 H* w1 O9 L8 L1 g, n6 G" W: u

s3c5a41hry364018800144.png

s3c5a41hry364018800144.png

% u( F# z! p. p% K1 k& n3 O, d3 \5 x. g, d! k
标准帧仲裁段由11位ID和r1位(显性)、IDE(显性)组成,总共13位。+ J/ _" ~3 `. I! P" ?1 m
扩展帧仲裁段由29位ID和SRR(隐性)、IDE(隐性)、r1位(显性)组成,总共32位。; w* c7 W/ O! j: M- Q, n
  • SRR:替代CAN标准帧中的RTR位;
  • IDE:扩展帧标志位;
  • r1:保留位,为显性。  N* ~4 s. h' ?; @! K: `1 {
    % W1 v- }' O' I5 ]& u
    2.3、控制段9 A( Q# g8 k  Q5 N
    CAN FD与CAN有着相同的IDE、res和DLC位,同时增加了FDF、BRS、ESI三个bit位。: ~" o1 j  v- O' a4 h# g
  • 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 p5 h4 m6 F0 q7 L6 A4 {8 v

    # _# c* x" w6 b( j, z) _: _" {) y+ u- K/ g+ t

    0hmtg4g0iiz64018800244.jpg

    0hmtg4g0iiz64018800244.jpg

    9 c+ H! x8 ]+ N3 n, r* j7 s! n% o  }2 G9 x3 d! N, ?4 o+ l
    2.4、数据段 - \8 a" N* g6 d! ?5 z& @! V
    CAN FD兼容CAN的数据格式,同时最大还能支持:12、16、 20、 24、 32、 48和64byte。. [- w3 s, j- }5 T2 x; y
    5 L/ `2 ~  S8 p, l) g0 @0 ]
    像在传统CAN中一样,CAN FD DLC是4位,表示帧中数据字节的数量。为了维持4位DLC,CAN FD使用从9到15的其余7个值来表示所使用的数据字节数(12、16、20、24、32、48、64)。
    0 L! R  z; x; R4 y
    6 e: V8 p( q* i  F, `1 g+ G

    41zf1fngdv264018800344.png

    41zf1fngdv264018800344.png
    * l- [8 ?7 H: s7 j& h5 u
    编辑
    ; k7 Q/ h) `1 N  |% ]' p

    y2qkyb0dtw364018800444.png

    y2qkyb0dtw364018800444.png
    ) l5 y( l- |4 ?5 T. X

    ; t% s0 d2 R# T4 k5 z' H2.5、CRC段
    ! V% M$ O  h1 k9 ^" l传统CAN中的循环冗余校验(CRC)为15位,而在CAN FD中由固定填充位FSB(6/7位)、填充位计数(4位)、CRC(17/21位)和CRC界定符(1位)组成,总共28或33位组成。在传统CAN中,CRC中可以包含0到3个填充位,而在CAN FD中,总是有4个固定填充位以提高通信可靠性。
    # a4 ?& _, i( S3 {$ q; o4 u
    7 _1 @: r0 L7 m

    wr0pymmgfpe64018800544.png

    wr0pymmgfpe64018800544.png
    1 a& q# I4 `$ F- g* X

    * a$ V6 t2 @3 k) O: f2 @固定填充位(FSB):CRC段中每4个位固定填充一个与上位相反的位。
    6 q; K- E# X4 C) x1 Q3 ~
  • 采用CRC17时,FSB为6个位;
  • 采用CRC21时,FSB为7个位。
    ' c+ o! `+ X: R8 B/ o
    & c1 r6 H3 x8 @6 n( x7 T
    填充位计数:由填充位计数(3位)和奇偶校验位(1位)组成。; i2 i- {; s" X6 ]
    % ]% U7 Q! d, P8 _' x
    CRC:3 G6 N& n$ E9 h" A! w. o2 I! g
  • 报文长度小于16时,采用CRC17,17位组成;
  • 报文长度大于16时,采用CRC21,21位组成。
    5 X; M; X$ {; d) A8 {7 f  [
    - o- U$ O5 q2 t6 |' k
    CRC界定符:固定为隐性位;从该位采样后,切换为仲裁域波特率。$ l! \, E) u6 A, Y, h) u, Q! }

    9 u& I% d) T6 E

    ve42wunxsmk64018800644.png

    ve42wunxsmk64018800644.png

    + F# d1 u0 ?  ^: d2 f
    4 u5 L6 U4 e6 j8 c: `0 j2.6、ACK段; L. y& X1 @1 \0 G: n* j5 J9 \: t
    ACK紧跟着CRC结束标识位。不同的是,CAN FD支持2bits的ACK的识别,由ACK位和ACK界定符位组成。
    5 s* u& g* r7 L6 y
  • ACK:接收节点应答位,接收节点应应答显性位;
  • ACK界定符,固定为隐性。
    9 ~4 r# U( |& ^8 K9 J# q7 T& I
    4 n2 Q! t. s0 e1 J' U, z+ }

    ' ~! g1 {& Z- k' e+ j1 G

    gomnvrtbgra64018800744.png

    gomnvrtbgra64018800744.png
    ( J. R) x. i$ E
    9 O- D/ J, [6 ^8 m+ T. L& O
    2.7、帧结束, l% d& Q) }  ?. Q- M; C9 x# C+ Z# p
    与CAN一样,CAN FD的帧结尾也为连续7位的隐性位。
    ) }* v0 J  ?2 c% N& @3
    ; A* o5 n) o4 B7 A3 D一帧CAN FD报文位数
    , O1 `+ E7 N) k6 X2 ?& ^根据CAN FD帧结构组成,可以算出一帧CAN FD报文位数:1 T2 M% G$ b. G: I- ^7 q0 p

    : T) \4 \. _* Y7 {8 X6 bCAN FD报文位数 = 帧起始(1位)+ 仲裁段(13/32位)+ 控制段(8位)+ 数据段(0~512位)+ CRC段(28/33位)+ ACK段(2位)+ 帧结束(7位)
    , D( b) [% L- o" F$ ~4 Y
    ; v% W' i, V# |5 y! o/ u# x

    0 F- f4 ~/ x: j# {6 _! Z影响报文位数主要为仲裁段(帧ID长度)和数据段(CRC段受数据段长度影响)。通过帧类型、帧长度组合出不同情况报文位数:! f' l9 {5 ?7 R1 j8 Z) _
  • 标准帧,数据0字节
    / Q8 N! f* Z) t) R: V- `5 `
    帧起始(1位)+ 仲裁段(13位)+ 控制段(8位)+ 数据段(0位)+ CRC段(28位)+ ACK段(2位)+ 帧结束(7位)= 59位$ S" S  S" O( G" J! V
  • 标准帧,数据64字节
    $ t$ k$ ]# E2 t4 B4 h+ R% B
    帧起始(1位)+ 仲裁段(13位)+ 控制段(8位)+ 数据段(512位)+ CRC段(33位)+ ACK段(2位)+ 帧结束(7位)= 576位
    4 i+ _# D7 e1 f
  • 扩展帧,数据0字节
    7 @9 X& Z( f0 w) I- L4 e- y
    帧起始(1位)+ 仲裁段(32位)+ 控制段(8位)+ 数据段(0位)+ CRC段(28位)+ ACK段(2位)+ 帧结束(7位)= 78位
    4 Z( J, O: E: z6 [
  • 扩展帧,数据64字节
    0 R3 H! a* e1 L4 D4 E$ Q& ~9 E
    帧起始(1位)+ 仲裁段(13位)+ 控制段(8位)+ 数据段(512位)+ CRC段(33位)+ ACK段(2位)+ 帧结束(7位)= 590位
    1 x* C0 g# a+ _" G4! P9 e  d5 h* J1 Q0 ?
    精品专栏仲裁域和数据域位数2 Y/ P: i4 r' R) p+ `
    由于CANFD采用了双波特率形式:标准波特率(也称仲裁域波特率)和数据域波特率,所以帧结构中不同段采用的波特率也不同。
    9 V0 M4 J, u9 U
  • 仲裁域波特率所占位数帧起始(1位)+ 仲裁段(13位)+ 控制段的EDL、r0、BRS(3位)+ ACK段(2位)+ 帧结束(7位)
  • 数据域波特率所占位数控制段的ESI、DLC(5位)+ 数据段(0~512位)+ CRC段(28/33位)& t; t) H& J; ~# k

    2 m, D- D* g! \7 y0 u2 F4 t0 M主要说明的是,BRS位和CRC界定符位均同时使用了两个波特率% V' a/ Y# V0 t" [1 X% ?. ~3 @6 ?+ X
  • BRS位:由**仲裁域波特率 * 仲裁域采样点 + 数据域波特率 * (1 - 仲裁域采样点)**组成;
  • CRC界定符:由**数据域波特率 * 数据域采样点 + 仲裁域波特率 * (1 - 数据域采样点)**组成。3 |8 S$ l7 Q1 w1 [4 L

    0 o  K. U9 j1 T/ d2 Z此处将BRS认定采用仲裁域波特率、CRC界定符采用数据域波特率以方便计算。
    # h$ _2 d4 O7 X. E7 K5; w( M/ v4 E, @! {
    位填充
    * {# E" {) W2 E: j$ P当然,上述报文位数中,还未包含填充位个数。在CAN/CAN FD协议中规定:每5个相同的位就必须填充一个相反位,该位即为填充位。' E# @8 s  Y  z- R

    ; G5 t5 d) ~+ \我们知道字节0x55或0xAA,其二进制分别为0101 0101或1010 1010,也就是每个位与上一位均相反,若此时ID和数据均为0x55或0xAA,则可以使填充位个数最少。( S! u' x5 G+ O" P

    $ E( S6 ~  B1 S/ N+ U" v同理,字节0xFF或0x00,其二进制位1111 1111或0000 0000,也就是所有位均一致,若此时ID和数据均为0x00或0xFF,此时报文的填充位个数最多。7 f1 z0 G' g1 s. O
    67 S- l; v* `( L
    不同类型报文位数+ P+ W8 D. D& p; {+ j/ H2 v
    基于以上报文位数的计算,我们可以得出算出不同类型报文所占位数,如下表所示:
    2 j7 I2 w% G! c+ P2 u
    & G8 R9 r" [. l$ v6 e  Z

    3hcybfif01d64018800845.png

    3hcybfif01d64018800845.png

    # O/ u* M- H! t0 c# u2 C; {( [8 o) p9 o
    从上表可知:
    7 v, K7 E3 M2 C* Y7 a: r8 V
  • 当报文为CAN FD标准帧ID为0x555,数据长度为0时,报文位数最少,为59位;
  • 当报文为CAN FD扩展帧ID为0x0,数据长度为64字节,数据全为0xFF时,报文位数最多,为703位。% D( m* l! ~. i0 @- C- Q3 s
    2 v# ^* {# l, I% e- J2 J* b; S  G
    7
    ' j7 T. G; K" `CAN FD报文时间计算
    - N( q( @" \/ A7 i& O最后,可以根据波特率算出不同类型报文时间了,计算公式如下:
    & b$ h2 p, d3 @1 Q2 t8 T8 L+ P, Y# g+ @6 v2 _& h
    报文时间 = 仲裁域位时间 * 仲裁域位数 + 数据域位时间 * 数据域位数, _2 h( R5 j1 C$ s

    9 N9 N7 _7 V. O* w
    1 r# l6 M3 x, c+ _0 u
    以位数最少的CANFD报文为例,在仲裁域波特率为1Mbps(位时间1us),数据域波特率为5Mbps(位时间200ns)时,其报文时间 = 1us * 26 + 33 * 200ns = 32.6us。
    ) z  z/ b3 a6 u: t
    1 ~% X7 _' e) P/ L3 I* t9 J那么一秒钟最多可以发送报文呢?由于报文发送成功后,需经过帧间隔(3个位)后才能发送下一帧报文,也就说仲裁段要在原来基础上加3个位,就可以算出每秒发送多少帧了。那么上述位数最少报文的发送时间耗时 = 1us * (26 + 3) + 33 * 200ns = 35.6us,也就是1秒钟最多可以发送1000000us / 35.6us = 28089帧报文。也就是说,1M/5M波特率下,发送CAN FD标准加速帧,最多可以发送28089帧。
    : d# X9 {" o# e# z. T& G% E/ d1 u. \! X, C
    5 F& [/ _1 L( [- L4 c
    下面我们给出一些常用波特率下,不同类型报文每秒最多可以发送的CANFD报文帧数(下表中报文BRS位为1,ESI位为0),供大家参考。
    2 H* h0 {2 d4 `7 t, h6 P: Y- V" v) J2 X- E

    yc5invgusdw64018800945.png

    yc5invgusdw64018800945.png
    ) k4 D1 P# v! d$ e

    * ?9 M+ N' K5 S/ W6 U- u' e' c3 f& @- }/ ~, z

    kjiyssyjpv464018801045.png

    kjiyssyjpv464018801045.png

    5 h) d6 R/ V3 f& P( p9 K" W. x2 o2 d" f% W+ z3 S
    ' j9 s/ s) ^1 Y. ~

    iuhwsoola0c64018801145.png

    iuhwsoola0c64018801145.png

    5 A/ ], B6 w& D7 j
    & ~5 r5 k( k. S4 g. Y9 |8 R3 m$ Q: w6 i' e

    lz0nbc2bo2o64018801245.png

    lz0nbc2bo2o64018801245.png
    ; H# T% c/ P! y- J! R
    往期推荐详解AUTOSAR:AUTOSAR CAN网络管理/CAN NM! g0 i) }% n% W0 b- b& k' J
    CAN总线网络中为什么需要安装终端电阻?8 L' i. H4 V# H$ x0 o3 x* a
    一文搞懂CAN和CAN FD总线协议% d# N9 O4 {4 y4 C) }+ |, S
    CAN与CAN FD通信之间存在的问题1 u5 Y! Y2 h$ o( W- V
    详解CAN总线:CAN总线通信优先级机制) a3 T1 T! B% a" a7 l( K4 o* _
    详解CAN总线:CAN总线故障界定与管理- P( ^* w, Q9 o3 F
    ; L5 k) k5 A. R8 k6 O

    wxa5vstfiqv64018801345.jpg

    wxa5vstfiqv64018801345.jpg

    4 v' a# p6 M$ D( A2 A) _$ j

    wns5vw4p32464018801445.gif

    wns5vw4p32464018801445.gif

    6 }# }. D4 y+ X3 L$ Z6 t点击阅读原文,更精彩~
  • 回复

    使用道具 举报

    发表回复

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

    本版积分规则


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