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

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

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

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

[復(fù)制鏈接]

660

主題

660

帖子

4567

積分

四級(jí)會(huì)員

Rank: 4

積分
4567
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2024-11-21 08:00:00 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
: l9 }  l- f+ `2 c$ m7 e% \" h4 o
點(diǎn)擊上方藍(lán)色字體,關(guān)注我們1 O- w2 n- S4 T* H4 u' k# M" p

8 e, H& Q1 k- I" l9 G在仲裁過(guò)程中,所有節(jié)點(diǎn)同時(shí)監(jiān)視總線信號(hào)。8 b9 E1 Q7 ?" H* v  f- ]0 @% X; J

% W' B  e$ `7 e  R0 s當(dāng)一個(gè)節(jié)點(diǎn)在發(fā)送過(guò)程中檢測(cè)到總線上的信號(hào)與自己發(fā)送的不同(自身發(fā)送“1”卻檢測(cè)到“0”),它會(huì)立即退出仲裁,轉(zhuǎn)為監(jiān)聽狀態(tài)。, u! D$ D8 r  E% f# @, S

3 u3 n5 }: h' n* b* v5 g9 ?# ?. E最終,優(yōu)先級(jí)最高的節(jié)點(diǎn)贏得仲裁,成功發(fā)送數(shù)據(jù)。
1 W/ b& b6 n6 r4 D
' |# @* H8 v5 X) \  Y2 |這種機(jī)制保障了總線的高效利用,但也帶來(lái)了低優(yōu)先級(jí)幀可能長(zhǎng)期無(wú)法發(fā)送的風(fēng)險(xiǎn)。- H. [. ~+ {3 Z' R" D" j% f
8 n" b& t% U, V" L- I% K
在極端情況下,如果高優(yōu)先級(jí)幀的發(fā)送間隔小于或等于低優(yōu)先級(jí)幀的發(fā)送間隔,低優(yōu)先級(jí)幀會(huì)持續(xù)在仲裁中失敗。這種情況稱為“總線饑餓”或“優(yōu)先級(jí)反轉(zhuǎn)”問(wèn)題。3 D  t& O- O! a  r% X% x& c
9 t3 C: Y" Z( }1 k) X8 I
例如:高優(yōu)先級(jí)幀每5ms發(fā)送一次。低優(yōu)先級(jí)幀每10ms發(fā)送一次。
3 i' {! x; T+ Q2 V$ c" R5 [5 T" T6 }& E9 m! k* O
如果兩個(gè)幀同時(shí)到達(dá)發(fā)送隊(duì)列,高優(yōu)先級(jí)幀將總是贏得仲裁,導(dǎo)致低優(yōu)先級(jí)幀可能永遠(yuǎn)無(wú)法發(fā)送。! ]/ r( t9 p1 A) r

% R0 I- ~7 J2 w" iCAN協(xié)議本身并未直接解決優(yōu)先級(jí)反轉(zhuǎn)問(wèn)題,因此需要通過(guò)系統(tǒng)設(shè)計(jì)和應(yīng)用層協(xié)議來(lái)確保低優(yōu)先級(jí)幀的發(fā)送。
) n- u+ g. T& b  N, C1 g- g
% ]& `+ @2 l3 c) @6 P9 C/ N) i但可以通過(guò)以下措施解決:
. Z( _- d% k+ F# e4 U" s  W1
/ m7 @0 W* o# k, T/ z8 Q時(shí)間觸發(fā)通信調(diào)度(TTC)
  Y3 d8 z, [6 D0 v! y時(shí)間觸發(fā)通信調(diào)度通過(guò)預(yù)定義的時(shí)間表,確保各個(gè)節(jié)點(diǎn)在特定的時(shí)間段內(nèi)發(fā)送幀。如下:+ I' b+ v0 S) `  i+ [) A- U* ]9 t
  • 周期性幀調(diào)度:定義不同優(yōu)先級(jí)幀的發(fā)送周期,確保每幀都有機(jī)會(huì)發(fā)送。例如,可以在5ms內(nèi)分配若干時(shí)間窗口給高優(yōu)先級(jí)和低優(yōu)先級(jí)幀。
  • 發(fā)送時(shí)間偏移:在節(jié)點(diǎn)內(nèi)引入發(fā)送時(shí)間偏移,使得高優(yōu)先級(jí)幀和低優(yōu)先級(jí)幀發(fā)送時(shí)不會(huì)總是同時(shí)觸發(fā)仲裁。
    % r3 g  s0 U4 Y0 ?' d7 Q* C/ H0 ~

    7 R- j9 r9 I8 ]. z- I' M25 C/ c% U% V* _9 [+ V( {/ q
    軟件死鎖檢測(cè)與重傳機(jī)制0 e& F! i* f6 Y
    節(jié)點(diǎn)內(nèi)部的軟件可以檢測(cè)低優(yōu)先級(jí)幀長(zhǎng)時(shí)間未成功發(fā)送的情況:如果檢測(cè)到幀長(zhǎng)期饑餓,可以通過(guò)人工增加重發(fā)頻率或強(qiáng)制暫停高優(yōu)先級(jí)幀的發(fā)送,給低優(yōu)先級(jí)幀留出發(fā)送機(jī)會(huì)。
    6 W  k2 A4 f6 _" d) s3
    7 x! J- c9 i% J# V$ V( t動(dòng)態(tài)優(yōu)先級(jí)調(diào)整2 y! u( J/ ?: ]1 V5 C. i& c( o! N% w. x
    某些應(yīng)用層協(xié)議(如CANopen或J1939)允許動(dòng)態(tài)調(diào)整幀的優(yōu)先級(jí)。例如:在低優(yōu)先級(jí)幀因饑餓而長(zhǎng)期無(wú)法發(fā)送時(shí),可以暫時(shí)調(diào)高其優(yōu)先級(jí)。一旦發(fā)送成功,恢復(fù)其正常優(yōu)先級(jí)。
    " H1 o' ]3 Z! e# L5 j! E4
    ) s7 M+ u, U, e- _& Z3 I( J7 ?5 [CAN FD的應(yīng)用. L: E9 @  W2 Y% w! E4 _' i; u2 p7 j
    對(duì)于數(shù)據(jù)量較大的應(yīng)用,可以考慮CAN FD(Flexible Data-rate):通過(guò)較大的數(shù)據(jù)負(fù)載能力減少幀數(shù)量,從而降低仲裁沖突概率。結(jié)合時(shí)間觸發(fā)模式進(jìn)一步優(yōu)化調(diào)度。
    2 ]3 D' J+ ?; \& v, F9 |; t
    1 A9 w; u9 Y  ]# D/ t5
      ^" m1 ]; r" \( c! [$ Z+ U幀合并技術(shù)' {" d9 g. M' [7 C. t
    在應(yīng)用層中,可以將多個(gè)低優(yōu)先級(jí)數(shù)據(jù)幀合并為一個(gè)幀,減少仲裁失敗的次數(shù)。
    ' `0 a9 P$ z5 J3 {" a$ n8 C
    , G0 i$ T1 p4 g3 h7 B" ~通過(guò)協(xié)議層和應(yīng)用層結(jié)合設(shè)計(jì),低優(yōu)先級(jí)幀可以被可靠地發(fā)送出去,保證系統(tǒng)的整體性能和穩(wěn)定性。
    2 |$ `+ F# C- t* M$ F) N: J
    / r+ c5 h0 w4 Y/ H; G* T  N% \
    7 g* |3 U+ b: f, ^9 {點(diǎn)擊閱讀原文,更精彩~
  • 發(fā)表回復(fù)

    本版積分規(guī)則


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