如何進行汽車CAN匯流排開發

時間 2021-10-14 21:23:07

1樓:

電動知家,一個有價值的微公號!

常規can收發器支援的節點數最多為110個,但實際使用時需要合理的佈局組網,選用合適的收發器、線纜、匹配好終端等才能保證網路中的各個節點之間可靠通訊。

一、影響can匯流排節點數的因素

影響匯流排節點數的因素有多種,本文我們從滿足接收節點的差分電壓幅值方面來討論,只有滿足了這個前提條件,我們才能考慮匯流排的其他因素如寄生電容、寄生電感對訊號的影響。

1、傳送節點的can介面負載

為何考慮can介面負載?

can介面負載即為canh、canl之間的有效電阻值大小,該電阻會影響傳送節點輸出的差分電壓的幅值,組網後網路中各個節點的負載電阻 rl接近,如圖1我們測試了ctm1051m小體積can隔離模組在不同負載下的輸出差分電壓幅值。

圖1不同負載下的差分電壓

在負載電阻由45ω不斷增大到66ω時,節點的輸出差分電壓也隨著由1.84v增大到2.16v,兩者近似線性關係。

為了使傳送節點的輸出差分電壓不至於過低,實際組網時負載電阻應在圖1測試的範圍內波動。我們分析rl的組成有3個:終端電阻、匯流排節點的差分輸入電阻、匯流排本身的有效電阻。

終端電阻:匯流排兩端均需要增加終端電阻,當匯流排距離長時,匯流排有效電阻大,損耗大,可以適當增加終端電阻值以減小匯流排有效電阻的損耗,如150ω~300ω。

差分輸入電阻:iso 11898中規定的收發器差分輸入電阻範圍為10kω~100kω之間,ctm1051m系列收發器的差分輸入電阻為19kω~52kω,其典型值為30 kω,如果我們以最多節點組網,按典型值考慮,則整個匯流排的差分輸入電阻會達到30 kω/110=273ω,與終端電阻並聯時會顯著增加節點的負載。

匯流排有效電阻:使用較小截面積的雙絞線,其有效電阻達到幾十歐姆,長距離通訊,匯流排對差分訊號的影響會很大,如常用的rvs非遮蔽雙絞線的電阻從8.0ω/km到39.

0ω/km不等。嚴重時會使接收點的電平達不到識別範圍。

差分電壓除負載電阻的影響外,還會受到供電電壓的影響,如圖2我們測試了ctm1051m模組在不同電壓,不同負載下的差分電壓幅值,可以看到電源電壓升高0.5v,差分電壓幅值會升高約0.3v。

圖2不同供電電壓下的差分電壓

2、接收節點的識別電平

接收節點有一定的電平識別範圍,ctm1051m的can介面典型引數如表1所示。節點輸入顯性電平應大於0.9v。

iso 11898中,匯流排上的任意點的最小電平應大於1.2v,組網時我們應使差分電壓大於此值。

表1 can介面典型引數

3、實際組網分析

目前收發器的最大組網節點數為110個,組網時我們考慮以上的電阻引數,確保匯流排上的差分電壓在合理的範圍內即可。

圖3為ctm1051m推薦的組網拓撲,我們要考慮匯流排電阻,終端電阻,傳送點,接收點電壓引數。畫出其等效電路如圖4所示。

圖3 ctm1051m推薦組網

圖4 ctm1051m組網等效電路

根據等效電路,我們可以調整的引數有終端電阻rt、傳送節點電壓vout、匯流排有效電阻rw。

圖4中,各節點的rw、rin難以準確確定,組網時以公式計算較為繁瑣,簡便的方法便是測量匯流排兩端的節點電壓。如網路的匯流排電阻過大時,節點1到節點n匯流排對訊號的損耗會很大,當節點n接收的差分電壓低於1.2v時,需要增大終端電阻。

在使用浪湧抑制器的場合,比如在圖4的節點1和節點2之間增加sp00s12訊號浪湧抑制器,其直流等效電阻為9.5ω,可以將其等效為匯流排的有效電阻,當節點1收到的電壓過低時可通過減小匯流排有效電阻,提高節點1處的終端電阻來彌補浪湧抑制器帶來的損耗。

二、總結

無論匯流排網路長短,網路兩端都需要加終端電阻。

通訊距離長時,適當增加終端電阻值,減少匯流排電阻對訊號的衰減,如150ω~300ω。

有強烈干擾的場合使用遮蔽雙絞線,遮蔽層單點接大地。

2樓:

我們先研究資料幀吧。

一,資料幀由7 個不同位場組成(幀起始、仲裁場、控制場、資料場、crc場、應答場、幀結尾)。

這裡的位場,就是不同位的組合,這名字起的很爛,讓人看了感覺很抽象。我們來看看這些個不同的位場吧。一開始是一位幀起始,也叫sof。

它用顯性位表示,也就是0;它告訴我們,兩個線上有電壓差了,也就是有資料了。

這個幀起始看起來只有一位,其實不簡單了。為了讓所有的分站都同步於傳送報文的傳送站,好接收資料,有很多要考慮的地方。

報文的資料幀結構

然後下一個場是仲裁場。這個仲裁很抽象,其實在這裡就是為了解決一個問題。如果2個或2個以上的單元同時開始傳送報文,那麼就會有匯流排訪問衝突,那麼仲裁機制就是用來根據識別符號優先順序來一個一個的去掉低階別的資料。

我們可以詳細的描述這場生動的爭搶匯流排的戰鬥。

當匯流排處於空閒狀態時呈隱性電平,此時任何節點都可以向匯流排傳送顯性電平作為幀的開始。2個或2個以上的節點同時傳送開始爭搶匯流排,但是匯流排只能被一個人搶走。這時候到底怎麼決定誰留下,誰滾蛋呢。

我們開始思索,我們以前定義了識別符號,識別符號有優先順序,它越小,它優先順序越高。那麼怎麼實現的呢。看下面圖:

首先搞明白兩點,

一、下圖中,低波形代表0(顯性),高波形代表1(隱性);

二、當隱性碰到顯性,就變為顯性。

如圖所示,節點 a 和節點b 的識別符號的第10、9、8位電平相同,因此兩個節點偵聽到的資訊和它們發出的資訊相同。第7位節點b發出一個「1」,但從節點上接收到的訊息卻是「0」。

為什麼呢,因為a 節點同時發出顯性位,讓匯流排也變成顯性了,也就是0。節點b 會退出傳送處於單純監聽方式而不傳送資料;節點a 成功傳送仲裁位從而獲得匯流排的控制權,繼而傳送全部訊息。

匯流排中的訊號持續跟蹤最後獲得匯流排控制權發出的報文,本例中節點a的報文將被跟蹤。這種非破壞性位仲裁方法的優點在於,在網路最終確定哪個節點被傳送前,報文的起始部分已經在網路中傳輸了,因此具有高優先順序的節點的資料傳輸沒有任何延時。

在獲得匯流排控制權的節點傳送資料過程中,其他節點成為報文的接收節點,並且不會在匯流排再次空閒之前傳送報文,在這逐位的比較中,最終節點b 因為第七位的偏差丟掉了匯流排。從此單純監聽,江山就拱手讓給了節點a 了。這就是仲裁機制

上面我們說過,報文有兩種格式,標準和擴充套件。這裡,不同的格式仲裁場是不一樣的。標準格式下,仲裁場由11位識別符和rtr 位組成。

但在擴充套件格式裡,包括29位識別符、srr 位、ide 位、rtr 位。

rtr 位,remote tra****sion request bit 全稱為遠端傳送請求位。它在資料幀裡必須為顯性0,但在遠端幀裡為隱性1。

我暈,為什麼這麼搞呢,不急,先留著這個問題。

srr 位,替代遠端請求位,srr 是一隱性位,也就是1,它在擴充套件格式的標準幀rtr 位位置,那麼標準幀怪不得優先於擴充套件幀了,因為在傳輸完11位識別符號之後(擴充套件幀的後18位在最後傳送,先傳送11位識別符號),輪到標準幀的rtr 位和擴充套件幀的srr 位了。

這時候,標準幀的rtr 為顯性,而擴充套件幀srr 為隱性,這樣,匯流排自然就被標準幀佔據。

同時上面那個問題,也一目瞭然了,can 匯流排協議設計者,肯定是設計了資料幀優先於遠端幀。所以ide(identifier extension bit),全稱識別符擴充套件位,它屬於擴充套件格式的仲裁場

對於擴充套件格式,ide位屬於仲裁場;對於標準格式,ide位屬於控制場。標準格式的ide位為「顯性」,而擴充套件格式的ide

位為「隱性」。

標準格式中的資料幀

拓展格式中的資料幀

控制場控制場由6個位組成,標準格式和擴充套件格式的控制場格式不同。標準格式裡的幀包括資料長度**、ide位(為顯性位)及保留位r0。擴充套件格式裡的幀包括資料長度**和兩個保留位:

r1和r0。其保留位必須傳送為顯性,但是接收器認可「顯性」和「隱性」位的任何組合。其結構如圖所示:

控制場結構

資料長度**(標準格式以及擴充套件格式)dlc,如下表所示

資料幀長度**dlc

資料長度**指示了資料場裡的位元組數量。其中:d—「顯性」, r—「隱性」,資料幀允許的資料位元組數為。其他的數值不允許使用。

資料場資料場由資料幀裡的傳送資料組成。它可以為0~8個位元組,每位元組包含了8個位,首先傳送最高有效位(msb)。

迴圈冗餘碼crc場

是資料通訊領域中最常用的一種差錯校驗碼,其特徵是資訊欄位和校驗欄位的長度可以任意選定。

crc場包括crc序列(crc sequence),其後是crc界定符(crc delimiter),結構如圖:

生成 crc 碼的基本原理:

任意一個由二進位制位串組成的**都可以和一個係數僅為『0』和『1』取值的多項式一一對應。例如:**1010111對應的多項式為x6+x4+x2+x+1,而多項式為x5+x3+x2+x+1對應的**101111。

參考一下下面的例題,自已再領悟一下吧!已知資訊位為1101,生成多項式g(x)= x3+x+1,求crc 碼。

要傳輸的資訊序列為1101,在末尾新增所給多項式的最高次階個0,如本題為x^3,則新增3個0,變為:1101000;

由多項式g(x)=x3+x+1,得其階數為1的二進位制編碼為:1011;1101000對1011進行模二除法,所得到的餘數即為校驗碼,把校驗碼新增在原資料尾部即為所求的編碼,則實際傳送的資料序列為1101001。校驗碼計算過程如圖所示:

模二除法

應答場(ack field)

應答場長度為2個位,包含應答間隙(ack slot)和應答界定符(ack delimiter),如圖所示。在ack場(應答場)裡,傳送節點傳送兩個「隱性」位。

當接收器正確地接收到有效的報文,接收器就會在應答間隙(ack slot)期間向傳送器傳送一「顯性」位以示應答。

幀結尾每一個資料幀和遠端幀均由一標誌序列界定。這個標誌序列由7個「隱性」位組成。

汽車K匯流排與CAN的區別,can匯流排與485匯流排有什麼區別

學雅思 一 支援通訊方式不同 1 can匯流排 控制器區域網絡,有效支援分散式控制或實時控制的序列通訊網路。2 485匯流排 採用半雙工工作方式,支援多點資料通訊。二 原理不同 1 can匯流排 過can收發器介面晶片82c250的兩個輸出端canh和canl與物理匯流排相連,而canh端的狀態只能...

汽車微控制器和CAN匯流排(汽車維修與檢測)

我就是搞汽車電子的,首先can匯流排肯定是必須的,因為在汽車中通訊最常用的就是can匯流排,不過can的定義也就是那麼一點,在汽車中關於匯流排的內容主要還是報文的k矩陣,這個一般都是車廠保密的東西,不容易拿到,在診斷中,目前都有專門的裝置進行診斷,自己也做不來的 再有,汽車上有專門的成熟電路,和一般...

汽車obd介面能讀取can匯流排資訊嗎若能能讀取那些

很多,凡是匯流排上的節點 比如ecm,bcm 採集的資訊都可以讀取,比如bcm採集的燈資訊 燈有沒有壞 還有像車速 油量等,不過要讀取這些資訊需要專門的軟硬體。而且這些裝置很貴。幾萬一個,如果要做匯流排開發模擬匯流排通訊那就更貴,得十幾萬吧! 用德國ixxat的can轉pci介面卡或者an轉usb介...