cfsdkdvdrs464044430816.gif
3 }7 K6 Q8 F1 k& z) q0 {; a
点击上方蓝色字体,关注我们
' J2 l/ d4 Y3 ]0 K. S" K, Y l, M在同一CAN总线网络上混合使用标准帧和扩展帧是技术上可行的,但实际中可能引发优先级不平衡、标识符冲突和网络负载增加等问题。7 T6 n# J: L, {) j5 y
1
0 ?4 e! x9 T+ ~0 ^. [& D. TCAN协议规范的支持" E9 g% P6 O% ~% d) y
CAN协议(如CAN 2.0B)明确支持标准帧和扩展帧的混合使用。2 @: O7 P9 e4 O6 F, Y
/ P5 q/ }/ J1 g& s9 p& P
在帧的仲裁阶段,标准帧和扩展帧是兼容的,因为扩展帧的标识符会通过“IDE位”(标识符扩展位)进行区分:
4 e% e6 k0 N9 ^, A& R$ k. x8 Z+ @4 v( ]" Q7 I$ L
0s23ina1aul64044430916.jpg
. b* Z& k" M S- R/ \! D
- h: H5 `9 P6 ]8 E
标准帧的IDE位为0。
! Q* j% A$ C/ p ?7 z/ I. g3 E+ S ?, @2 X2 i3 }8 Z) v4 U
yvft4mafjl464044431016.jpg
0 e9 K7 k, Y0 q! G" O" M
! ?, Q- @! b: x/ I. w
扩展帧的IDE位为1。
$ L: M/ S7 v9 M) B) C1 \/ X- W% e5 M8 W7 c
bcm5bjyd25p64044431116.jpg
: _# w a4 E* s: ~8 v
5 ]/ U) i1 S5 P在仲裁阶段:如果两种帧同时竞争,标准帧因其标识符字段较短,在仲裁中优先级更高(假设标识符的前11位相同)。
0 a# V% J7 K0 m8 s$ [) I/ K, O* M0 O |' h1 S0 p8 p9 A' ?1 w
扩展帧可能需要退避,等待总线空闲后重新发送。$ E! e8 {2 S, Q
29 N# @6 o4 d; u
硬件层面的兼容性
7 [# k) @0 E( F0 T早期的CAN控制器可能只支持标准帧(如仅支持CAN 2.0A)。2 \% ^& _+ O4 O' p# P
0 h" B. S v- j9 ~+ T大多数现代CAN控制器支持CAN 2.0B协议,能够接收和处理两种帧格式。1 J3 j, D p! d8 W: ~
: j7 u# y6 F2 ~! ~( Z- \
混合使用时,需要合理配置CAN控制器的滤波器和掩码。3 R) z* K- r5 @3 k; l
! w. F) m1 [5 X6 n4 s如果滤波器设计不当,可能会导致标准帧或扩展帧被错误丢弃或误识别。1 S, U& x! o# S) a5 ?
& d# C& A: B* B5 I某些硬件滤波器资源有限,扩展帧的标识符长度较长,可能增加滤波配置复杂性。; |, t3 ]: |2 d+ e1 m \7 t
3
+ O, Z" a7 Q" K: G% L' [应用层面的问题
# E7 W: Y4 E6 b- e(1) 优先级干扰! h) Q9 Q! T- b$ m
标准帧的优先级天然高于扩展帧,可能导致扩展帧在负载较高的网络中被频繁延迟。
2 g3 M- x/ }- y& e4 T4 J6 Q/ n4 j2 ?. \+ Q5 F" Y1 p/ b
如果应用中扩展帧承载的是时间敏感的数据,需特别注意。
5 d; e. f6 H& w1 ~3 h' k" B
0 c L2 @1 c* @8 J( p) N' N(2) 标识符冲突
0 {- i4 W/ _: y扩展帧的前11位可能与标准帧的标识符相同,容易产生混淆。例如:标准帧标识符:0x7FF。6 \/ | N& E* s. J
" A* W" J5 s" x {0 k- T k扩展帧标识符:0x7FF1234 如果应用层处理逻辑未正确区分IDE位,可能出现数据解析错误。1 h5 N' b- S5 v1 A0 x- S
6 P& L/ B/ v: ?9 L4 ~+ G6 {
(3) 带宽和负载& m8 J& }; W9 D+ x' q7 D8 N
扩展帧的帧长度比标准帧长,传输扩展帧需要占用更多的总线时间。
8 n8 n8 V- q: U* Q8 Z* V, ^# D" S/ C' L5 G$ ?
在高负载网络中,扩展帧的使用可能加剧总线拥堵,影响通信实时性。
8 {' a, f ]0 Z* f2 `" Y
- Q, D# N; t( d. V# A! B! |(4) 应用协议要求
2 ]1 f Z: s# W2 t9 g4 I! ?高层协议(如CANopen、J1939)可能对帧格式有特定要求。例如: t2 g4 G/ B7 |* l m' Z8 D F
CANopen通常使用标准帧。J1939则基于扩展帧。& H0 i, c& Y! J1 t1 x/ F
4
. b7 L0 J9 ^, Q* T8 G c" | b' [设计与优化建议
6 `- C8 I! E5 X* \. K(1) 通信规划9 F' r3 W: Q2 K7 c
在设计阶段,尽量为标准帧和扩展帧分配不同的功能域,避免标识符冲突。
" f$ l1 T4 K0 G; c$ p% b, P3 |9 K: d9 l" m: D' Z3 n6 D
关键实时数据尽量使用标准帧,以减少仲裁延迟。" L" P% |: G$ u& Y
4 R5 V& x- m, W, Q$ V(2) 网络负载评估
/ N1 L6 R( y5 |定期评估网络负载,确保扩展帧的引入不会导致总线拥堵。
4 ^* ]: r9 A; R) D2 U
2 X m3 S, F7 L- s& }! m4 K- ?(3) 协议设计" k5 X1 G- X* J
如果混用不可避免,可以在应用层协议中增加帧类型区分逻辑,确保IDE位的正确解析。
" }: s* X% q7 t, F5 V* x& c
+ x% Z7 A) u$ X; {/ I(4) 硬件选择 Q2 H' S% b+ c+ j5 k4 N
确保使用支持混合模式的CAN控制器,选择拥有足够滤波器资源的硬件。
T/ ^8 J# Q4 B8 g% y. v
& ]' Q* c4 t* w- K# X通过合理的通信规划、高效的滤波器配置以及负载管理,可以有效避免问题。8 E% ^2 h* v; f, o9 Q
3 H/ F! w9 r, r& w7 U根据应用需求,还可以考虑采用其他高层协议(如CAN FD)进一步优化通信性能。
& p3 y* q7 g3 a
fxcksvkhkh064044431216.jpg
/ A x+ u6 |7 S* B
ytbs1xfyhyl64044431316.gif
) p+ G+ e, p) Z" E0 E点击阅读原文,更精彩~ |