cfsdkdvdrs464044430816.gif
& ]. g) u& f# {% C) |1 n5 @点击上方蓝色字体,关注我们
1 b) I/ M0 m3 }! I8 J: B. R在同一CAN总线网络上混合使用标准帧和扩展帧是技术上可行的,但实际中可能引发优先级不平衡、标识符冲突和网络负载增加等问题。! q$ i( V* W3 ~/ y* o5 w" N
1. \+ h) }* H$ G& C: k+ H3 Y
CAN协议规范的支持
0 L) k7 a- f, x r ~ ?( HCAN协议(如CAN 2.0B)明确支持标准帧和扩展帧的混合使用。# ~0 x- S8 _, h& Y# G* g( l, c
' o& h+ Y9 e! a( H. q$ M& M
在帧的仲裁阶段,标准帧和扩展帧是兼容的,因为扩展帧的标识符会通过“IDE位”(标识符扩展位)进行区分:
' j5 M% m6 Y. }2 e7 \! ?, O3 U# j; M9 d2 ~" A
0s23ina1aul64044430916.jpg
. k4 }1 Y: r1 b# u# k0 f
( Q& F3 ]9 g/ W标准帧的IDE位为0。: {8 u; u u" Q* V2 A
* R0 R# X" i/ D8 }" r5 r+ ~4 y6 P
yvft4mafjl464044431016.jpg
4 h! Q9 ~, i% O" D b6 |
8 e+ O2 Y8 m# e. t, B, a9 S扩展帧的IDE位为1。
% n( q4 ~: A2 o; e. a5 l6 s
7 P) x0 Y; Q. F# J! w
bcm5bjyd25p64044431116.jpg
" k# D. d% Q4 P! j1 t9 V5 x* w$ a. @0 f _
在仲裁阶段:如果两种帧同时竞争,标准帧因其标识符字段较短,在仲裁中优先级更高(假设标识符的前11位相同)。; q2 x1 k1 X O- E2 l
3 D' u; X: O O) I; f6 Z: I7 ~6 j! I3 m扩展帧可能需要退避,等待总线空闲后重新发送。
/ T9 r+ ?9 E" b( ]) S$ e27 r [& c0 N% E/ ]% Z
硬件层面的兼容性
7 V2 ~+ H# t/ C) J早期的CAN控制器可能只支持标准帧(如仅支持CAN 2.0A)。
2 l9 o+ v. n( ?( ?& n$ {" t! e; e3 i
大多数现代CAN控制器支持CAN 2.0B协议,能够接收和处理两种帧格式。
- f7 b. z% {1 @* l. l& z8 }. M! A- x2 B X; A7 p8 D- o
混合使用时,需要合理配置CAN控制器的滤波器和掩码。
8 s8 F& x: e; r+ X+ ]6 K6 E" o) V _' a& m$ o& r; U
如果滤波器设计不当,可能会导致标准帧或扩展帧被错误丢弃或误识别。
1 t; B: T# ]0 ^5 C" r1 U; H( x& o7 w* [3 {7 r) z
某些硬件滤波器资源有限,扩展帧的标识符长度较长,可能增加滤波配置复杂性。 ]# R( K( t) O
30 C7 M0 o: Z% ]$ x1 ]0 f
应用层面的问题$ @' n, d+ A( s+ }/ v
(1) 优先级干扰" |$ X! U9 G# e
标准帧的优先级天然高于扩展帧,可能导致扩展帧在负载较高的网络中被频繁延迟。
" v! O c+ w; L3 U I1 A% a$ @* w$ a: Z( X) N% {+ t- p
如果应用中扩展帧承载的是时间敏感的数据,需特别注意。
8 J$ w9 R) X0 F
* U0 w3 [' m# S. w5 |6 j' \- Z1 ?(2) 标识符冲突# \! o1 ^4 h6 u W2 r' K
扩展帧的前11位可能与标准帧的标识符相同,容易产生混淆。例如:标准帧标识符:0x7FF。
2 u: Y- X, L5 X9 O2 K% P$ m; |. _) q; |+ O. a+ G8 @$ ^9 h9 b
扩展帧标识符:0x7FF1234 如果应用层处理逻辑未正确区分IDE位,可能出现数据解析错误。
7 E4 I7 R1 U" ?8 K+ @3 E, _9 B+ W$ W: D& J
(3) 带宽和负载% \: g" X2 V N: r1 Y% m
扩展帧的帧长度比标准帧长,传输扩展帧需要占用更多的总线时间。* r7 ?6 ^6 @9 z1 c) G9 o
! p4 |7 K! u8 A/ S- @
在高负载网络中,扩展帧的使用可能加剧总线拥堵,影响通信实时性。
- n: U5 x! V0 _, a. g& D7 S0 j) y, x5 W I2 g' t/ k3 p
(4) 应用协议要求0 y- S8 E& P2 `( m. a$ e/ t7 o4 i
高层协议(如CANopen、J1939)可能对帧格式有特定要求。例如:, b r' w. p% `% R1 c
CANopen通常使用标准帧。J1939则基于扩展帧。7 V" X( C3 ~, f! t, v: W/ s
4
5 i1 \- d4 o. c+ e0 ?设计与优化建议9 g" h: d( G+ ]
(1) 通信规划) {: w& I4 M2 z" ]6 G9 r
在设计阶段,尽量为标准帧和扩展帧分配不同的功能域,避免标识符冲突。
9 Q) V' k( n2 u% {: B, B1 R$ a9 ~& R4 H# J
关键实时数据尽量使用标准帧,以减少仲裁延迟。
; u7 ?' F9 A) Y; [4 c6 [$ T* \
+ \6 P8 |& l9 ~(2) 网络负载评估9 n$ ~! x- {& S- h7 k
定期评估网络负载,确保扩展帧的引入不会导致总线拥堵。
3 x& ]; Q; V: m% C* q& h C* O7 Y# o' ~3 J# j: F' U$ O
(3) 协议设计
8 ~$ E9 c5 Y: W Z如果混用不可避免,可以在应用层协议中增加帧类型区分逻辑,确保IDE位的正确解析。+ X% j) j y1 Y6 M( _& a1 b
) `8 M5 V( r2 k(4) 硬件选择1 T' z" S$ m2 Q' K7 U
确保使用支持混合模式的CAN控制器,选择拥有足够滤波器资源的硬件。7 ^! j8 s6 E" d2 b
, C: K0 {6 h) u8 ~' C3 N1 G% S4 w
通过合理的通信规划、高效的滤波器配置以及负载管理,可以有效避免问题。
c0 |6 @ E2 u7 Z
# }8 Y" B6 p, s# o4 z根据应用需求,还可以考虑采用其他高层协议(如CAN FD)进一步优化通信性能。% u/ t k/ L1 l: l
fxcksvkhkh064044431216.jpg
, _" z5 N9 h9 P P E
ytbs1xfyhyl64044431316.gif
: f* G$ m& E9 [2 c: h7 b
点击阅读原文,更精彩~ |