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

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

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

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

[復(fù)制鏈接]

660

主題

660

帖子

4567

積分

四級會員

Rank: 4

積分
4567
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2024-11-21 08:00:00 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
, t" e% i; h9 n# p0 I- j5 j
點擊上方藍色字體,關(guān)注我們6 d0 J3 k! \6 B

/ B; J8 O, v& F3 U在仲裁過程中,所有節(jié)點同時監(jiān)視總線信號。
5 W; v  b3 v; P4 _: a) t9 y0 z/ @* J3 o$ ]9 q
當一個節(jié)點在發(fā)送過程中檢測到總線上的信號與自己發(fā)送的不同(自身發(fā)送“1”卻檢測到“0”),它會立即退出仲裁,轉(zhuǎn)為監(jiān)聽狀態(tài)。+ Y6 |* h  k4 G: e# E( J

  Z. r# P- y# J最終,優(yōu)先級最高的節(jié)點贏得仲裁,成功發(fā)送數(shù)據(jù)。
& ^0 @3 l3 Q/ i# o0 S/ k8 \# l" C
" G' q* W( d$ b這種機制保障了總線的高效利用,但也帶來了低優(yōu)先級幀可能長期無法發(fā)送的風險。
# }' p, I3 M5 D
! L4 K1 p7 w, {0 @$ Y, I: w在極端情況下,如果高優(yōu)先級幀的發(fā)送間隔小于或等于低優(yōu)先級幀的發(fā)送間隔,低優(yōu)先級幀會持續(xù)在仲裁中失敗。這種情況稱為“總線饑餓”或“優(yōu)先級反轉(zhuǎn)”問題。
3 w3 L' c: v7 J' z
% A, P/ {7 J- B( z3 `* D' [. C例如:高優(yōu)先級幀每5ms發(fā)送一次。低優(yōu)先級幀每10ms發(fā)送一次。
8 R: m; h7 t  b" W' C5 E9 g! [) W3 i$ I# E. M2 x
如果兩個幀同時到達發(fā)送隊列,高優(yōu)先級幀將總是贏得仲裁,導(dǎo)致低優(yōu)先級幀可能永遠無法發(fā)送。! z7 ~# U4 }; s  f* W; d

& M' J1 ?# H: [* uCAN協(xié)議本身并未直接解決優(yōu)先級反轉(zhuǎn)問題,因此需要通過系統(tǒng)設(shè)計和應(yīng)用層協(xié)議來確保低優(yōu)先級幀的發(fā)送。
" s' o- N+ W5 w. E) n: e$ J  V# z& q9 ?& q" ]
但可以通過以下措施解決:
/ j/ v# ?3 `3 [6 F$ \18 e8 V5 ?6 `& R7 M8 s
時間觸發(fā)通信調(diào)度(TTC)* f. f# t* }4 c* q& {' R! V
時間觸發(fā)通信調(diào)度通過預(yù)定義的時間表,確保各個節(jié)點在特定的時間段內(nèi)發(fā)送幀。如下:4 q$ D7 E8 v: x" B' i# F
  • 周期性幀調(diào)度:定義不同優(yōu)先級幀的發(fā)送周期,確保每幀都有機會發(fā)送。例如,可以在5ms內(nèi)分配若干時間窗口給高優(yōu)先級和低優(yōu)先級幀。
  • 發(fā)送時間偏移:在節(jié)點內(nèi)引入發(fā)送時間偏移,使得高優(yōu)先級幀和低優(yōu)先級幀發(fā)送時不會總是同時觸發(fā)仲裁。
    5 ]5 x7 e3 k' v) a

    " G* G6 E# D1 ~2 X4 b6 j- K6 w26 [$ b1 x  x. J% J7 }9 M
    軟件死鎖檢測與重傳機制
    3 [3 U& Q$ h9 T" m9 e: O# J2 u3 H$ b節(jié)點內(nèi)部的軟件可以檢測低優(yōu)先級幀長時間未成功發(fā)送的情況:如果檢測到幀長期饑餓,可以通過人工增加重發(fā)頻率或強制暫停高優(yōu)先級幀的發(fā)送,給低優(yōu)先級幀留出發(fā)送機會。/ o3 P! t3 t3 q
    3
    ' a0 p4 V; ?- g; G9 g, H1 b動態(tài)優(yōu)先級調(diào)整) o8 P8 J" |5 d. b4 Q
    某些應(yīng)用層協(xié)議(如CANopen或J1939)允許動態(tài)調(diào)整幀的優(yōu)先級。例如:在低優(yōu)先級幀因饑餓而長期無法發(fā)送時,可以暫時調(diào)高其優(yōu)先級。一旦發(fā)送成功,恢復(fù)其正常優(yōu)先級。
    7 G" d4 j3 K, r7 @' T. D3 P4
    " }% @2 i2 R: I. [+ d. ^/ V* V/ f$ oCAN FD的應(yīng)用- L2 U, w7 \9 V$ X( H. V  S
    對于數(shù)據(jù)量較大的應(yīng)用,可以考慮CAN FD(Flexible Data-rate):通過較大的數(shù)據(jù)負載能力減少幀數(shù)量,從而降低仲裁沖突概率。結(jié)合時間觸發(fā)模式進一步優(yōu)化調(diào)度。
    7 b( v1 g( z/ p; j) e! e- ~3 ^5 |9 d
    5, W' n. T' `( F9 P
    幀合并技術(shù)- r! y6 m1 N3 r: s% b
    在應(yīng)用層中,可以將多個低優(yōu)先級數(shù)據(jù)幀合并為一個幀,減少仲裁失敗的次數(shù)。7 n2 O$ B3 u2 ]7 T! m
    % t! k- z) v8 X& I: l. z. j
    通過協(xié)議層和應(yīng)用層結(jié)合設(shè)計,低優(yōu)先級幀可以被可靠地發(fā)送出去,保證系統(tǒng)的整體性能和穩(wěn)定性。5 b- j' Z0 R3 ?4 l3 R  s
    $ H! K* ?, [- O
    ( m+ O. C7 v- o; u- Q
    點擊閱讀原文,更精彩~
  • 回復(fù)

    使用道具 舉報

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

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

    本版積分規(guī)則


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