重學STM32 (九)之CAN通訊(一)

2022-05-18 12:00:36 字數 2157 閱讀 4573

目錄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...