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

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

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

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

[復制鏈接]

586

主題

586

帖子

3544

積分

四級會員

Rank: 4

積分
3544
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 4 天前 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式

, M; }; l' p, G. O: U點擊上方藍色字體,關注我們: q2 V) N7 h# n& i) [' ?3 V/ s5 {1 \
$ V2 f" j* A5 y( ^8 w
在仲裁過程中,所有節(jié)點同時監(jiān)視總線信號。
0 T- g. F# c) Z3 Y
- j4 X6 ^9 R5 v0 i# V9 J+ q當一個節(jié)點在發(fā)送過程中檢測到總線上的信號與自己發(fā)送的不同(自身發(fā)送“1”卻檢測到“0”),它會立即退出仲裁,轉(zhuǎn)為監(jiān)聽狀態(tài)。  I" r1 v3 z1 y4 V
, r% w9 l# G5 ?5 m0 u1 E/ m
最終,優(yōu)先級最高的節(jié)點贏得仲裁,成功發(fā)送數(shù)據(jù)。
( D, G/ F4 z! j+ s+ V' p
7 l; y" @1 }5 M這種機制保障了總線的高效利用,但也帶來了低優(yōu)先級幀可能長期無法發(fā)送的風險。
) M% c3 V: }  T  \: b8 S( Q+ J2 d/ E# a- O0 ^+ I
在極端情況下,如果高優(yōu)先級幀的發(fā)送間隔小于或等于低優(yōu)先級幀的發(fā)送間隔,低優(yōu)先級幀會持續(xù)在仲裁中失敗。這種情況稱為“總線饑餓”或“優(yōu)先級反轉(zhuǎn)”問題。
0 p4 \/ |8 v4 }/ v3 u; G! P* l6 z3 F
例如:高優(yōu)先級幀每5ms發(fā)送一次。低優(yōu)先級幀每10ms發(fā)送一次。
, h. ?) _- s0 X# Y# i9 y- ~4 K# b6 A  D: N& I: F* `
如果兩個幀同時到達發(fā)送隊列,高優(yōu)先級幀將總是贏得仲裁,導致低優(yōu)先級幀可能永遠無法發(fā)送。7 k. Z/ N5 U0 P: z

6 x, \- c3 C1 h- u- j& WCAN協(xié)議本身并未直接解決優(yōu)先級反轉(zhuǎn)問題,因此需要通過系統(tǒng)設計和應用層協(xié)議來確保低優(yōu)先級幀的發(fā)送。+ ~$ _1 [4 f% S
  k; I: d/ I0 y. z- n, K
但可以通過以下措施解決:
) D( e/ G$ [9 r2 d. F1$ F1 u; d8 W4 q$ u* X
時間觸發(fā)通信調(diào)度(TTC)
5 ?4 q1 M& p+ `* e& z5 j! N時間觸發(fā)通信調(diào)度通過預定義的時間表,確保各個節(jié)點在特定的時間段內(nèi)發(fā)送幀。如下:
2 {- r$ J' x+ y! U; G/ e2 @
  • 周期性幀調(diào)度:定義不同優(yōu)先級幀的發(fā)送周期,確保每幀都有機會發(fā)送。例如,可以在5ms內(nèi)分配若干時間窗口給高優(yōu)先級和低優(yōu)先級幀。
  • 發(fā)送時間偏移:在節(jié)點內(nèi)引入發(fā)送時間偏移,使得高優(yōu)先級幀和低優(yōu)先級幀發(fā)送時不會總是同時觸發(fā)仲裁。
    . O7 X$ b. n& r' [: r! B

    0 @) F0 [, q( Z+ s/ w: `2: q3 q/ h( _9 J' K& M
    軟件死鎖檢測與重傳機制# T- i5 A% _! d' I1 H# K6 \3 @8 ]
    節(jié)點內(nèi)部的軟件可以檢測低優(yōu)先級幀長時間未成功發(fā)送的情況:如果檢測到幀長期饑餓,可以通過人工增加重發(fā)頻率或強制暫停高優(yōu)先級幀的發(fā)送,給低優(yōu)先級幀留出發(fā)送機會。
    ; d7 }- w3 a$ n0 e* D8 ]. Y3
    ! ]: y% A' F4 T3 g, W動態(tài)優(yōu)先級調(diào)整
    & D& ?1 w1 u2 x; A8 l# i某些應用層協(xié)議(如CANopen或J1939)允許動態(tài)調(diào)整幀的優(yōu)先級。例如:在低優(yōu)先級幀因饑餓而長期無法發(fā)送時,可以暫時調(diào)高其優(yōu)先級。一旦發(fā)送成功,恢復其正常優(yōu)先級。
    & v4 S/ J- E& O$ p: s4. ^5 c. v3 W. z+ t# L$ ~$ }8 B$ }
    CAN FD的應用2 m+ n7 t# Q' O; w
    對于數(shù)據(jù)量較大的應用,可以考慮CAN FD(Flexible Data-rate):通過較大的數(shù)據(jù)負載能力減少幀數(shù)量,從而降低仲裁沖突概率。結(jié)合時間觸發(fā)模式進一步優(yōu)化調(diào)度。+ Q! K7 Q7 ]9 w! M
    8 \6 h, W; z$ |0 V* [1 ?
    5. ?- j1 N5 W8 @; x
    幀合并技術
    3 u/ d  Z9 x2 m, R* a1 s' e7 d" c在應用層中,可以將多個低優(yōu)先級數(shù)據(jù)幀合并為一個幀,減少仲裁失敗的次數(shù)。
    8 t' z2 c" b4 `' d& M4 r
    6 w; Q1 @  s6 B& U8 b' T- L通過協(xié)議層和應用層結(jié)合設計,低優(yōu)先級幀可以被可靠地發(fā)送出去,保證系統(tǒng)的整體性能和穩(wěn)定性。
    2 s5 F3 i, `1 X! n6 o - b9 G$ ~$ R. v' m  l) ?  T
    : u* e7 s" |% s) a& |; P7 i
    點擊閱讀原文,更精彩~
  • 回復

    使用道具 舉報

    發(fā)表回復

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

    本版積分規(guī)則


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