a一级爱做片免费观看欧美,久久国产一区二区,日本一二三区免费,久草视频手机在线观看

新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > 基礎知識之CAN總線

基礎知識之CAN總線

作者: 時間:2024-04-09 來源:電子森林 收藏

- 英文Controller Area Network(控制器局域網)的縮寫,是一種串行的車輛標準,旨在允許微控制器和設備在沒有主機的情況下與彼此的應用程序進行通信。它專為比較惡劣的環境下還能夠保持可靠且靈活的性能而設計,比較適合于工業和汽車領域。

本文引用地址:http://www.j9360.com/article/202404/457293.htm

最早是由Bosch發明,后成了標準ISO11898-1,它定義了開放系統互聯模型(OSI)中的數據鏈路和物理層,為高速車內通信提供了一種底層的網絡方案。值得一提的是,被設計為減少電纜的連線,因此車內不同的電氣控制單元(ECUs)可以通過只有一對電纜進行通信。

車載診斷 (OBD) 是車輛的診斷和報告系統,幫助技術人員通過診斷故障代碼 (DTC) 排除問題。 當“檢查發動機”燈亮起時,技術人員通常會使用手持設備讀取車輛的發動機代碼。 在最低層,該數據通過信令協議傳輸,大多數情況下是使用CAN

DeviceNet是工業應用中使用的高級網絡協議。 它大大減少了控制系統和I/O設備之間所需的接線。 設備可以通過四線連接器連接在一起并連接到 PLC 上的網絡掃描儀,而不是將每個設備連接到 PLC I/O 模塊上的單獨輸入/輸出。 在最低層,我們發現CAN在DeviceNet協議中發揮著其魔力。 圖 2 顯示了PLC掃描通過DeviceNet進行通信的工業設備網絡。

CAN總線采用雙絞線提供抗共模干擾能力強的差分信號傳輸,線的兩端分別接有120歐的電阻,每個模塊都有兩個腳分別連在這兩根線上,對于每個模塊的內部,都包含一個CAN收發器。 CAN總線一般分為低速和高速,低速CAN傳輸速率<125kbps, 高速CAN傳輸速率<1Mbps,目前還有一種CAN FD可以視為CAN的升級版,傳輸速率<5Mbps。

那么CAN消息實際上是什么樣子的呢? 最初的ISO標準制定了所謂的標準CAN。 標準CAN對不同的報文使用11位標識符,總共有211個,即2048個不同的報文ID。 CAN后來做了修改,標識符擴展為29位,得到229個標識符。 這稱為擴展 CAN。 CAN使用多主總線,所有消息都在整個網絡上廣播。 標識符提供仲裁的消息優先級。

CAN使用具有兩種邏輯狀態的差分信號,稱為隱性和主導。 隱性狀態表示差分電壓小于最小閾值電壓。 主導狀態指示差分電壓大于此最小閾值。 有趣的是,主導狀態是通過將邏輯“0”驅動到總線上來實現的,而隱性狀態是通過邏輯“1”來實現的。 這與大多數系統中使用的傳統高和低相反。 重要的是,在仲裁過程中,主導狀態優先于隱性狀態。

標準CAN

標準CAN消息幀由許多位字段組成。 這些如圖3所示。

第一位是幀開始 (SOF)。 該主導位代表CAN消息的開始。 接下來是11位標識符,它確定CAN消息的優先級。 標識符越小,消息的優先級越高。

遠程傳輸請求(RTR)位通常為主導位,但當一個節點向另一節點請求數據時,該位會變為隱性。 當發送標準CAN幀而非擴展幀時,標識符擴展(IDE)位占主導地位。 r0 位被保留,當前未使用。 數據長度代碼 (DLC) 半字節表示此消息中有多少個數據字節。

接下來是數據本身,其字節數與 DLC 位中表示的字節數相同。 循環冗余校驗 (CRC) 是一個 16 位校驗和,用于檢測傳輸數據中的錯誤。 如果消息被正確接收,接收節點將用顯性位覆蓋隱性確認位 (ACK)。 ACK 還包含一個分隔符位以保持同步。 幀結束 (EOF) 表示 CAN 消息的結束,為 7 位寬,用于檢測位填充錯誤。 CAN 消息的最后一部分是幀間空間 (IFS),用作時間延遲。 該時間延遲正是 CAN 控制器將接收到的消息移至緩沖區以進行進一步處理所需的時間量。

擴展CAN

擴展CAN使用29位標識符以及一些附加位。 擴展消息在11位標識符后面有一個替代遠程請求 (SRR) 位,它充當占位符以保持與標準CAN相同的結構。 這次標識符擴展(IDE)應該是隱性的,表示后面跟著擴展標識符。 RTR 位位于 18 位 ID 之后,后面是第二個保留位 r1。 消息的其余部分保持不變。

FlexCAN是一種CAN總線的擴展,它是一種嵌入式網絡架構,由凱特林大學的胡安·皮門特爾博士設計的,它的靈感來自于FlexRay以及通過CAN網絡提供更具確定性行為的需求。 其重點是硬件級別的冗余以及協議級別基于時間的優先通信。

關于FlexCAN參見文章FlexCAN: A Flexible Architecture for Highly Dependable Embedded Application

CAN消息類型

CAN允許四種不同的消息類型。 它們是數據幀、遠程幀、過載幀和錯誤幀。

標準CAN數據幀使用標識符、數據和數據長度代碼、循環冗余校驗和確認位。 RTR和IDE位在數據幀中均占主導地位。 如果接收端的隱性確認位被顯性位覆蓋,則發送器和接收器都認為這是成功的傳輸。

CAN遠程幀看起來與數據幀類似,只是它不包含任何數據。 發送時RTR位處于隱性狀態,這表明它是一個遠程幀。 遠程幀用于從節點請求數據。

當節點檢測到CAN總線上的消息中存在錯誤時,它會發送錯誤幀。 這會導致所有其他節點發送錯誤幀。 此后,發生錯誤的節點重新傳輸該消息。 過載幀的工作原理類似,但當節點接收幀的速度快于處理幀的速度時使用。 該幀提供了時間緩沖區,以便節點可以趕上。

CAN 是一種 CSMA/CD 協議,這意味著總線上的每個節點都可以檢測沖突并在嘗試重新傳輸之前后退一定時間。 這種沖突檢測是通過基于消息標識符的優先級仲裁來實現的。 在討論仲裁之前,讓我們仔細看看 CAN 總線上使用的顯性位和隱性位。

反相邏輯

CAN 總線的一個有趣的方面是它使用具有兩種狀態(顯性狀態和隱性狀態)的反轉邏輯形式。 下面的圖 5 顯示了 CAN 收發器輸出和輸入的簡化版本。 “101”比特流來自/去往 CAN 控制器和/或微控制器。 請注意,當控制器發送位流時,這些位流會被補充并放置在 CANH 線上。 CANL 線始終是 CANH 的補充。 為了使仲裁正常工作,CAN 設備必須監控它正在發送的內容以及當前總線上的內容,即它正在接收的內容。

圖 6 同時顯示了 CANH 和 CANL 信號,以便您可以看到 CAN 總線的運行情況。 總線信號下方繪制的是與 CAN 信號的顯性和隱性狀態相對應的差分電壓。 時間上的前三個段 t1–t3 被繪制為與圖 5 中所示的三個位相匹配。我們將從輸出驅動器的角度來看待這一點。 驅動器的輸入最初看到“1”,并將其補為零,然后將其放置在 CANH 上。 CANL 看到 CANH 的補碼并走高。 這如圖 6 中的 t1 所示。請注意,CANH 和 CANL 電壓彼此偏移。 在時間 t1 期間,CANH – CANL 非常接近于零,因為 CANH 和 CANL 的電壓幾乎相同。 驅動器發送邏輯“1”導致 CANH 和 CANL 接近相同電壓的這段時期,就是我們所說的 CAN 隱性狀態。

發送的下一位是“0”。 CANH 得到其補碼,CANL 再次得到 CANH 的補碼。 請注意,這次 CANH 和 CANL 電壓并不接近。 因此,差分電壓(VDIFF)較大。 這是 CAN 主導狀態。 我們說邏輯是顛倒的,因為“1”使總線處于低電平,而“0”則使總線處于高電平。 輸入接收器以類似的方式工作。

優先級仲裁

正如前面提到的,11 位標識符越小,消息的優先級就越高。 節點傳輸的每一位都會受到監控。 這就是節點檢測總線上正在放置更高優先級消息的方式。 當節點發送隱性位但在總線上檢測到顯性位時,它就會后退。 這稱為非破壞性仲裁,因為勝出的消息將繼續傳輸,沒有任何問題。 請注意,隱性邏輯“1”輸給了顯性邏輯“0”。 這是有道理的,因為較低的標識符值代表較高的優先級。 為了更好地了解這意味著什么,請查看圖 7,其中顯示了 CAN 總線上嘗試控制的三個節點。 請務必記住,每次顯示隱性位時,控制器都會發送“1”,而顯性位對應于發送“0”。

節點 1-3 都在發送比特流。 該位流代表消息標識符及其優先級。 首先,所有三個節點均發送“1”,該值在 CAN 總線上表示為隱性位。 接下來,每個節點發送“0”或顯性位。 總線上放置的第三位是另一個“1”,或隱性位。 此時,沒有一個節點檢測到與總線上的另一個節點有任何沖突,因此它們繼續傳輸。

對于第四位,節點 1 發送“0”或顯性位。 節點 2 傳輸隱性位,但檢測總線上的顯性位。 它立即后退,知道當前正在發送更高優先級的消息。 節點 3 繼續發送,因為它讀回了與發送的相同的顯性位。 當第五位被放置在總線上時,節點 3 就會識別出它的優先級較低并停止傳輸。 節點 2 和節點 3 都會等待一定時間,然后再次嘗試。 如圖 7 的右半部分所示,節點 3 贏得了仲裁。 正如您所看到的,與較低消息標識符相對應的邏輯“0”顯性位允許進行仲裁。

CAN控制器

CAN控制器用于將欲收發的消息(報文),轉換為符合CAN規范的CAN幀,通過CAN收發器,在CAN-bus上交換信息。 CAN控制器芯片分為兩類:

  • 獨立的控制器芯片,如SJA1000

  • CAN控制器集成在微控制器中,如NXP半導體公司的Cortex-M0內核LPC11Cxx系列微控制器、LPC2000系列32位ARM微控制器。

CAN控制器工作原理圖

  1. 接口管理邏輯: 用于連接外部主控制器,解釋來自主控制器的命令,控制CAN控制器寄存器的尋址,并向主控制器提供中斷信息和狀態信息。

  2. CAN核心模塊:收到一個報文時,CAN核心模塊根據CAN規范將串行位流轉換成用于接收的并行數據,發送一個報文時則相反。

  3. 發送緩沖器:用于存儲一個完整的報文,當CAN控制器發送初始化時,接口管理邏輯會使CAN核心模塊從發送緩沖器讀CAN報文。

  4. 驗收濾波器:可以根據用戶的編程設置,過濾掉無須接收的報文。

  5. 接收FIFO:是驗收濾波器和主控制器之間的接口,用于存儲從CAN 總線上接收的所有報文。

  6. 工作模式:CAN控制器可以有兩種工作模式(BasicCAN和PeliCAN)。BasicCAN僅支持標準模式,PeliCAN支持CAN2.0B的標準模式和擴展模式

CAN收發器

CAN收發器是CAN控制器和物理總線之間的接口,將CAN控制器的邏輯電平轉換為CAN總線的差分電平,在兩條有差分電壓的總線電纜上傳輸數據。

CAN收發器的類型 汽車車載網絡CAN收發器也分為獨立型與組合型兩大類。由于前者應用靈活,可以與多種CAN控制器進行連接使用,故應用最廣泛。后者通常與CAN控制器組合在一起,形成一個具有CAN收發功能的CAN控制器組件。

CAN是一種強大的串行通信總線,主要用于汽車和工業環境。 它使用差分信號,具有更強的抗噪聲能力,并采用優先仲裁方案來實現無損消息傳輸。 CAN非常適合處于危險環境或存在大量電磁干擾的區域的嵌入式應用。



關鍵詞: CAN 總線

評論


相關推薦

技術專區

關閉