電子產(chǎn)業(yè)一站式賦能平臺

PCB聯(lián)盟網(wǎng)

搜索
查看: 62|回復(fù): 0
收起左側(cè)

CAN總線如何保障低優(yōu)先級數(shù)據(jù)不被餓死?

[復(fù)制鏈接]

660

主題

660

帖子

4567

積分

四級會員

Rank: 4

積分
4567
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2024-11-21 08:00:00 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式

; V2 K5 v2 j) l  K  H$ q點(diǎn)擊上方藍(lán)色字體,關(guān)注我們
1 u6 [1 {2 R" t' h5 G9 a2 t
+ }& c% |' F) q7 q4 T7 A在仲裁過程中,所有節(jié)點(diǎn)同時監(jiān)視總線信號。0 R  ]. }2 F  ^/ A: w$ ?' F4 g

; j2 V  T! a' {" x當(dāng)一個節(jié)點(diǎn)在發(fā)送過程中檢測到總線上的信號與自己發(fā)送的不同(自身發(fā)送“1”卻檢測到“0”),它會立即退出仲裁,轉(zhuǎn)為監(jiān)聽狀態(tài)。' S/ p9 U# o; ?1 I' m5 [- D
9 e* M' i. u' E% x6 _
最終,優(yōu)先級最高的節(jié)點(diǎn)贏得仲裁,成功發(fā)送數(shù)據(jù)。' P7 B- g7 |2 s8 l3 m! t7 x

: I& C* x& K% t/ O這種機(jī)制保障了總線的高效利用,但也帶來了低優(yōu)先級幀可能長期無法發(fā)送的風(fēng)險。# \1 Q1 o3 d  G: a6 {, [* @

# |7 f# Y' ~2 l( C! g在極端情況下,如果高優(yōu)先級幀的發(fā)送間隔小于或等于低優(yōu)先級幀的發(fā)送間隔,低優(yōu)先級幀會持續(xù)在仲裁中失敗。這種情況稱為“總線饑餓”或“優(yōu)先級反轉(zhuǎn)”問題。
4 }1 H( h9 D) w2 |' e' y* o" x( J% V7 c+ G
例如:高優(yōu)先級幀每5ms發(fā)送一次。低優(yōu)先級幀每10ms發(fā)送一次。4 F, Q5 E5 ^4 O  c2 o: }
5 N  L- D& `% \5 R; b
如果兩個幀同時到達(dá)發(fā)送隊列,高優(yōu)先級幀將總是贏得仲裁,導(dǎo)致低優(yōu)先級幀可能永遠(yuǎn)無法發(fā)送。  l8 V) d9 p6 k; o$ {6 V* Y

  X  }* \8 k5 U! J7 v/ K  CCAN協(xié)議本身并未直接解決優(yōu)先級反轉(zhuǎn)問題,因此需要通過系統(tǒng)設(shè)計和應(yīng)用層協(xié)議來確保低優(yōu)先級幀的發(fā)送。9 v5 e# B) @+ ~7 A( u$ |  @
! y# D7 A# J- o3 r) f( y* X1 ]
但可以通過以下措施解決:, |+ D- O; f3 Z
1
/ x6 n' J- q( j8 M4 ^/ v! c- n時間觸發(fā)通信調(diào)度(TTC)
1 D$ B9 X: r. q# c, e2 O- r$ g時間觸發(fā)通信調(diào)度通過預(yù)定義的時間表,確保各個節(jié)點(diǎn)在特定的時間段內(nèi)發(fā)送幀。如下:5 i! U. k9 Q6 p" m  [6 E
  • 周期性幀調(diào)度:定義不同優(yōu)先級幀的發(fā)送周期,確保每幀都有機(jī)會發(fā)送。例如,可以在5ms內(nèi)分配若干時間窗口給高優(yōu)先級和低優(yōu)先級幀。
  • 發(fā)送時間偏移:在節(jié)點(diǎn)內(nèi)引入發(fā)送時間偏移,使得高優(yōu)先級幀和低優(yōu)先級幀發(fā)送時不會總是同時觸發(fā)仲裁。2 A& o0 I' ]3 s! F1 N, U( x
    1 [" a" ^5 X- n- c
    2
    * o" p8 [- P% v1 y$ C% u軟件死鎖檢測與重傳機(jī)制
    ' P$ E4 n, K' o, _  N節(jié)點(diǎn)內(nèi)部的軟件可以檢測低優(yōu)先級幀長時間未成功發(fā)送的情況:如果檢測到幀長期饑餓,可以通過人工增加重發(fā)頻率或強(qiáng)制暫停高優(yōu)先級幀的發(fā)送,給低優(yōu)先級幀留出發(fā)送機(jī)會。8 |' f. w5 \8 z, m& Y8 D6 Q
    3" y, b6 g, v' X. c
    動態(tài)優(yōu)先級調(diào)整
    / U4 Y" n1 i* M4 B: Y某些應(yīng)用層協(xié)議(如CANopen或J1939)允許動態(tài)調(diào)整幀的優(yōu)先級。例如:在低優(yōu)先級幀因饑餓而長期無法發(fā)送時,可以暫時調(diào)高其優(yōu)先級。一旦發(fā)送成功,恢復(fù)其正常優(yōu)先級。
    9 B7 m2 B" d9 z; p% g4
    7 |( V1 ]% W0 i+ F4 CCAN FD的應(yīng)用
    4 F" r* W, H' u6 y( K8 A* y對于數(shù)據(jù)量較大的應(yīng)用,可以考慮CAN FD(Flexible Data-rate):通過較大的數(shù)據(jù)負(fù)載能力減少幀數(shù)量,從而降低仲裁沖突概率。結(jié)合時間觸發(fā)模式進(jìn)一步優(yōu)化調(diào)度。
    ! f, `( O" H* ~+ o* w1 W7 q  W' |- W" Q/ j9 O! u
    5( R% g+ t) t7 l3 c9 j! x5 R
    幀合并技術(shù)
    * I8 k1 m5 L4 G在應(yīng)用層中,可以將多個低優(yōu)先級數(shù)據(jù)幀合并為一個幀,減少仲裁失敗的次數(shù)。
    0 z* N3 C9 P9 J
    - B, X. v. o& O0 A6 C3 T9 s通過協(xié)議層和應(yīng)用層結(jié)合設(shè)計,低優(yōu)先級幀可以被可靠地發(fā)送出去,保證系統(tǒng)的整體性能和穩(wěn)定性。3 @8 t0 G' |% ~! n7 p
    ) v. x- t3 k; |7 t4 V2 e
      k: j5 L' I3 k3 `
    點(diǎn)擊閱讀原文,更精彩~
  • 回復(fù)

    使用道具 舉報

    發(fā)表回復(fù)

    您需要登錄后才可以回帖 登錄 | 立即注冊

    本版積分規(guī)則


    聯(lián)系客服 關(guān)注微信 下載APP 返回頂部 返回列表