cfsdkdvdrs464044430816.gif
% z4 U+ `, g( L8 r- N% X* d: {
点击上方蓝色字体,关注我们0 f1 D! Q( f$ {
在同一CAN总线网络上混合使用标准帧和扩展帧是技术上可行的,但实际中可能引发优先级不平衡、标识符冲突和网络负载增加等问题。
; X6 |* _, h0 L; b1
; _' |+ `6 j5 }- _CAN协议规范的支持
+ \! r. O/ J4 d8 ECAN协议(如CAN 2.0B)明确支持标准帧和扩展帧的混合使用。
4 W/ r+ E& `, Z+ u( H0 `
4 X5 L$ U4 z) F; K; O0 ]0 T" L$ @5 d在帧的仲裁阶段,标准帧和扩展帧是兼容的,因为扩展帧的标识符会通过“IDE位”(标识符扩展位)进行区分:( s" C+ Y: z, N. C1 ~
% C/ n* d1 w6 S4 V8 D5 A+ y
0s23ina1aul64044430916.jpg
' o" d0 }7 J- F- Y0 v
( w' c/ {0 \9 p* J
标准帧的IDE位为0。: _! }1 _! s* e2 |! i
* b2 e1 R( q; A" a# `! B$ W
yvft4mafjl464044431016.jpg
p) @1 @; K5 K/ j& C
; s9 {9 Z3 H0 g' ^% l
扩展帧的IDE位为1。1 q/ q3 K* E7 J' p: f1 ?6 O7 B
5 `& ~2 H' h; |9 |
bcm5bjyd25p64044431116.jpg
( a4 a5 a* S* P1 D' I4 `
9 }$ G& v1 E- S, u" I9 D- K0 q在仲裁阶段:如果两种帧同时竞争,标准帧因其标识符字段较短,在仲裁中优先级更高(假设标识符的前11位相同)。# c o, y0 u1 B
1 v, @7 R1 S( q扩展帧可能需要退避,等待总线空闲后重新发送。 q0 S; Q p2 c4 Z! v( o+ A" f
2
! S. j% R* w; I6 n1 m9 B硬件层面的兼容性
4 z9 I2 m* i* v h早期的CAN控制器可能只支持标准帧(如仅支持CAN 2.0A)。1 O8 n- w" ?8 ~/ I' @
1 f1 G$ s% X4 _- }1 a4 H6 b大多数现代CAN控制器支持CAN 2.0B协议,能够接收和处理两种帧格式。 f7 s& C0 n7 e% y
( N. {; B0 V6 ~2 m0 c& H0 S
混合使用时,需要合理配置CAN控制器的滤波器和掩码。/ E6 k' J, m4 ~4 R# M4 x% @
9 Y: a' K! M$ I) d* x e$ d; g
如果滤波器设计不当,可能会导致标准帧或扩展帧被错误丢弃或误识别。
( h2 d) h0 m- v+ ]4 z( B- ~
/ Z/ {( s7 T# l某些硬件滤波器资源有限,扩展帧的标识符长度较长,可能增加滤波配置复杂性。) W, O. Q, F% i& s D$ Z
3 w& ?2 _ X2 D6 N6 m1 f
应用层面的问题- y! x0 b! y, Y1 Y( {( ?1 z: H
(1) 优先级干扰
! v+ L! M+ T1 @. o. `标准帧的优先级天然高于扩展帧,可能导致扩展帧在负载较高的网络中被频繁延迟。
1 @# {& _- \, I2 Z: [* R. ~
* y! v6 M, V6 g5 j; Q) r' p如果应用中扩展帧承载的是时间敏感的数据,需特别注意。
1 j2 s- b6 J* T4 C9 X k$ _8 c, w% L- z
(2) 标识符冲突
; z" z' S p5 R5 W扩展帧的前11位可能与标准帧的标识符相同,容易产生混淆。例如:标准帧标识符:0x7FF。
. s7 W m3 U9 b- k5 ?
' c K% e/ m) U7 F8 N- j扩展帧标识符:0x7FF1234 如果应用层处理逻辑未正确区分IDE位,可能出现数据解析错误。
& e" ^6 l0 s5 [1 o% x# w- f% \% X4 K. Q: C' N! t) ^$ }1 d
(3) 带宽和负载; }+ f3 @9 t) g# w$ d* @
扩展帧的帧长度比标准帧长,传输扩展帧需要占用更多的总线时间。2 `9 t0 s6 {4 U3 _( Q1 H7 B
$ K$ q, G2 x3 ?% k6 g在高负载网络中,扩展帧的使用可能加剧总线拥堵,影响通信实时性。8 p$ M& c$ t# P, `
3 w4 _# z* g9 D6 q% F' t
(4) 应用协议要求# ^2 x7 ^1 F, E$ `9 Q
高层协议(如CANopen、J1939)可能对帧格式有特定要求。例如:
& ^ y" k0 ]- @ d, z) y! h" ICANopen通常使用标准帧。J1939则基于扩展帧。
- h3 |' L. Q2 s5 Z& R* q2 C" n' r45 w( I3 z- T- M! h- P9 h
设计与优化建议+ s7 H) d' Q | `* d
(1) 通信规划+ S# E9 y9 }5 N3 U1 m+ [* b$ f. z
在设计阶段,尽量为标准帧和扩展帧分配不同的功能域,避免标识符冲突。3 t5 Z4 F- ?1 o, k) z1 T6 S' D% G% E
1 \" f( V6 U* Z9 b' ~
关键实时数据尽量使用标准帧,以减少仲裁延迟。" E2 F. r+ ?" Q+ R2 b+ F
& W/ l* f1 Z! l, x6 d(2) 网络负载评估
4 L$ ?0 Y& T9 S; C! K定期评估网络负载,确保扩展帧的引入不会导致总线拥堵。6 _! C# N2 w; @1 ]- k
- X' o4 P$ i4 O5 O5 x8 b(3) 协议设计
" a$ J( O- N- k( J& I如果混用不可避免,可以在应用层协议中增加帧类型区分逻辑,确保IDE位的正确解析。; N, ^- f4 m4 S4 E& X' q6 j
4 g$ U# u! y/ V' S& }" `9 L$ Q' |(4) 硬件选择
j# _' {: T* ?0 O确保使用支持混合模式的CAN控制器,选择拥有足够滤波器资源的硬件。, M9 N% V1 N. b; J
2 _# ~) B3 ], w* F$ P; c通过合理的通信规划、高效的滤波器配置以及负载管理,可以有效避免问题。
- b& c( ?" |' u" d1 O- R k P# I+ P
根据应用需求,还可以考虑采用其他高层协议(如CAN FD)进一步优化通信性能。
5 D4 M/ f- X5 ^' m5 B
fxcksvkhkh064044431216.jpg
' }# c. f0 L' n) z
ytbs1xfyhyl64044431316.gif
8 s) b, b P8 d6 i1 a点击阅读原文,更精彩~ |