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

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

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

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

[復(fù)制鏈接]

660

主題

660

帖子

4567

積分

四級會員

Rank: 4

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

; u# u5 X* i4 `( r' ~: A點擊上方藍色字體,關(guān)注我們  L) b7 C( w5 N5 R

' Z) g) Y* \" Q3 K- T0 K3 q/ \5 {1 C在仲裁過程中,所有節(jié)點同時監(jiān)視總線信號。* ^& o1 f  ], f* u7 N1 J

( b) B: u& G' k0 W當一個節(jié)點在發(fā)送過程中檢測到總線上的信號與自己發(fā)送的不同(自身發(fā)送“1”卻檢測到“0”),它會立即退出仲裁,轉(zhuǎn)為監(jiān)聽狀態(tài)。3 b- e% X+ }! N/ m

* Z6 w# N0 M8 p8 k4 ~  u最終,優(yōu)先級最高的節(jié)點贏得仲裁,成功發(fā)送數(shù)據(jù)。2 E6 D1 E& d* |2 X$ j$ S2 n6 J

+ ~' w1 m+ a3 o6 t5 ?! Z* W這種機制保障了總線的高效利用,但也帶來了低優(yōu)先級幀可能長期無法發(fā)送的風險。
; L: I$ P& r8 U9 u3 y
# v5 }$ s0 I' {) J5 S8 a+ o  ~5 _8 H8 h在極端情況下,如果高優(yōu)先級幀的發(fā)送間隔小于或等于低優(yōu)先級幀的發(fā)送間隔,低優(yōu)先級幀會持續(xù)在仲裁中失敗。這種情況稱為“總線饑餓”或“優(yōu)先級反轉(zhuǎn)”問題。
2 C7 j- Q& b8 p. |+ C4 J, S4 l2 i2 m* u5 s
例如:高優(yōu)先級幀每5ms發(fā)送一次。低優(yōu)先級幀每10ms發(fā)送一次。9 @- t  k: b! W9 ~
; G! Y' u7 M; ~$ {) k1 r3 l
如果兩個幀同時到達發(fā)送隊列,高優(yōu)先級幀將總是贏得仲裁,導(dǎo)致低優(yōu)先級幀可能永遠無法發(fā)送。" g5 J5 ~% B% m6 }# s3 }

; O5 n6 |/ i  xCAN協(xié)議本身并未直接解決優(yōu)先級反轉(zhuǎn)問題,因此需要通過系統(tǒng)設(shè)計和應(yīng)用層協(xié)議來確保低優(yōu)先級幀的發(fā)送。
  t; U. q5 J, z( R: X: K5 h% {
/ V5 J3 u6 \* S2 X$ _* d! Z$ H; U/ m但可以通過以下措施解決:
! ~0 E6 ?2 M) v( [- A7 `, F8 Y1- S, U8 `& H1 p' e% X, r
時間觸發(fā)通信調(diào)度(TTC)
* A3 Y) h* }/ P7 K時間觸發(fā)通信調(diào)度通過預(yù)定義的時間表,確保各個節(jié)點在特定的時間段內(nèi)發(fā)送幀。如下:8 y( ]$ H5 `. }& k
  • 周期性幀調(diào)度:定義不同優(yōu)先級幀的發(fā)送周期,確保每幀都有機會發(fā)送。例如,可以在5ms內(nèi)分配若干時間窗口給高優(yōu)先級和低優(yōu)先級幀。
  • 發(fā)送時間偏移:在節(jié)點內(nèi)引入發(fā)送時間偏移,使得高優(yōu)先級幀和低優(yōu)先級幀發(fā)送時不會總是同時觸發(fā)仲裁。4 o  r$ j; @2 E" Q, e2 ^
    0 z2 c% q9 h* i! Y" f) u0 l
    2
    ' v3 U. T: j; u0 [5 k7 Y8 s" _4 @軟件死鎖檢測與重傳機制
    . H; a, p/ c/ T1 r節(jié)點內(nèi)部的軟件可以檢測低優(yōu)先級幀長時間未成功發(fā)送的情況:如果檢測到幀長期饑餓,可以通過人工增加重發(fā)頻率或強制暫停高優(yōu)先級幀的發(fā)送,給低優(yōu)先級幀留出發(fā)送機會。- h# y# u6 w% R! s
    3
    6 q1 G) o: {1 r' B. V! D1 \動態(tài)優(yōu)先級調(diào)整+ l( U/ V4 b9 i& t5 o8 d  Z# d
    某些應(yīng)用層協(xié)議(如CANopen或J1939)允許動態(tài)調(diào)整幀的優(yōu)先級。例如:在低優(yōu)先級幀因饑餓而長期無法發(fā)送時,可以暫時調(diào)高其優(yōu)先級。一旦發(fā)送成功,恢復(fù)其正常優(yōu)先級。- u3 ]5 a, L/ w1 r, P! x
    4
    ( ]9 j" X' Q0 S: ^6 s% eCAN FD的應(yīng)用1 g6 I1 ~) N7 B( N" F
    對于數(shù)據(jù)量較大的應(yīng)用,可以考慮CAN FD(Flexible Data-rate):通過較大的數(shù)據(jù)負載能力減少幀數(shù)量,從而降低仲裁沖突概率。結(jié)合時間觸發(fā)模式進一步優(yōu)化調(diào)度。. [% ~7 r. @; |. }; N3 I. w( ~9 X2 L
    " B5 J- I4 q; L1 A' j
    5
    3 Q4 m+ N" v9 D! B: f' E0 F/ _2 k幀合并技術(shù)
    9 [5 z; q4 k; ?( l6 x: f7 G( ^  P8 G在應(yīng)用層中,可以將多個低優(yōu)先級數(shù)據(jù)幀合并為一個幀,減少仲裁失敗的次數(shù)。
    1 C' b, k3 h' r$ J! g
    0 S7 F9 Y8 [9 B通過協(xié)議層和應(yīng)用層結(jié)合設(shè)計,低優(yōu)先級幀可以被可靠地發(fā)送出去,保證系統(tǒng)的整體性能和穩(wěn)定性。
    8 r  f- K& m0 z3 l; |9 d / d8 I  C9 ^. N! b
    / f8 B+ d- @5 d$ U, R, B  \. |' D' u# P. a
    點擊閱讀原文,更精彩~
  • 回復(fù)

    使用道具 舉報

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

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

    本版積分規(guī)則


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