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

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

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

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

[復(fù)制鏈接]

586

主題

586

帖子

3544

積分

四級會員

Rank: 4

積分
3544
跳轉(zhuǎn)到指定樓層
樓主

. w9 Q% e" x% m, E4 `$ H點(diǎn)擊上方藍(lán)色字體,關(guān)注我們/ a0 E- K# |$ a8 Z9 q( K

/ a  d. W: B- y& \在仲裁過程中,所有節(jié)點(diǎn)同時監(jiān)視總線信號。9 P5 A+ ~3 q5 X: U6 g& L, _& G* F

4 b9 E# E# D, i6 D1 J9 ~  R2 W% B當(dāng)一個節(jié)點(diǎn)在發(fā)送過程中檢測到總線上的信號與自己發(fā)送的不同(自身發(fā)送“1”卻檢測到“0”),它會立即退出仲裁,轉(zhuǎn)為監(jiān)聽狀態(tài)。' x8 c4 s7 \% [% c! S$ l, ~
) }, \6 m4 y6 S" e5 @' h
最終,優(yōu)先級最高的節(jié)點(diǎn)贏得仲裁,成功發(fā)送數(shù)據(jù)。
  F( ^0 {/ U( G3 R4 p" ^8 u; a( J/ v" s& {- ]. c( f5 V2 @4 v
這種機(jī)制保障了總線的高效利用,但也帶來了低優(yōu)先級幀可能長期無法發(fā)送的風(fēng)險。3 k' i/ V8 p: N. m7 [) ~; h( f: l& I) n
4 `1 I& I5 |; c/ j0 d4 J0 o% N
在極端情況下,如果高優(yōu)先級幀的發(fā)送間隔小于或等于低優(yōu)先級幀的發(fā)送間隔,低優(yōu)先級幀會持續(xù)在仲裁中失敗。這種情況稱為“總線饑餓”或“優(yōu)先級反轉(zhuǎn)”問題。
% N  l3 ^  X; a) a% b
% D" k5 T( p8 C7 J2 [例如:高優(yōu)先級幀每5ms發(fā)送一次。低優(yōu)先級幀每10ms發(fā)送一次。( d3 R) _! J: O, o' G

& A) t) S' F8 g( Q: Y) z如果兩個幀同時到達(dá)發(fā)送隊列,高優(yōu)先級幀將總是贏得仲裁,導(dǎo)致低優(yōu)先級幀可能永遠(yuǎn)無法發(fā)送。
0 L' n2 T% o) E! _/ }7 c/ W
$ `5 w" ?' |5 V- Z3 V, U3 n, lCAN協(xié)議本身并未直接解決優(yōu)先級反轉(zhuǎn)問題,因此需要通過系統(tǒng)設(shè)計和應(yīng)用層協(xié)議來確保低優(yōu)先級幀的發(fā)送。" h1 K/ U; F- d

; a& W* e7 }4 ~3 l  U8 S但可以通過以下措施解決:/ N7 x1 W* I2 s7 t5 V( n
1
) K( y- M5 F6 p; K2 Z時間觸發(fā)通信調(diào)度(TTC)
7 w5 d( u6 z8 j5 h: h0 [8 f時間觸發(fā)通信調(diào)度通過預(yù)定義的時間表,確保各個節(jié)點(diǎn)在特定的時間段內(nèi)發(fā)送幀。如下:7 s9 `) u; U- M6 W' O- Q$ X5 p
  • 周期性幀調(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ā)仲裁。
    8 s& N4 k/ }) P: Y/ I/ `2 y
    7 D2 X* \1 ?/ U. v
    2
    * ?4 t& x' W) l. \軟件死鎖檢測與重傳機(jī)制8 I9 h$ X/ d. H
    節(jié)點(diǎn)內(nèi)部的軟件可以檢測低優(yōu)先級幀長時間未成功發(fā)送的情況:如果檢測到幀長期饑餓,可以通過人工增加重發(fā)頻率或強(qiáng)制暫停高優(yōu)先級幀的發(fā)送,給低優(yōu)先級幀留出發(fā)送機(jī)會。
    # C2 {2 R6 d" w. f6 a2 R8 r3; R8 ^6 M: \5 b7 i
    動態(tài)優(yōu)先級調(diào)整0 Q' P, S' h% `& u2 N
    某些應(yīng)用層協(xié)議(如CANopen或J1939)允許動態(tài)調(diào)整幀的優(yōu)先級。例如:在低優(yōu)先級幀因饑餓而長期無法發(fā)送時,可以暫時調(diào)高其優(yōu)先級。一旦發(fā)送成功,恢復(fù)其正常優(yōu)先級。, l& X  [( Z6 U' V% b8 R( X9 w
    4
    / A# ?0 M! o, x' R" r, j; w7 F( d3 DCAN FD的應(yīng)用
    ! R/ u8 b2 m, p9 Y對于數(shù)據(jù)量較大的應(yīng)用,可以考慮CAN FD(Flexible Data-rate):通過較大的數(shù)據(jù)負(fù)載能力減少幀數(shù)量,從而降低仲裁沖突概率。結(jié)合時間觸發(fā)模式進(jìn)一步優(yōu)化調(diào)度。. x4 e2 N5 w6 n
    * D4 O1 t/ [$ [& E9 T5 V( W
    5+ d" o! F2 [' ~# H) w- U% m+ n9 I
    幀合并技術(shù)
    . i) I7 F3 x3 d3 F在應(yīng)用層中,可以將多個低優(yōu)先級數(shù)據(jù)幀合并為一個幀,減少仲裁失敗的次數(shù)。
    . Y' s9 N, O! ?- @+ ]/ }" A" _' O3 E  S# l; i5 `  L9 ]9 b
    通過協(xié)議層和應(yīng)用層結(jié)合設(shè)計,低優(yōu)先級幀可以被可靠地發(fā)送出去,保證系統(tǒng)的整體性能和穩(wěn)定性。0 u. [0 M& w# o$ Z, ]$ I

    5 w- \2 g% q: ~1 e0 j" V
    1 U0 i7 U# k' ~# ~點(diǎn)擊閱讀原文,更精彩~
  • 回復(fù)

    使用道具 舉報

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

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

    本版積分規(guī)則


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