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

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

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

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

[復(fù)制鏈接]

660

主題

660

帖子

4567

積分

四級會員

Rank: 4

積分
4567
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2024-11-21 08:00:00 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
; y6 ^: J" g" z7 x/ q% G- _5 `
點擊上方藍色字體,關(guān)注我們( @& i  c2 X& a1 O- R- _
7 `* J8 `+ v5 B/ Q! M
在仲裁過程中,所有節(jié)點同時監(jiān)視總線信號。
' w- k: A9 L& T8 i$ y. N- |' J+ G$ l# m6 }2 u& E
當一個節(jié)點在發(fā)送過程中檢測到總線上的信號與自己發(fā)送的不同(自身發(fā)送“1”卻檢測到“0”),它會立即退出仲裁,轉(zhuǎn)為監(jiān)聽狀態(tài)。
+ ?# M3 q; t3 {  T
1 W* K/ Q8 x9 {- {1 Q0 m最終,優(yōu)先級最高的節(jié)點贏得仲裁,成功發(fā)送數(shù)據(jù)。
; C9 x1 V; j4 w# {; X/ J/ V4 o) X
這種機制保障了總線的高效利用,但也帶來了低優(yōu)先級幀可能長期無法發(fā)送的風(fēng)險。. y! p2 ~5 i' j1 y/ y) f

* D1 ?4 k# ~! w& \+ E在極端情況下,如果高優(yōu)先級幀的發(fā)送間隔小于或等于低優(yōu)先級幀的發(fā)送間隔,低優(yōu)先級幀會持續(xù)在仲裁中失敗。這種情況稱為“總線饑餓”或“優(yōu)先級反轉(zhuǎn)”問題。
: V7 d" r  v9 s$ ]; G  h" }1 X, F
) p( D( X9 G5 W. K+ \3 N2 F例如:高優(yōu)先級幀每5ms發(fā)送一次。低優(yōu)先級幀每10ms發(fā)送一次。$ j7 a/ F% e2 J

* \  ?" s8 T* h( G如果兩個幀同時到達發(fā)送隊列,高優(yōu)先級幀將總是贏得仲裁,導(dǎo)致低優(yōu)先級幀可能永遠無法發(fā)送。: ?, B) M7 W2 C9 e0 ^8 A8 I9 g* e, M

9 y  X. }4 D( D6 e3 B7 CCAN協(xié)議本身并未直接解決優(yōu)先級反轉(zhuǎn)問題,因此需要通過系統(tǒng)設(shè)計和應(yīng)用層協(xié)議來確保低優(yōu)先級幀的發(fā)送。
+ N. B9 U9 ?% Q( i7 j: h! b; d
% z( x# c8 _( q4 r( `但可以通過以下措施解決:
2 t+ T1 ?0 Z8 k7 g2 M- t/ b1# Q' Z' l- |1 J9 a! S
時間觸發(fā)通信調(diào)度(TTC)
2 s0 k8 c! P5 g( P3 D! G( s時間觸發(fā)通信調(diào)度通過預(yù)定義的時間表,確保各個節(jié)點在特定的時間段內(nèi)發(fā)送幀。如下:
+ W4 I6 X) ]7 h9 {' }6 {% j0 k7 u# g
  • 周期性幀調(diào)度:定義不同優(yōu)先級幀的發(fā)送周期,確保每幀都有機會發(fā)送。例如,可以在5ms內(nèi)分配若干時間窗口給高優(yōu)先級和低優(yōu)先級幀。
  • 發(fā)送時間偏移:在節(jié)點內(nèi)引入發(fā)送時間偏移,使得高優(yōu)先級幀和低優(yōu)先級幀發(fā)送時不會總是同時觸發(fā)仲裁。
    % f7 I# p2 ^/ }

    ' t0 ]3 b" K0 c+ u8 L' b2
    - F% Y- L$ Q1 ?# t+ W軟件死鎖檢測與重傳機制" ]+ _: r+ P* g: K
    節(jié)點內(nèi)部的軟件可以檢測低優(yōu)先級幀長時間未成功發(fā)送的情況:如果檢測到幀長期饑餓,可以通過人工增加重發(fā)頻率或強制暫停高優(yōu)先級幀的發(fā)送,給低優(yōu)先級幀留出發(fā)送機會。6 `' W! ~- h+ X, }5 P6 e
    3
    : w3 y2 s7 n1 q# P4 B動態(tài)優(yōu)先級調(diào)整
    - [9 ^- y7 E# I5 U+ o& H- b某些應(yīng)用層協(xié)議(如CANopen或J1939)允許動態(tài)調(diào)整幀的優(yōu)先級。例如:在低優(yōu)先級幀因饑餓而長期無法發(fā)送時,可以暫時調(diào)高其優(yōu)先級。一旦發(fā)送成功,恢復(fù)其正常優(yōu)先級。7 H1 I# r* K, M, S- @# @8 W6 M4 K
    4
    " _  o5 B$ Y" H7 t  L6 }CAN FD的應(yīng)用
    % r# [3 t$ T/ @- [6 i對于數(shù)據(jù)量較大的應(yīng)用,可以考慮CAN FD(Flexible Data-rate):通過較大的數(shù)據(jù)負載能力減少幀數(shù)量,從而降低仲裁沖突概率。結(jié)合時間觸發(fā)模式進一步優(yōu)化調(diào)度。
    . A2 A$ o) k6 k, A/ W3 X0 ?" J/ @" M2 O) n% W
    56 v! {: C8 R% l( V- S0 _$ z
    幀合并技術(shù)
    - K% o. A9 {! Q9 Z8 A# G; Q3 r在應(yīng)用層中,可以將多個低優(yōu)先級數(shù)據(jù)幀合并為一個幀,減少仲裁失敗的次數(shù)。7 Q/ D+ ?& C/ }0 F% Z
    1 {& B$ x# W& ~  q& x: f# p
    通過協(xié)議層和應(yīng)用層結(jié)合設(shè)計,低優(yōu)先級幀可以被可靠地發(fā)送出去,保證系統(tǒng)的整體性能和穩(wěn)定性。
    ! d2 h! Y9 M$ s" a
    7 A# P$ w2 Y; U) ? ( t2 f# U+ B  ]6 v
    點擊閱讀原文,更精彩~
  • 回復(fù)

    使用道具 舉報

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

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

    本版積分規(guī)則


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