1. 程式人生 > >CAN匯流排學習①-匯流排仲裁機制

CAN匯流排學習①-匯流排仲裁機制

Controller Area Network簡稱CAN匯流排是一個在汽車電子上用得非常廣泛的一種協議,CAN匯流排有眾多優點……
好,說了那麼多CAN的特點之後激起了我對CAN匯流排工作原理的興趣。CAN匯流排的匯流排仲裁機制是我覺得設計的非常精妙的,下面總結幾個CAN匯流排的特徵點,這幾個特徵點對理解CAN的總裁機制非常重要。

1、CAN匯流排在物理層上只有兩根線CANH和CANL,根據兩根線的的電位差來判斷匯流排電平,而不是兩根線單獨傳輸資料(像串列埠的TXD和RXD一樣)。匯流排電平分為顯性電平和隱形電平兩種,相當於二進位制中的0和1。

2、CAN總線上可以掛載很多和CAN控制器單元,每個單元都可以是主機,可以傳送和接收資料。但是有與總線上單元眾多,所以會導致傳送衝撞。為了避免傳送衝撞,CAN協議規定只有等通道空閒的時候某一個CAN單元才能佔有匯流排併發送資料。但是僅僅這樣做還不足以避免所有的訊號衝撞,例如如果有兩個單元同時要傳送資料的時候,他們同時檢測通道是否空閒,同時準備傳送資料,這樣就會產生衝撞。

3、為了解決2中所說的衝撞問題,CAN協議提出了優先順序的概念。規定每一個CAN的資料幀都有一個識別符號(Identification)簡稱ID,這個ID標識了CAN資料幀的優先順序。多個單元同時傳送資料幀的時候,優先順序較高的資料幀優先發送資料,低優先順序的資料幀則等待空閒後傳送。

4、就像3中說的,通過資料幀的優先順序來決定哪個資料幀所在的CAN單元優先發送資料,但是每個CAN單元並不知道與自己同時傳送資料的單元的優先順序到底是比自己高還是比自己低。解決辦法就是使用1中所說的CAN匯流排的物理特性來解決。舉一個例子來形象地說明一下,這裡暫時先拋開CAN匯流排的物理特性,使用我們自己的熟知的數位電路知識,假設單元之間只使用一根線連線,線路的電平狀態為0或者1,且0為顯性1為隱形,也就是0電平和1電平進行“線與”操作的話會出現0電平(0 & 1 = 0)。好,假設這裡有兩個單元:單元1和單元2,單元1要傳送的資料幀的優先順序為0010 0011(b),單元2要傳送的資料幀的優先順序為0011 0101(b),我們規定優先順序數值越小的單元優先順序越高,也就是0000 0000(b)的優先順序最高而1111 1111(b)的優先順序最低。那麼我們知道單元1的優先順序是要高於單元2的。就在公元2018年1月22號早上10點41分22秒276毫秒33微秒的時候,兩個單元要同時傳送資料,雖然我們不想他們兩個發生衝撞,但是還是不可避免的發生了。按照正常的手續來,第一步,兩個單元先檢測通道是否是空閒,檢測結果是空閒,兩個單元都可以進行資料傳送,但是彼此不知道對方也要進行資料傳送。第二步,傳送各自的優先順序ID,我們規定先發送高位,這時候單元1傳送了0,單元2傳送了0,在物理線上進行線與之後得到了0,單元1和單元2都說了:“啊,太開心了,我發出去了0,線上的狀態的確是0”,好進行下一位資料的傳送,單元1傳送了0,單元2傳送了0,在物理線上進行線與之後得到了0,單元1和單元2都說了:“啊,真好,我發出去了0,線上還是0”,但是其實他們都是“傻逼”,因為0和任何數進行與操作都是0,所以發出去是0檢測線上的訊號一定也是0。好,繼續下一位資料,這次兩個單元的資料都是1了,這樣線與之後線上的電平還是1,單元1和單元2都說了:“啊,你才是傻逼,我發出去1了,我還是能收到1!”。好好好,我不跟你犟,我們再看下一個資料,這下就有好戲看了,單元1發出去了一個0,而單元2傳送出去了一個1,進行線與操作後得到了0,也就是說單元0傳送出去0,線上結果是0,但是單元1傳送出去1但是線上結果是0,這時候單元1笑了說:“哈哈,我發出去的和檢測到的是一樣的”,而單元2哭著說:“我發出了1但是檢測到了0,這說明總線上還有一個單元在傳送資料,並且他傳送的是0,也就是說他的優先順序比我要高,我要讓他先走”,好了終於分出個高下了,單元1繼續傳送資料,單元2等待單元1傳送之後再進行傳送。好,例子說完了,總線上不同單元同時傳送資料的情況完美地解決的,雖然有的單元心裡可能有點憋屈,但是誰叫別人的優先順序更高呢!這是我們規定的物理層通訊協議,其實CAN匯流排的匯流排仲裁方式跟我們的例子是如出一轍的,是不是很佩服設計者的腦子!

相關推薦

CAN匯流排學習①-匯流排仲裁機制

Controller Area Network簡稱CAN匯流排是一個在汽車電子上用得非常廣泛的一種協議,CAN匯流排有眾多優點…… 好,說了那麼多CAN的特點之後激起了我對CAN匯流排工作原理的興趣。CAN匯流排的匯流排仲裁機制是我覺得設計的非常精妙的,下面總

CAN匯流排學習記錄之一:CAN簡介

CAN 是 Controller Area Net 的縮寫,即控制器區域性網,是一種有效支援分佈控制或實時控制的序列通訊網路。CAN 是德國 Bosch 公司為汽車的監測、控制系統而設計的,如控制發動機點火、注油及複雜的加速、剎車、抗鎖定剎車系統等,已用於各種汽車上。由於 CAN 具有卓越的特性及的可靠性,因

CAN匯流排學習記錄之二:系統結構與幀結構

CAN匯流排系統結構 CAN 控制器  接收控制單元中微處理器發出的資料,處理資料並傳給 CAN 收發器 CAN 收發器 將資料傳到匯流排 or 從匯流排接收資料給 CAN 控制器 CAN 資料傳遞終端 避免資料傳輸終了反射回來 CAN 資料匯流排 傳輸資料的資料線,兩根:CAN-hig

CAN匯流排學習記錄之三:匯流排中主動錯誤和被動錯誤的通俗解釋

首先建議把廣泛使用的“主動錯誤”和“被動錯誤”概念換成“主動報錯”和“被動報錯”。 1. 主動報錯站點 只要檢查到錯誤,它立即“主動地”發出錯標識。所謂“出錯標識“,它本身就是一個“錯誤的位序列”(連續的6個顯性位,不滿足 CAN 協議的“最多5個連續的同性位”要求),目的是“主動地”告訴大家:即使你們沒

CAN匯流排學習記錄之四:位定時與同步

一、位定時 1.1 位元率和波特率 1)位速率:又叫做位元率(bit rata)、資訊傳輸率,表示的是單位時間內,總線上傳輸的資訊量,即每秒能夠傳輸的二進位制位的數量,單位是bit per second。 2)波特率:又叫做傳位元速率、訊號傳輸率,表示的是單位時間內傳輸的碼元的數量,當兩相調製時,一個碼

I2C匯流排仲裁機制

    在多主的通訊系統中。總線上有多個節點,它們都有自己的定址地址,可以作為從節點被別的節點訪問,同時它們都可以作為主節點向其他的節點發送控制位元組和傳送資料。但是如果有兩個或兩個以上的節點都向總線上傳送啟動訊號並開始傳送資料,這樣就形成了衝突。要解決這種衝突,就要進行仲裁的判決,這就是I2C總線上的仲裁

CAN匯流排學習筆記(1)- CAN基礎知識

依照瑞薩公司的《CAN入門書》的組織思路來學習CAN通訊的相關知識,並結合網上相關資料以及學習過程中的領悟整理成筆記。好記性不如爛筆頭,加油! 1 CAN的一些基本概念 1.1 什麼是CAN匯流排 CAN 是 Controller Area N

AHB匯流排學習彙總

部落格不是寫書,基本的背景也不做什麼介紹了,瞭解的人是不會介意這些東西的。   一、AHB的基本介紹 AHB是ARM退出的AMBA匯流排系列中的其中一種,它是一種高效能的pipe系統匯流排。 1. AHB匯流排有一下特性: n  Burst 

【博文彙總】SPI匯流排學習

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

APB匯流排學習彙總

APB簡介 APB(Advanced Peripheral Bus),外圍匯流排。APB屬於AMBA 3 協議系列,它提供了一個低功耗的介面, 並降低了介面的複雜性。 APB介面用在低頻寬和不需要高效能匯流排的外圍裝置上。 APB是非流水線結構,所有的訊號僅與時鐘上升沿相關,這樣就可以簡化APB

AXI匯流排學習彙總

本文轉自:http://www.cnblogs.com/lkiller/p/4773235.html 0.緒論 AXI是高階擴充套件介面,在AMBA3.0中提出,AMBA4.0將其修改升級為AXI4.0。AMBA4.0 包括AXI4.0、AXI4.0-lite、ACE4.0、AXI4.0-s

I2S音訊匯流排學習(二)I2S匯流排協議

一、I2S匯流排概述        音響資料的採集、處理和傳輸是多媒體技術的重要組成部分。眾多的數字音訊系統已經進入消費市場,例如數字音訊錄音帶、數字聲音處理器。對於裝置和生產廠家來說,標準化的資訊傳輸結構可以提高系統的適應性。I2S(Inter—IC Sound)匯流排是飛利浦公司為數字音訊裝置之間的音訊資

I2S音訊匯流排學習(一)數字音訊技術

                IIS音訊匯流排學習(一)數字音訊技術一、聲音的基本概念    聲音是通過一定介質傳播的連續的波。圖1 聲波重要指標:振幅:音量的大小週期:重複出現的時間間隔頻率:指訊號每秒鐘變化的次數聲音按頻率分類:圖2 聲音的頻率(語音訊號頻率範圍:300Hz-3kHz)聲音的傳播攜帶了資

USB匯流排學習心得及資料

看了一下usb協議資料,對usb原理有了一個簡單的瞭解。 usb匯流排和pci匯流排一樣,匯流排的作用都是提供通道,各種裝置利用匯流排通道來實現自己的功能。 usb匯流排的主要特點:是一個星形的共享性匯流排,匯流排控制器逐個的詢問總線上的裝置是否需要資料收

JAVA 學習筆記 - 反射機制

-s .html upload 通過 tostring for catch span pack 1. JAVA反射機制的概念 2. 怎樣實例化一個 Class對象 Class.forName(包名.類名); 對象.getClass();

12.swoole學習筆記--鎖機制

com pre blog ima -- 釋放 mut 9.png 機制 <?php //創建鎖對象 $lock=new swoole_lock(SWOOLE_MUTEX);//互斥鎖 echo "創建互斥鎖\n"; //開始鎖定 主進程 $lock->loc

python學習之內存機制

可變對象 block 次數 字符串 字符 變量 app append 目前 不可變對象(字符串、元組) 1. a = 1 首先在內存中創建對象1,並記錄對象的引用計數為1次。 id(a) 查看變量a引用的對象的內存地址 2. b = 1 內存中已存在對象1,變量b引用對

Python學習---django惰性機制

scrip () pda aps lock lis lap 第一次 之間 Django惰性機制 所謂惰性機制:Publisher.objects.all()或者.filter()等都只是返回了一個QuerySet(查詢結果集對象),它並不會馬上執行sql,而是當調用Quer

【轉】Zookeeper學習---zookeeper 選舉機制介紹

erp change 交換 內容 數值 所有 ase 一輪 eval 【原文】https://www.toutiao.com/i6593162565872779784/ zookeeper集群 配置多個實例共同構成一個集群對外提供服務以達到水平擴展的目的,每個服務器上的數據

Redis學習之管道機制

前言 以下是對 Redis管道機制的一個學習記錄 Pipeline簡介 Redis客戶端執行一條命令: 傳送命令 命令排隊 執行命令 返回結果 其中傳送命令和返回結果可以稱為 Round Trip Time (RTT,往返時間)。在Redis中提供了批量操作命令,例如mget、