目錄can 是 controller area network的縮寫(以下稱為 can),是 iso 國際標準化的序列通訊協議。
(1) 主動錯誤狀態
主動錯誤狀態是可以正常參加匯流排通訊的狀態。處於主動錯誤狀態的單元檢測出錯誤時,輸出主動錯誤標誌。
(2) 被動錯誤狀態
被動錯誤狀態是易引起錯誤的狀態。處於被動錯誤狀態的單元雖能參加匯流排通訊,但為不妨礙其它單元通訊,接收時不能積極地傳送錯誤通知。處於被動錯誤狀態的單元即使檢測出錯誤,而其它處於主動錯誤狀態的單元如果沒發現錯誤,整個匯流排也被認為是沒有錯誤的。
處於被動錯誤狀態的單元檢測出錯誤時,輸出被動錯誤標誌。
另外,處於被動錯誤狀態的單元在傳送結束後不能馬上再次開始傳送。在開始下次傳送前,在間隔幀期間內必須插入「延遲傳送」(8 個位的隱性位)。
(3) 匯流排關閉態
匯流排關閉態是不能參加匯流排上通訊的狀態。資訊的接收和傳送均被禁止。這些狀態依靠傳送錯誤計數和接收錯誤計數來管理,根據計數值決定進入何種狀態。
can 收發器根據兩根匯流排(can_high 和 can_low)的電位差來判斷匯流排電平。
匯流排電平分為顯性電平和隱性電平兩種。 匯流排必須處於兩種電平之一。 匯流排上執行邏輯上的線「與」時,顯性電平為「0」,隱性電平為「1」。物理層的特徵如圖所示。
1、幀的種類
通訊是通過以下 5 種型別的幀進行的。
另外, 資料幀和遙控幀有標準格式和擴充套件格式兩種格式。 標準格式有 11 個位的識別符號 (identifier: 以下稱 id) ,擴充套件格式有 29 個位的 id。
2、資料幀
資料幀由 7 個段構成,資料幀的構成如圖所示。
資料幀和遙控幀的不同
- 遙控幀的 rtr 位為隱性位,沒有資料段。
- 沒有資料段的資料幀和遙控幀可通過 rtr 位區別開來。
遙控幀沒有資料段,資料長度碼該如何表示 ?
- 遙控幀的資料長度碼以所請求資料幀的資料長度碼表示。
沒有資料段的資料幀有何用途 ?
- 例如,可用於各單元的定期連線確認/應答、或仲裁段本身帶有實質性資訊的情況下。
3、優先順序的決定
在匯流排空閒態,最先開始傳送訊息的單元獲得傳送權。多個單元同時開始傳送時,各傳送單元從仲裁段的第一位開始進行仲裁。連續輸出顯性電平最多的單元可繼續傳送。仲裁的過程如圖所示。
4、錯誤的種類
錯誤共有 5 種。多種錯誤可能同時發生。
錯誤的種類、錯誤的內容、錯誤檢測幀和檢測單元如表所示:
5、位時序
由傳送單元在非同步的情況下傳送的每秒鐘的位數稱為位速率。乙個位可分為 4 段。
這些段又由可稱為 time quantum(以下稱為 tq)的最小時間單位構成。
1 位分為 4 個段,每個段又由若干個 tq 構成,這稱為位時序。
1 位由多少個 tq 構成、每個段又由多少個 tq 構成等,可以任意設定位時序。通過設定位時序,多個單元可同時取樣,也可任意設定取樣點。各段的作用和 tq 數如表 11 所示。1 個位的構成如圖所示:
詳情請參考can入門教程。
重學STM32 (十)之CAN通訊 二
目錄 can協議是非常難的,但是在stm32中卻是簡單的,只需要我們配置暫存器即可,即使這樣,我在學習的時候也遇到了許多困難 1 開時鐘,不用說 2 設定gpio口,can tx復用推挽輸出,can rx上拉或浮空輸入 3 can初始化了,分三步 對can初始化 can1 mcr 1 15 軟復位 ...
STM32之串列埠通訊
一 rs232通訊協議 1 概念 個人計算機上的通訊介面之一,由電子工業協會 electronic industries association,eia 所制定的非同步傳輸標準介面。2 電氣特性 邏輯1 mark 3v 15v 邏輯0 space 3 15v 3 介面 實現全雙工非同步通訊只需要三根...
stm32之串列埠通訊
1 首先對tx和rx進行配置 void init gpio void 2 對串列埠進行配置 3 對總中斷進行配置 4 傳送中斷 void usart1 it void 5 傳送位元組和字串 void usart sendbyte usart typedef pusartx,uint8 t ch vo...