日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux can 接收多帧_CAN编程介绍

發(fā)布時(shí)間:2025/3/20 linux 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux can 接收多帧_CAN编程介绍 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

14.1 CAN介紹

14.1.1 CAN是什么?

CAN,全稱為“Controller Area Network”,即控制器局域網(wǎng),是國際上應(yīng)用最廣泛的現(xiàn)場總線之一。

最初,CAN被設(shè)計(jì)作為汽車環(huán)境中的微控制器通訊,在車載各電子控制裝置 ECU 之間交換信息,形成汽車電子控制網(wǎng)絡(luò)。比如:發(fā)動機(jī)管理系統(tǒng)、變速箱控制器、儀表裝備、電子主干系統(tǒng)中,均嵌入CAN控制裝置。

一個由 CAN 總線構(gòu)成的單一網(wǎng)絡(luò)中,理論上可以掛接無數(shù)個節(jié)點(diǎn)。實(shí)際應(yīng)用中,節(jié)點(diǎn)數(shù)目受網(wǎng)絡(luò)硬件 的電氣特性所限制。例如,當(dāng)使用 Philips P82C250 作為CAN收發(fā)器時(shí),同一網(wǎng)絡(luò)中允許掛接110個節(jié)點(diǎn)。

CAN可提供高達(dá)1Mbit/s的數(shù)據(jù)傳輸速率,這使實(shí)時(shí)控制變得非常容易。另外,硬件的錯誤檢定特性也增強(qiáng)了CAN的抗電磁干擾能力。

14.1.2 CAN的起源

CAN最初出現(xiàn)在 80 年代末的汽車工業(yè)中,由德國 Bosch 公司最先提出。當(dāng)時(shí),由于消費(fèi)者對于汽車功能的要求越來越多,而這些功能的實(shí)現(xiàn)大多是基于電子操作的,這就使得電子裝置之間的通訊越來越復(fù)雜同時(shí)意味著需要更多的連接信號線。

提出 CAN 總線的最初動機(jī)就是為了解決現(xiàn)代汽車中龐大的電子控制裝置之間的通訊,減少不斷增加的信號線。于是,他們設(shè)計(jì)了一個單一的網(wǎng)絡(luò)總線,所有的外圍器件可以被掛接在該總線上。

1993 年,CAN已成為國際標(biāo)準(zhǔn)ISO11898(高速應(yīng)用)和 ISO11519(低速應(yīng)用)。 CAN 是一種多主方式的串行通訊總線,基本設(shè)計(jì)規(guī)范要求有高的位速率,高抗電磁干擾性,而且能夠檢測出產(chǎn)生的任何錯誤。

當(dāng)信號傳輸距離達(dá)到 10Km 時(shí),CAN 仍可提供高達(dá) 50Kbit/s 的數(shù)據(jù)傳輸速率。由于 CAN 總線具有很高的實(shí)時(shí)性能,因此,CAN 已經(jīng)在汽車工業(yè)、航空工業(yè)、工業(yè)控制、安全防護(hù)等領(lǐng) 域中得到了廣泛應(yīng)用。

14.1.3 CAN傳輸模型

CAN 通訊協(xié)議主要描述設(shè)備之間的信息傳遞方式。CAN 層的定義與開放系統(tǒng)互連模型(OSI)一致。每 一層與另一設(shè)備上相同的那一層通訊。實(shí)際的通訊發(fā)生在每一設(shè)備上相鄰的兩層,而設(shè)備只通過模型物理層的物理介質(zhì)互連。

CAN 的規(guī)范定義了模型的最下面兩層:數(shù)據(jù)鏈路層和物理層。下表中展示了 OSI 開放 式互連模型的各層。應(yīng)用層協(xié)議可以由 CAN 用戶定義成適合特別工業(yè)領(lǐng)域的任何方案。已在工業(yè)控制和制造業(yè)領(lǐng)域得到廣泛應(yīng)用的標(biāo)準(zhǔn)是 DeviceNet,這是為 PLC 和智能傳感器設(shè)計(jì)的。在汽車工業(yè),許多制造商都應(yīng)用他們自己的標(biāo)準(zhǔn)。

OSI開發(fā)系統(tǒng)互聯(lián)模型

雖然CAN傳輸協(xié)議參考了OSI 七層模型,但是實(shí)際上CAN協(xié)議只定義了兩層“物理層”和“數(shù)據(jù)鏈路層”,因此出現(xiàn)了各種不同的“應(yīng)用層”協(xié)議,比如用在自動化技術(shù)的現(xiàn)場總線標(biāo)準(zhǔn)DeviceNet,用于工業(yè)控制的CanOpen,用于乘用車的診斷協(xié)議OBD、UDS(統(tǒng)一診斷服務(wù),ISO14229),用于商用車的CAN總線協(xié)議SAEJ1939。

CAN傳輸協(xié)議

14.1.4 CAN網(wǎng)絡(luò)拓?fù)?/h1>

CAN總線是一種分布式的控制總線。CAN總線作為一種控制器局域網(wǎng),和普通以太網(wǎng)一樣,它的網(wǎng)絡(luò)很多CAN節(jié)點(diǎn)構(gòu)成。其網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)如下圖所示:

CAN網(wǎng)絡(luò)的每個節(jié)點(diǎn)非常簡單,均由一個MCU(微控制器)、一個CAN控制器和一個CAN收發(fā)器構(gòu)成,然后使用雙絞線連接到CAN網(wǎng)絡(luò)中。

14.1.5 CAN物理特性

CAN總線遵循國際標(biāo)準(zhǔn)ISO11898,如ISO11898-1,ISO11898-2,ISO11898-3,ISO11898-4標(biāo)準(zhǔn)。

CAN總線

CAN 能夠使用多種物理介質(zhì),例如雙絞線、光纖等。最常用的就是雙絞線。信號使用差分電壓傳送,兩條信號線被稱為“CAN_H”和“CAN_L”。靜態(tài)時(shí)CAN_H和CAN_L均是 2.5V 左右,此時(shí)狀態(tài)表示為邏輯“1”,也可以叫做 “隱性”。用 CAN_H 比 CAN_L 高表示邏輯“0”,稱為“顯形”,此時(shí),通常電壓值為:CAN_H = 3.5V 和 CAN_L = 1.5V 。

目前實(shí)際常用的CAN收發(fā)器有如下幾種型號

目前實(shí)際常用的CAN控制器有如下幾種型號

14.1.6 CAN報(bào)文幀

14.1.6.1 CAN報(bào)文格式

標(biāo)準(zhǔn) CAN 的標(biāo)志符長度是 11 位,而擴(kuò)展格式 CAN 的標(biāo)志符長度可達(dá) 29 位。CAN 協(xié)議的 2.0A 版本 規(guī)定 CAN 控制器必須有一個 11 位的標(biāo)志符。同時(shí),在 2.0B 版本中規(guī)定,CAN 控制器的標(biāo)志符長度可以是 11 位或 29 位。遵循 CAN2.0B 協(xié)議的 CAN 控制器可以發(fā)送和接收 11 位標(biāo)識符的標(biāo)準(zhǔn)格式報(bào)文或 29 位標(biāo)識符的擴(kuò)展格式報(bào)文。

標(biāo)準(zhǔn)幀&擴(kuò)展幀對比

14.1.6.2 CAN報(bào)文幀類型

CAN報(bào)文類型又分為5種幀類型:數(shù)據(jù)幀:主要用于發(fā)送方向接收方傳輸數(shù)據(jù)的幀;遙控幀:主要用于接收方向具有相同ID的發(fā)送方請求數(shù)據(jù)的幀;錯誤幀:主要用于當(dāng)檢測出錯誤時(shí)向其他節(jié)點(diǎn)通知錯誤的幀。過載幀:主要用于接收方通知其他尚未做好接收準(zhǔn)備的幀。間隔幀:主要用于將數(shù)據(jù)幀及遙控幀與前一幀分隔開來的幀。

其中數(shù)據(jù)幀是使用最多的幀類型,這里重點(diǎn)介紹一下數(shù)據(jù)幀。數(shù)據(jù)幀如下圖所示:

數(shù)據(jù)幀

由上圖所示,數(shù)據(jù)幀包括:

  • 幀起始。表示數(shù)據(jù)幀開始的段。
  • 仲裁段。表示該幀優(yōu)先級的段。
  • 控制段。表示數(shù)據(jù)的字節(jié)數(shù)及保留位的段。
  • 數(shù)據(jù)段。數(shù)據(jù)的內(nèi)容,一幀可發(fā)送0~8個字節(jié)的數(shù)據(jù)。
  • CRC段。檢查幀的傳輸錯誤的段。
  • ACK段。表示確認(rèn)正常接收的段。
  • 幀結(jié)束。表示數(shù)據(jù)幀結(jié)束的段。具體介紹可以查看”CAN2.0A”、”CAN2.0B”詳細(xì)介紹。
  • 我們主要關(guān)注我們編程所需要關(guān)注的幾個段:ID: CAN報(bào)文ID;IDE: 為0是標(biāo)準(zhǔn)幀,為1是擴(kuò)展幀;RTR: 為0是數(shù)據(jù)幀,為1是遠(yuǎn)程幀;DLC: CAN報(bào)文數(shù)據(jù)長度,范圍0~8字節(jié);Data:數(shù)據(jù),0~8個字節(jié);


    未完待續(xù)…關(guān)于CAN,還有很多內(nèi)容(70多頁),剩下內(nèi)容:

    加微信13923404017,免費(fèi)獲取完整版

    總結(jié)

    以上是生活随笔為你收集整理的linux can 接收多帧_CAN编程介绍的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。