cfsdkdvdrs464044430816.gif
; M5 L: k. v; g& a9 w
点击上方蓝色字体,关注我们+ A* y8 P y3 A
在同一CAN总线网络上混合使用标准帧和扩展帧是技术上可行的,但实际中可能引发优先级不平衡、标识符冲突和网络负载增加等问题。
+ V( G" A; g$ |( i$ Y u3 `1
/ n$ `) P/ ]! OCAN协议规范的支持$ o% K# Z# }/ H! c3 v) X/ e; I
CAN协议(如CAN 2.0B)明确支持标准帧和扩展帧的混合使用。8 `* l8 N( }- z+ U& y0 N p
. r, o G& `* G. _1 x
在帧的仲裁阶段,标准帧和扩展帧是兼容的,因为扩展帧的标识符会通过“IDE位”(标识符扩展位)进行区分:6 {4 C r, @+ k. z1 b' ]' F
0 P" _# S. k7 o- q/ r) O
0s23ina1aul64044430916.jpg
& {- m- Q, [- z9 R- ^$ r, R! x1 M, j( T2 j: e
标准帧的IDE位为0。
2 m& n8 `$ I8 f5 d& B: F+ @/ [9 W& }6 j3 \
yvft4mafjl464044431016.jpg
9 j& h. ?( |7 j
: c- R+ l6 U( G7 {% Y. s0 p0 \扩展帧的IDE位为1。8 [! K* d* v" X5 P! J. j8 [0 K
3 ?, v7 | K6 z
bcm5bjyd25p64044431116.jpg
: k6 f% [1 a' k* }
3 e4 @' [, R( A0 B; A在仲裁阶段:如果两种帧同时竞争,标准帧因其标识符字段较短,在仲裁中优先级更高(假设标识符的前11位相同)。
3 ^7 u# B" |0 i
2 _2 Z3 |( j. w# C" n" \ c) y扩展帧可能需要退避,等待总线空闲后重新发送。
+ F+ O. g5 E: m5 Y7 c2* J7 G) k, s5 W4 p0 ~& V/ C
硬件层面的兼容性9 n. B x$ L8 E% j n5 R3 n* {7 k. W, f
早期的CAN控制器可能只支持标准帧(如仅支持CAN 2.0A)。
3 V- O/ ^& y) g8 y" H Y% G4 j# D+ n* J& e: T) ^" [
大多数现代CAN控制器支持CAN 2.0B协议,能够接收和处理两种帧格式。' z5 o4 r2 Q! O0 x8 P s0 f+ ~
. ]* ~- o# B U. I/ \; C$ G2 v混合使用时,需要合理配置CAN控制器的滤波器和掩码。
7 T$ o, H5 a! Z c/ ^2 x
% x, O, v" B7 k( c: s7 Z如果滤波器设计不当,可能会导致标准帧或扩展帧被错误丢弃或误识别。
5 ]$ U+ N. J3 H( g4 W
6 E* ?; ?* @5 B/ {/ z( a& p某些硬件滤波器资源有限,扩展帧的标识符长度较长,可能增加滤波配置复杂性。
* Q5 O8 T( X+ ^8 m- k5 j30 p# p- n! E7 S/ L, Q* R+ c
应用层面的问题( @0 q( }7 g8 T. b5 p
(1) 优先级干扰
9 N0 }, K! p8 `. T标准帧的优先级天然高于扩展帧,可能导致扩展帧在负载较高的网络中被频繁延迟。
/ T! b! x8 z6 l
) b1 p5 }! b; f I如果应用中扩展帧承载的是时间敏感的数据,需特别注意。; P5 r1 P* F0 E+ Y2 R8 O$ ~
8 v' c. O3 ]8 X- |) g4 w(2) 标识符冲突
; i x U; b! `' {3 I+ q扩展帧的前11位可能与标准帧的标识符相同,容易产生混淆。例如:标准帧标识符:0x7FF。0 |: M0 O* ~. ~% m4 o0 c
& P3 H9 G8 p* Z) V: D扩展帧标识符:0x7FF1234 如果应用层处理逻辑未正确区分IDE位,可能出现数据解析错误。
3 R6 H. @( n# V6 j) g. k) s }& k5 b* \" {) Q" @
(3) 带宽和负载
i# H& R; E+ f# U9 K+ k扩展帧的帧长度比标准帧长,传输扩展帧需要占用更多的总线时间。
! [1 ^7 L. C+ F) l! @3 H! Q7 U# \6 o
在高负载网络中,扩展帧的使用可能加剧总线拥堵,影响通信实时性。
: i+ |, j: o r3 j$ b, t: I
! q% W3 b' L4 I" S1 x A( \! H(4) 应用协议要求$ E. R1 ~$ \, P% f2 n, X5 K L9 D3 U8 w
高层协议(如CANopen、J1939)可能对帧格式有特定要求。例如:
! x9 H2 e: ]+ z! i+ ~! U6 N/ gCANopen通常使用标准帧。J1939则基于扩展帧。7 D0 ?* r& B4 M1 }
46 O7 |$ s) C3 ]
设计与优化建议
" |2 T' a/ H1 z; i(1) 通信规划7 M, R+ H7 L' x# Y
在设计阶段,尽量为标准帧和扩展帧分配不同的功能域,避免标识符冲突。
: r2 g& Q* W0 h7 m8 ?9 w: u2 I* K0 {& Y5 E* q# p( r) N; ]
关键实时数据尽量使用标准帧,以减少仲裁延迟。# T0 _) f! E/ f8 I! ]. c$ ]
8 {6 o* f9 R+ L% f R(2) 网络负载评估
) M+ u4 A- `8 }$ [7 x" @定期评估网络负载,确保扩展帧的引入不会导致总线拥堵。
8 K- v; }' R; M* g8 @0 `( X9 d% Q8 d% Q+ f
(3) 协议设计
* S& @$ p1 G9 j6 i1 n5 `& n如果混用不可避免,可以在应用层协议中增加帧类型区分逻辑,确保IDE位的正确解析。
+ ~: ^6 X% E1 R, A
/ z3 y; {- A6 ?: j6 \(4) 硬件选择
7 d7 R8 [/ t/ |确保使用支持混合模式的CAN控制器,选择拥有足够滤波器资源的硬件。
' l( ^* e; ?9 D7 q4 i% a4 ]: g: }" J( j& e$ Z# f
通过合理的通信规划、高效的滤波器配置以及负载管理,可以有效避免问题。
5 f1 T7 H% X( y- S9 A
! l( s: e) k7 x* y, z根据应用需求,还可以考虑采用其他高层协议(如CAN FD)进一步优化通信性能。. K$ N. `* ^; i! s! u
fxcksvkhkh064044431216.jpg
( r% K% i5 Z/ R( T s' J. H
ytbs1xfyhyl64044431316.gif
- S/ j. [4 m' D. o% G点击阅读原文,更精彩~ |