STM32F103的CAN 通訊之通訊協議

2021-08-03 04:29:56 字數 3357 閱讀 4227

can匯流排的通訊模式

can是一種有效支援分布式控制[3]或實時控制的序列通訊網路,可實現全分布式多機系統;可以用點對點,一點對多點以及全域性廣播幾種方式傳送和接受資料;can匯流排直接通訊距離最遠可達10km(此時傳輸速率可能達到5kb/s),通訊速率最高可達1mb/s(此時傳輸距離可能達到40m);且理論上can匯流排通訊網路的節點數不受限制(實際上受can收發器晶元驅動能力的限制)。can匯流排基於下列5條基本規則進行通訊協調:

1.匯流排訪問:can是共享**匯流排,他對**的訪問機制類似於乙太網的**訪問機制,機採用載波監聽多路訪問的方式。can控制器只能在匯流排空閒時傳送,並採用硬同步,所有can控制器同步位於幀起始的前沿。為避免非同步時鐘因累積誤差而產生錯位,can匯流排中用硬同步後滿足一定條件的跳變進行重同步。所謂匯流排空閒,就是網路上至少存在3個空閒位(隱性位)時網路的狀態,也就是can節點在偵聽到網路上出現至少3個隱性位時,才開始傳送。

2.仲裁:當匯流排空閒時呈隱性電平,此時任何乙個節點都可以向匯流排傳送乙個顯性電平作為乙個幀的開始。如果有兩個或兩個以上的節點同時傳送,就會產生匯流排衝突。can匯流排解決匯流排衝突的方法比乙太網的csma/cd方法有很大的改進。乙太網是碰撞檢測方式,即一旦檢測到兩個或多個節點同時傳送資訊幀時,即所有傳送節點都退出傳送,待隨機時間後再傳送。而can是按位對識別符號進行仲裁:各傳送節點在向匯流排傳送電平的同時,也對匯流排上得電平進行讀取,並與自身傳送的電平進行比較,如果電平相同則繼續傳送下一位,不同則說明網路上有更高優先順序的資訊幀正在傳送,即停止傳送,退出匯流排競爭。剩餘的節點則繼續上述過程,直達匯流排上只剩下乙個節點傳送的電平,匯流排競爭結束,優先順序最高的節點獲得了匯流排的使用權,繼續傳送資訊的剩餘部分直至全部傳送完畢。

3.編碼/解碼:幀起始域、總裁域、控制域,資料域和crc序列均使用位填充技術進行編碼。在can匯流排中,每連續5個同狀態的電平插入一位與它相補的電平,還原時每5個相同狀態的電平後的相補電平被刪除,從而保證了資料的透明。

4.出錯標註:當檢測到位錯誤、填充錯誤、形式錯誤或應答錯誤時,檢測出錯條件的can控制器將傳送乙個出錯標誌。

在進行資料傳送時,發出報文的單元成為該報文的傳送器。該單元在匯流排空閒會丟失仲裁前始終為傳送器。如果乙個單元不是報文傳送器,並且匯流排不處於空閒狀態,則該單元就是接收器。

對於報文傳送器和接收器,報文的實際有效時刻是不同的。對於傳送器而言,如果知道幀的結束末尾一直未出錯,則對於傳送器報文有效。如果報文受損,將允許按照優先權順序自動傳送。為了能同其他報文進行匯流排訪問競爭,匯流排一旦空閒,重傳送立即開始。對於接收器而言,如果知道幀結束的最後一位一直未出錯,則對於接收器報文有效。

構成一幀的幀起始、仲裁場、控制場和crc序列均借助位填充規則進行編碼。當傳送器在傳送的位流中檢測到5位連續的相同數值時,將自動地在實際傳送的位流中插入乙個補碼位。資料幀和遠端幀的其餘位場採用固定格式,不進行填充。出錯幀和超載幀同樣是固定格式,也不進行位填充

報文中的位流按照非歸零嗎(nrz)方法編碼,這意味著乙個完整的位電平要麼是顯性要麼是隱性。

can的分層結構

為了使設計透明和執行靈活,遵循iso/osi標準模型,can分為資料鏈路層(包括邏輯鏈路層llc和**訪問控制層mac)和物理層,在can技術規範2.0a的版本中,資料鏈路層的llc和mac子層的服務和功能被描述為「目標層」和「傳輸層」。如圖2-1為can的分層結構和功能示意圖。

邏輯鏈路子層llc子層的主要功能是報文濾波、超載通知和恢復管理。

**訪問控制子層mac子層的功能主要是傳送規則,以及控制幀結構、執行仲裁、錯誤檢測、出錯標定和故障界定。mac子層也要確定為開始一次新的傳送,匯流排是否開放或者是否馬上開始接收,位定時也是mac子層的一部分。物理層的功能是有關全部電氣特性不同的節點間位的實際傳送。

圖1 can的分層結構和功能

can匯流排報文的幀結構

報文傳送有4種不同型別的幀表示和控制:資料幀攜帶資料由傳送器至接收器;遠端幀通過匯流排單元傳送,以請求傳送具有相同標示符的資料幀;出錯幀有檢測出匯流排錯誤的任何單元傳送;超載幀用於提供當前的和後續的資料幀的附加延遲。資料幀和遠端幀借助幀間空間與前幀分開。

1.資料幀

資料幀由7個不同的位場組成,即幀起始、仲裁場、控制場、資料場、crc場、應答場和幀結束,資料長度可為0。can技術規範2.0b資料幀的組成如圖2所示。

圖2 資料幀的組成

在can技術規範2.0b中存在兩種不同的幀格式,其主要區別在於識別符號的長度,具有11位識別符號的幀稱為標準幀,而包括29位識別符號的稱為擴充套件幀。標準格式和擴充套件格式的資料幀結構如圖3、圖4所示。srr:替代遠端請求,ide:標識位擴充套件位,rtr:遠端傳送請求位。

圖3標準格式的資料幀

圖4 擴充套件格式的資料幀

can技術規範2.0b對報文濾波特別加以描述,報文濾波器以整個識別符號位基準[6]。遮蔽暫存器可用於選擇一組識別符號,以便映像至接收快取器中,遮蔽暫存器每一位都必須是可程式設計的,它的長度可以是整個識別符號,也可以僅是其中一部分。

(1) 幀起始(sof)標誌資料幀和遠端幀的起始,它僅由乙個顯性位構成,只有在匯流排處於空閒狀態時,才允許單元開始傳送。所有單元都必須同步於首先開始傳送的那個單元的幀起始前沿。

(2) 仲裁場由識別符號和遠端傳送請求位(rtr)組成,如圖5所示。

圖5仲裁場組成

對於can技術規範2.0a,識別符號的長度為11位,這些位一從高位到低位的順序傳送,最低位為id.0,其中最高7位不能全為隱性。如圖2-7為can技術規範2.0a資料幀格式。rtr位在資料幀中必須為顯性,而在遠端幀中必須為隱性對於can技術規範2.0a,識別符號的長度為11位,這些位一從高位到低位的順序傳送,最低位為id.0,其中最高7位不能全為隱性。rtr位在資料幀中必須為顯性,而在遠端幀中必須為隱性。

圖6 can技術規範2.0a資料幀

對於can技術規範2.0b,標準格式和擴充套件格式的仲裁場不同,在標準格式中,11位識別符號和遠端傳送請求位rtr組成,識別符號位為id.28--id.18;rtr位在資料幀中必須為顯性,而在遠端幀中必須為隱性。

為區別標準格式和擴充套件格式,將can技術規範2.0a中的r1改記為ide位。對於can技術規範2.0b,在擴充套件格式中,仲裁場:29位識別符號id.28--id.0;替代遠端請求srr位(隱性位);標識位擴充套件位ide(隱性位);遠端傳送請求位rtr。

srr的全稱是替代遠端請求位[7](substitute remote request bit),srr是一隱性位。它在擴充套件格式的標準幀rtr位上被傳送,並代替標準幀的rtr位。因此,如果擴充套件幀的基本id和標準幀的識別符相同,標準幀與擴充套件幀的衝突是通過標準幀優先於擴充套件幀這一途徑得以解決的。

ide的全稱是「識別符擴充套件位(identifier extension bit)」,對於擴充套件格式,ide位屬於仲裁場;對於標準格式,ide位屬於控制場。標準格式裡的ide位為顯性,而擴充套件格式裡的ide位為隱性。通過判別srr和ide是否均為隱性識別為擴充套件格式,而不是標準格式的資料幀或遠端幀。

can2.0b的擴充套件幀和can2.0a和can2.0b的標準幀一樣,在資料幀中rtr位必須為顯性,而在遠端幀中必須為隱性。

STM32F103串列埠通訊

usart 通用同步非同步收發器 是乙個序列通訊裝置,可以靈活地與外部裝置進行全雙工資料交換。有別於 usart 還有乙個uart,它是在 usart 基礎上裁剪掉了同步通訊功能,只有非同步通訊。全雙工的,非同步通訊 分數波特率發生器系統 傳送和接收共用的可程式設計波特率,最高達4.5mbits s...

stm32f103外部中斷

void extix init void 外部中斷0服務程式 void exti9 5 irqhandler void 這是簡單的外部中斷的配置,pc7作為中斷輸入 上面補充io口的初始化 gpio initstructure.gpio mode gpio mode ipu pc6配置為快充指示 1...

STM32F103啟動檔案

目錄 一 概述 二 彙編指令 2.1 equ 2.2 area 2.3 space 2.4 preserve8 2.5 thumb 2.6 export 2.7 dcd 2.8 proc 2.9 ldr 2.10 blx 2.11 bx 2.12 temport 2.13 b 2.14 if,els...