vtelrdyepdq64040050258.gif
, _* h0 V6 B/ J" u$ x# Y6 |点击上方蓝色字体,关注我们# E. h o+ K8 a$ ?5 y$ b
# T2 E* f2 T8 D# d
CAN总线采用 线与(Wired-AND) 逻辑,利用差分信号驱动。总线的显性电平(逻辑“0”)通常由发射器主动驱动,而隐性电平(逻辑“1”)是总线的默认状态,由内部的上拉或下拉电阻保持。
# }, Z! k l, v) u& O4 S1 U. F0 l% I9 r5 {4 e1 j
因此,为了在信号冲突或干扰时优先传递明确的指令,“显性”电平被设计为优先。% ?5 d, L7 J. G8 t; c
5 I" b7 q8 y( x% P2 \+ U) S6 o
CAN总线是一种多主控通信协议,其中的仲裁机制允许多个节点同时发起通信请求,而不发生冲突。这是通过显性优先的规则实现的。
3 k+ [. C4 ~* c8 B& |. s
$ C- s- l& M( A, w( n( U6 ~" G" e仲裁机制原理:
! u2 w/ F! c+ \8 p( k& ?! @/ | i; `# U多个节点同时发送数据帧,帧头部分的标识符(ID)用于仲裁。在每个位时间上,总线上会进行逻辑“与”操作。如果某个节点发送隐性电平(逻辑“1”),但检测到总线上为显性电平(逻辑“0”),它会停止发送,因为它的优先级较低。* q6 J3 D, S3 i$ F# P/ |: S0 F
6 J, f" a4 k; E/ @5 A' Q所以,使用显性优先:
' M, K3 F$ x& ~5 i7 q7 ^6 k确保低ID(高优先级)的帧优先发送。提高总线效率,避免数据冲突和无谓重传。
2 @6 b2 e. H: I2 M# D; Z! W& T& _
3 n6 Z8 w. u: n+ h3 [% v4 ?如果隐性电平优先,则节点无法可靠检测自身是否胜出仲裁,导致仲裁机制失效。. }8 s+ C5 ?! R% r. e, L
3 w, W% h6 B5 k' U. Q
显性电平由驱动器强制施加,抗干扰能力强,在高噪声环境下能更稳定地维持总线状态。3 g% b0 R" U5 U
, B! v. D: f( t9 S3 i在硬件设计上,显性电平的驱动需要更高的电流能力,而隐性电平则可以通过弱上拉/下拉维持。2 p4 Q: D" U: I
! |6 W/ q$ ]2 j1 d2 }4 J5 B/ w$ e这样的设计符合经济性与可靠性之间的平衡:显性电平优先意味着只有在必要时才需要高电流驱动,从而减少了能耗。隐性电平作为默认状态,减少了空闲期间的能耗。
& n, ~. e9 Z5 T$ z& P( r
4ai5qamhhvh64040050358.jpg
/ v4 Q, m- }7 l& R4 B
lyoc3zjtxji64040050458.gif
' Q$ z D9 \2 _点击阅读原文,更精彩~ |