国产av一二三区|日本不卡动作网站|黄色天天久久影片|99草成人免费在线视频|AV三级片成人电影在线|成年人aV不卡免费播放|日韩无码成人一级片视频|人人看人人玩开心色AV|人妻系列在线观看|亚洲av无码一区二区三区在线播放

網(wǎng)易首頁 > 網(wǎng)易號(hào) > 正文 申請入駐

CAN協(xié)議分析

0
分享至


概述

CAN 協(xié)議即控制器局域網(wǎng)絡(luò) (Controller Area Network)簡稱,由研發(fā)和生產(chǎn)汽車電子產(chǎn)品著稱的德國 BOSCH 公司開發(fā),成為國際標(biāo)準(zhǔn)ISO11519以及ISO11898。

CAN 總線協(xié)議已經(jīng)成為汽車計(jì)算機(jī)控制系統(tǒng)和嵌入式工業(yè)控制局域網(wǎng)的標(biāo)準(zhǔn)總線。


CAN協(xié)議構(gòu)成

can協(xié)議分為物理層和協(xié)議層

CAN協(xié)議物理層
1.通訊方式

CAN使用異步通信,利用CAN_High和CAN_Low兩條信號(hào)線組成的差分信號(hào)線進(jìn)行通訊(和傳統(tǒng)的時(shí)鐘通信不同)。

傳輸速率

500kbps和125kbps的總線分別針對不同類型的ECU。

◆500kbps CAN總線連接了ABS(防抱死制動(dòng)系統(tǒng)),SAS(轉(zhuǎn)向角傳感器),ETM(發(fā)動(dòng)機(jī)電子控制模塊)和ECM(電子控制模塊),通常用于傳輸速率要求較高的控制信號(hào)。

◆125kbps CAN接口連接了DDM(所有權(quán)門模塊)和PDM(電梯門模塊),通常用于傳輸速率要求較低的控制信號(hào)。

差分信號(hào)

差分信號(hào)通信是一種通過兩條導(dǎo)線(或信號(hào)線)傳輸數(shù)據(jù)的方式,主要用于提高抗干擾能力和信號(hào)完整性。

概念

在差分信號(hào)通信中,同一信號(hào)的兩個(gè)版本會(huì)同時(shí)在兩條導(dǎo)線上傳輸:

正信號(hào)(+):原始信號(hào)

負(fù)信號(hào)(-):原始信號(hào)的反相版本

例如:

如果正信號(hào)是高電平(+5V),負(fù)信號(hào)就是低電平(0V)

如果正信號(hào)是低電平(0V),負(fù)信號(hào)就是高電平(+5V)

信號(hào)的產(chǎn)生

發(fā)送端通過一個(gè)差分驅(qū)動(dòng)器(或發(fā)送器)生成差分信號(hào):

正信號(hào)線(D+):直接傳輸原始信號(hào)

負(fù)信號(hào)線(D-):傳輸原始信號(hào)的反相信號(hào)

例如:

當(dāng)發(fā)送邏輯“1”時(shí),D+線上為高電平,D-線上為低電平

當(dāng)發(fā)送邏輯“0”時(shí),D+線上為低電平,D-線上為高電平

信號(hào)的傳輸

差分信號(hào)通過兩條導(dǎo)線同時(shí)傳輸,導(dǎo)線之間的電壓差(即差分電壓)決定了信號(hào)的邏輯狀態(tài):

差分電壓 = D+ 電壓 - D- 電壓

◆邏輯“1”通常表現(xiàn)為正的差分電壓(例如 +2V)

◆邏輯“0”通常表現(xiàn)為負(fù)的差分電壓(例如 -2V)

信號(hào)的接收

接收端使用差分接收器來解讀信號(hào)

差分接收器不直接讀取D+或D-的電壓值,而是讀取它們之間的電壓差

◆如果D+的電壓高于D-的電壓,接收器將其解讀為邏輯“1”

◆如果D+的電壓低于D-的電壓,接收器將其解讀為邏輯“0”

抗噪聲原理

當(dāng)外部噪聲(如電磁干擾)影響到傳輸線時(shí),通常會(huì)同時(shí)影響到D+和D-兩條線,使它們的電壓同時(shí)上升或下降。

但由于接收器只關(guān)注兩條線之間的電壓差,這種共模噪聲不會(huì)改變信號(hào)的邏輯狀態(tài),因此可以被有效抑制。

CAN 協(xié)議中的差分信號(hào)規(guī)范

CAN 總線協(xié)議的物理層,只有 1 對差分線,在一個(gè)時(shí)刻只能表示一個(gè)信號(hào),所以對通訊節(jié)點(diǎn)來說,CAN 通訊是半雙工的,收發(fā)數(shù)據(jù)需要分時(shí)進(jìn)行。

CAN 的通訊網(wǎng)絡(luò)中,因?yàn)楣灿每偩€,在整個(gè)網(wǎng)絡(luò)中同一時(shí)刻只能有一個(gè)通訊節(jié)點(diǎn)發(fā)送信號(hào),其余的節(jié)點(diǎn)在該時(shí)刻都只能接收。

2.總線網(wǎng)絡(luò)

can的物理層的形式有兩種

◆ISO11898 標(biāo)準(zhǔn)的高速、短距離“閉環(huán)網(wǎng)絡(luò)”

◆ISO11519-2 標(biāo)準(zhǔn)的低速、遠(yuǎn)距離“開環(huán)網(wǎng)絡(luò)”

閉環(huán)網(wǎng)絡(luò)

◆總線最大長度為 40m

◆通信速度最高為 1Mbps

◆閉環(huán)總線兩端各有一個(gè)120Ω的電阻

開環(huán)網(wǎng)絡(luò)

總線最大長度為 1km

最高通訊速率為 125kbps

每根總線串聯(lián)一個(gè)2.2kΩ的電阻

3. 通訊節(jié)點(diǎn)

通訊節(jié)點(diǎn)構(gòu)成

◆一個(gè) CAN 控制器及 CAN 收發(fā)器構(gòu)成

◆通過 CAN_Tx 及CAN_Rx 信號(hào)線連接控制器與收發(fā)器

◆通過 CAN_High 及 CAN_Low 信號(hào)線連接收發(fā)器和 CAN 總線

◆CAN_Tx 及 CAN_Rx 使用普通的類似 TTL 邏輯信號(hào)

◆CAN_High 及 CAN_Low 是一對差分信號(hào)線

多通訊節(jié)點(diǎn)掛載

一個(gè)總線可以掛載多個(gè)節(jié)點(diǎn),CAN 通訊協(xié)議不對節(jié)點(diǎn)進(jìn)行地址編碼,對數(shù)據(jù)內(nèi)容進(jìn)行編碼的。節(jié)點(diǎn)個(gè)數(shù)理論上不受限制(總線的負(fù)載足夠即可,通過中繼器增強(qiáng)負(fù)載)

通訊節(jié)點(diǎn)通訊流程

接收和發(fā)送流程相反

發(fā)送數(shù)據(jù)

◆控制器把要發(fā)送的二進(jìn)制編碼通過 CAN_Tx 線發(fā)送到收發(fā)器。

◆收發(fā)器把這個(gè)普通的邏輯電平信號(hào)轉(zhuǎn)化成差分信號(hào)。

◆通過差分線 CAN_High 和 CAN_Low 線輸出到 CAN 總線網(wǎng)絡(luò)。

接收數(shù)據(jù)

CAN 總線網(wǎng)絡(luò)將數(shù)據(jù)通過差分線CAN_High 和 CAN_Low 發(fā)送。收發(fā)器把總線上收到的 CAN_High 及 CAN_Low 信號(hào)轉(zhuǎn)化成普通的邏輯電平信號(hào),最后通過 CAN_Rx 線輸出到控制器中。

CAN電平轉(zhuǎn)換芯片(部分)

CAN協(xié)議協(xié)議層

1.波特率及位同步

通訊的波特率

==總線上的各個(gè)通訊節(jié)點(diǎn)只要約定好 1 個(gè) Tq 的時(shí)間長度以及每一個(gè)數(shù)據(jù)位占據(jù)多少個(gè) Tq,就可以確定 CAN 通訊的波特率==

SJW[1:0]再同步補(bǔ)償寬度
TS1[3:0]時(shí)間段1
TS2[2:0]時(shí)間段2
BRP[9:0]波特率分頻器
SS同步段恒等于1
設(shè)置APB1的時(shí)鐘頻率,STM32F1通常為36MHz(外部8M晶振)

詳細(xì)計(jì)算方式參考:CAN總線波特率的設(shè)定——以STM32F103為例 - 知乎 (zhihu.com)

示例:

假設(shè)1Tq=1us,而每個(gè)數(shù)據(jù)位由 19 個(gè) Tq 組成,則傳輸一位數(shù)據(jù)需要時(shí)間;

T1bit=19us,從而每秒可以傳輸?shù)臄?shù)據(jù)位個(gè)數(shù)為:1x10次方/19 = 52631.6 (bps)

每秒可傳輸?shù)臄?shù)據(jù)位的個(gè)數(shù)即為通訊中的波特率,CAN 屬于異步通訊,沒有時(shí)鐘信號(hào)線。連接在同一個(gè)總線網(wǎng)絡(luò)中的各個(gè)節(jié)點(diǎn)會(huì)像串口異步通訊那樣,節(jié)點(diǎn)間使用好的波特率進(jìn)行通訊。(同時(shí)使用“位同步”的方式來抗干擾、吸收誤差,實(shí)現(xiàn)對總線電平信號(hào)進(jìn)行正確的采樣,確保通訊正常)

位時(shí)序分解

CAN 協(xié)議把每一個(gè)數(shù)據(jù)位的時(shí)序分解成SS 段,PTS 段,PBS1 段,PBS2 段

,四段的長度加起來即為一個(gè) CAN 數(shù)據(jù)位的長度。

分解后的最小時(shí)間單元為Tq(一個(gè)完整的位由 8~25 個(gè) Tq組成)

(此處高低電平直接代表信號(hào)邏輯 0 或邏輯 1)

示例的的數(shù)據(jù):位長度為19Tq

◆SS 段占 1Tq

◆PTS 段占 6Tq

◆PBS1段占 5Tq

◆PBS2 段占 7Tq

SS段

同步段(大小固定為 1Tq)

==檢測到總線上信號(hào)的跳變沿被包含在 SS 段的范圍之內(nèi),則表示節(jié)點(diǎn)與總線的時(shí)序是同步的==

PTS段

傳播時(shí)間段(大小為 1~8Tq)

==補(bǔ)償網(wǎng)絡(luò)的物理延時(shí)時(shí)間==,總線上輸入比較器延時(shí)和輸出驅(qū)動(dòng)器延時(shí)總和的兩倍

PBS1 段 (PHASE SEG1)

相位緩沖段(大小為 1~8Tq)

==補(bǔ)償邊沿階段的誤差==,它的時(shí)間長度在重新同步的時(shí)候可以加長

PBS2 段 (PHASE SEG2)

另一個(gè)相位緩沖段(大小為 2~8Tq)

==也是用來補(bǔ)償邊沿階段誤差的==,時(shí)間長度在重新同步時(shí)可以縮短

同步過程分析

簡述同步:使數(shù)據(jù)接收方能夠正確地解釋和處理從發(fā)送方接收到的數(shù)據(jù),確保接收方能夠準(zhǔn)確地識(shí)別出每個(gè)數(shù)據(jù)位的開始和結(jié)束。

CAN的同步分為兩種:硬同步和軟同步


硬同步(針對短幀傳輸)

硬同步是當(dāng)CAN節(jié)點(diǎn)在總線上檢測到一個(gè)顯性邊沿(即從隱性位跳變到顯性位)時(shí)進(jìn)行的同步操作

隱性位跳變到顯性位:

顯性位(Dominant Bit):表示邏輯“0”

◆**隱性位(Recessive Bit):**表示邏輯“1”

邊沿(Edge):邊沿是指信號(hào)從一個(gè)狀態(tài)轉(zhuǎn)換到另一個(gè)狀態(tài)。例如,從隱性位(邏輯1)跳變到顯性位(邏輯0)時(shí),這種轉(zhuǎn)換稱為“顯性邊沿”

工作原理:

◆幀起始位(SOF):

◆觸發(fā)硬同步:

示例:

假設(shè)有兩個(gè)CAN節(jié)點(diǎn),節(jié)點(diǎn)A(發(fā)送方)和節(jié)點(diǎn)B(接收方)(同一個(gè)CAN總線上通信)。

節(jié)點(diǎn)A準(zhǔn)備發(fā)送一幀數(shù)據(jù),節(jié)點(diǎn)B則負(fù)責(zé)接收該幀數(shù)據(jù)。

1.總線處于空閑狀態(tài)

在開始通信之前,CAN總線處于空閑狀態(tài),此時(shí)總線的電壓處于隱性位(邏輯1),節(jié)點(diǎn)A和節(jié)點(diǎn)B都在等待總線的變化。

1.節(jié)點(diǎn)A發(fā)送數(shù)據(jù)幀起始位(SOF)

節(jié)點(diǎn)A開始發(fā)送一個(gè)數(shù)據(jù)幀。CAN通信的規(guī)則規(guī)定,幀的開始由一個(gè)顯性位表示,稱為幀起始位(SOF)。因此,節(jié)點(diǎn)A從隱性位(邏輯1)切換到顯性位(邏輯0),即電壓變化使CAN H和CAN L線之間的差異增加。

1.節(jié)點(diǎn)B檢測到顯性邊沿并進(jìn)行硬同步

當(dāng)節(jié)點(diǎn)B在總線上檢測到這一從隱性位跳變到顯性位的電壓變化(顯性邊沿)時(shí),它會(huì)執(zhí)行“硬同步”操作:

◆節(jié)點(diǎn)B內(nèi)部的位時(shí)鐘會(huì)被立即重置,并開始一個(gè)新的計(jì)時(shí)周期

◆這個(gè)計(jì)時(shí)周期與節(jié)點(diǎn)A發(fā)送數(shù)據(jù)時(shí)的周期對齊,確保節(jié)點(diǎn)B能與節(jié)點(diǎn)A同步讀取接下來的數(shù)據(jù)位

重新同步(針對長幀傳輸)

在長幀傳輸時(shí),(時(shí)鐘漂移導(dǎo)致節(jié)點(diǎn)的時(shí)鐘和總線的時(shí)鐘出現(xiàn)偏差)確保節(jié)點(diǎn)的時(shí)鐘與總線保持同步

基本原理:

CAN節(jié)點(diǎn)的內(nèi)部時(shí)鐘(位時(shí)鐘)與總線上的信號(hào)發(fā)生了偏移,

重新同步通過檢測==普通數(shù)據(jù)位的跳變沿(從高電平到低電平,或從低電平到高電平)==來對齊時(shí)鐘

相位超前(時(shí)鐘快):

節(jié)點(diǎn)的時(shí)鐘比總線時(shí)鐘快,這意味著節(jié)點(diǎn)會(huì)比總線更早檢測到數(shù)據(jù)位的跳變沿

==通過延長相位緩沖段1(PBS1)的時(shí)間來使節(jié)點(diǎn)的時(shí)鐘與總線對齊==

相位滯后(時(shí)鐘慢):

節(jié)點(diǎn)的時(shí)鐘比總線時(shí)鐘慢,節(jié)點(diǎn)在總線跳變沿之后才檢測到信號(hào)

==通過減少相位緩沖段1(PBS1)的時(shí)間來趕上總線時(shí)鐘==

重新同步補(bǔ)償寬度(SJW)

調(diào)整時(shí)鐘的一種機(jī)制,用來修正節(jié)點(diǎn)時(shí)鐘與總線信號(hào)之間的偏差

最大SJW的限制

CAN控制器通常會(huì)為SJW設(shè)置一個(gè)最大值(單次同步操作中,時(shí)鐘的調(diào)整范圍不能超過設(shè)置的最大值)

偏差超過最大值(不能再一次完成),只能通過多次小幅度的調(diào)整完成

PBS1 和 PBS2 的調(diào)整

PBS1(相位緩沖段1):

PBS2(相位緩沖段2):

2.報(bào)文種類及結(jié)構(gòu)

SPI 通訊,片選、時(shí)鐘信號(hào)、數(shù)據(jù)輸入及數(shù)據(jù)輸出這 4 個(gè)信號(hào)均有單獨(dú)的信號(hào)線。

I2C 協(xié)議,包含有時(shí)鐘信號(hào)及數(shù)據(jù)信號(hào) 2 條信號(hào)線,異步串口包含接收與發(fā)送 2 條信號(hào)線。

但是CAN只有兩條差分信號(hào)線(只能表達(dá)一個(gè)信號(hào)),所以CAN協(xié)議==對數(shù)據(jù)、操作命令 (如讀/寫) 以及同步信號(hào)進(jìn)行打包,打包后的這些內(nèi)容稱為報(bào)文。

報(bào)文種類

傳輸起始標(biāo)簽+片選(識(shí)別)標(biāo)簽+控制標(biāo)簽+原始數(shù)據(jù)段+CRC校驗(yàn)標(biāo)簽+應(yīng)答標(biāo)簽+傳輸結(jié)束標(biāo)簽

把上述的內(nèi)容按照特定格式打包,可以用一個(gè)通道表達(dá)各種信號(hào),對應(yīng)設(shè)備按照格式去解讀就能還原數(shù)據(jù)——CAN的數(shù)據(jù)幀。

數(shù)據(jù)幀結(jié)構(gòu)

開始:(幀起始)

一個(gè)顯性位 (邏輯 0)

中間:

仲裁段,控制段,數(shù)據(jù)段,CRC 段,ACK 段

最后:(幀結(jié)束)

7 個(gè)連續(xù)的隱性位 (邏輯 1)

仲裁段

==多個(gè)報(bào)文發(fā)送時(shí),根據(jù)仲裁段決定具體的傳輸報(bào)文==

仲裁原理:

◆物理協(xié)議基礎(chǔ):總線上同時(shí)出現(xiàn)顯性電平和隱性電平,總線的狀態(tài)會(huì)被置為顯性電平

◆==若兩個(gè)節(jié)點(diǎn)同時(shí)競爭 CAN 總線的占有權(quán),當(dāng)它們發(fā)送報(bào)文時(shí),若首先出現(xiàn)隱性電平,則會(huì)失去對總線的占有權(quán),進(jìn)入接收狀態(tài)==

◆示例:

開始階段,兩個(gè)設(shè)備發(fā)送的電平一樣,所以它們一直繼續(xù)發(fā)送數(shù)據(jù)。

箭頭時(shí)序處,節(jié)點(diǎn)單元 1 發(fā)送的為隱性電平,節(jié)點(diǎn)單元 2 發(fā)送的為顯性電平,總線的物理協(xié)議基礎(chǔ)使它表達(dá)出顯示電平單元 2 競爭總線成功,該報(bào)文得以被繼續(xù)發(fā)送出去。

仲裁段 ID 數(shù)據(jù)位 (標(biāo)識(shí)符):

◆包括標(biāo)準(zhǔn)格式(11位)和擴(kuò)展格式(29位)

◆決定數(shù)據(jù)幀發(fā)送的優(yōu)先級(can協(xié)議的優(yōu)先級不由節(jié)點(diǎn)地址分配,由發(fā)送數(shù)據(jù)的表示ID進(jìn)行決定

◆決定節(jié)點(diǎn)是否接收此數(shù)據(jù)幀

仲裁段RTR,IDE,SRR 數(shù)據(jù)位

IDE 位(標(biāo)識(shí)符擴(kuò)展位):區(qū)分標(biāo)準(zhǔn)格式與擴(kuò)展格式,==顯性電平時(shí)表示標(biāo)準(zhǔn)格式,隱性電平時(shí)表示擴(kuò)展格式==

RTR 位(標(biāo)準(zhǔn)格式下的遠(yuǎn)程傳輸請求位):區(qū)分?jǐn)?shù)據(jù)幀和遙控幀的,==顯性電平時(shí)表示數(shù)據(jù)幀,隱性電平時(shí)表示遙控幀==

SRR 位(擴(kuò)展格式下的遠(yuǎn)程傳輸請求位):擴(kuò)展幀中的 SRR 位在數(shù)據(jù)幀為隱性位,RTR 在數(shù)據(jù)幀為顯性位,所以在兩個(gè) ID 相同的標(biāo)準(zhǔn)格式報(bào)文與擴(kuò)展格式報(bào)文中,標(biāo)準(zhǔn)格式的優(yōu)先級較高

控制段

指定報(bào)文的長度和擴(kuò)展標(biāo)識(shí)符的使用情況

IDE位(標(biāo)識(shí)符擴(kuò)展位):區(qū)分標(biāo)準(zhǔn)幀和擴(kuò)展幀,顯性電平時(shí)表示標(biāo)準(zhǔn)格式,隱性電平時(shí)表示擴(kuò)展格式

RTR位(遠(yuǎn)程請求位):區(qū)分?jǐn)?shù)據(jù)幀和遠(yuǎn)程幀,顯性電平時(shí),表示發(fā)送的數(shù)據(jù)幀,隱形電平時(shí)表示發(fā)送的遠(yuǎn)程幀(不包含數(shù)據(jù),通常用于請求其他節(jié)點(diǎn)發(fā)送數(shù)據(jù))

保留位(r0,r1):用于協(xié)議的擴(kuò)展,一般被設(shè)置為顯性電平

DLC 位(數(shù)據(jù)代碼長度):表示報(bào)文中實(shí)際傳輸?shù)臄?shù)據(jù)字節(jié)數(shù)(4位的字段),范圍是0-8,對應(yīng)數(shù)據(jù)的字節(jié)大?。A(yù)留4位的空間是為了保證協(xié)議的拓展性)

數(shù)據(jù)段

◆包含原始的數(shù)據(jù)信息(0-8個(gè)字節(jié))

◆執(zhí)行MSB原則:最高位優(yōu)先傳輸原則(MSB 一般以太網(wǎng)協(xié)議,CAN協(xié)議;反之LSB原則,一般文件,圖片編碼格式)

CRC段

確保數(shù)據(jù)完整性,包含CRC序列和CRC界定符

CRC 序列

◆大小為15個(gè)二進(jìn)制位

◆由發(fā)送節(jié)點(diǎn)基于其發(fā)送的報(bào)文內(nèi)容(仲裁段、控制段、數(shù)據(jù)段等)計(jì)算出來的校驗(yàn)碼

◆用一個(gè)預(yù)定義的CRC多項(xiàng)式對報(bào)文的比特流進(jìn)行計(jì)算

◆接收方收到報(bào)文后會(huì)進(jìn)行相同的CRC計(jì)算,將自己計(jì)算出的CRC值與接收到的CRC序列進(jìn)行比較

CRC界定符

長度固定位1位的隱性位,用來將CRC序列與后續(xù)的ACK段

ACK 段

確保數(shù)據(jù)幀被正確接收,包含ACK槽位和ACK界定符

ACK槽位

用于接收節(jié)點(diǎn)確認(rèn)報(bào)文是否正確接收,如果正確接收報(bào)文且無報(bào)錯(cuò),接收節(jié)點(diǎn)通過ACK槽位向發(fā)送節(jié)點(diǎn)發(fā)送確認(rèn)信號(hào)(將隱性位覆蓋為顯性位)

工作原理:

發(fā)送節(jié)點(diǎn)只負(fù)責(zé)在ACK槽位發(fā)送隱性位(1)

接收節(jié)點(diǎn)負(fù)責(zé)覆蓋ACK槽位中的隱性位

ACK界定符

長度固定為1位的隱性位,將ACK槽位與結(jié)束幀分隔


3.其他報(bào)文格式(格式類似)


STM32F407 CAN Controller解析

基本構(gòu)造
官方文檔:

https://www.ti.com/lit/an/sloa101b/sloa101b.pdf


基本支持:

支持bxCAN控制器(CAN 協(xié)議 2.0A 和 2.0B 標(biāo)準(zhǔn)‘最高速率1Mb/s

支持自動(dòng)地接收和發(fā)送 CAN 報(bào)文

支持使用標(biāo)準(zhǔn)ID 和擴(kuò)展 ID 的報(bào)文

支持使用軟件控制發(fā)送報(bào)文的優(yōu)先級

支持記錄發(fā)送的時(shí)間,2 個(gè) 3 級深度的接收 FIFO(兩個(gè) FIFO 隊(duì)列,每個(gè)隊(duì)列都可以存儲(chǔ)最多 3 個(gè)數(shù)據(jù)項(xiàng)),不支持DMA(直接內(nèi)存訪問,用于高效數(shù)據(jù)傳輸?shù)募夹g(shù),不需要 CPU 的干預(yù))


框架示意圖:

CAN 控制器1和2

CAN1 是主設(shè)備(控制存儲(chǔ)訪問控制器)

CAN2 無法直接訪問存儲(chǔ)區(qū)域(必須支持CAN1 外設(shè)時(shí)鐘)

組件解析
CAN 控制內(nèi)核

包括CAN 控制內(nèi)核(主要分析主控制寄存器 CAN_MCR,時(shí)序寄存器 CAN_BTR)

CAN_MCR( 主控制寄存器 )

主要控制CAN 的工作模式

寄存器控制圖

DBF 調(diào)試凍結(jié)功能

用于設(shè)置CAN 控制器在進(jìn)入調(diào)試模式時(shí)的通信功能,工作狀態(tài)和禁止收發(fā)狀態(tài)

==設(shè)定禁止收發(fā)狀態(tài)后在進(jìn)入調(diào)試狀態(tài)后將關(guān)閉通信功能==(不阻礙FIFI訪問,同時(shí)可以讀取已經(jīng)接受的消息)

TTCM 時(shí)間觸發(fā)模式

用于支持預(yù)定的時(shí)間點(diǎn)發(fā)送和接收消息(需要嚴(yán)格的時(shí)間同步和實(shí)時(shí)性要求的場景下使用

功能實(shí)現(xiàn):(內(nèi)部定時(shí)器產(chǎn)生計(jì)時(shí)器)

◆啟動(dòng)TCM模式,CAN的內(nèi)部計(jì)時(shí)器會(huì)隨著每個(gè)CAN 位時(shí)間進(jìn)行累加

◆接收或者發(fā)送幀起始位被采樣,控制器會(huì)生成定時(shí)器

◆生成的定時(shí)器保存在CAN_RDT_xR(接收定時(shí)器),CAN_TDTxR(發(fā)送定時(shí)器),用來表示消息發(fā)送和接受的時(shí)間

ABOM 自動(dòng)離線管理

用于處理 CAN 節(jié)點(diǎn)由于錯(cuò)誤累積過多而進(jìn)入離線狀態(tài)的情況

協(xié)議基礎(chǔ):

CAN 節(jié)點(diǎn)在離線上檢測到發(fā)送或接收錯(cuò)誤累計(jì)超過一定的閾值時(shí),會(huì)自動(dòng)進(jìn)入Bus-Off(離線)狀態(tài),在此狀態(tài)下,節(jié)點(diǎn)將無法接收或發(fā)送任何CAN報(bào)文


實(shí)現(xiàn)功能:

◆錯(cuò)誤監(jiān)測與離線狀態(tài)

◆自動(dòng)恢復(fù)機(jī)制:

◆手動(dòng)恢復(fù)機(jī)制

當(dāng)未啟動(dòng)ABOM功能時(shí),進(jìn)入離線狀態(tài)后,需要手動(dòng)恢復(fù)(例如:外部程序發(fā)送重置命令,重啟CAN 節(jié)點(diǎn))。

AWUM 自動(dòng)喚醒模式

在CAN控制器進(jìn)入低功耗的睡眠模式后,自動(dòng)偵聽睡眠活動(dòng),并在有通信時(shí)發(fā)生自動(dòng)喚醒設(shè)備。

實(shí)現(xiàn)功能:

◆睡眠模式:沒有通信需求時(shí)可以進(jìn)入睡眠模式,以降低功耗

◆自動(dòng)喚醒:當(dāng) CAN 喚醒上出現(xiàn)數(shù)據(jù)傳輸時(shí),AWUM會(huì)喚醒自動(dòng)控制器,使其從睡眠狀態(tài)中恢復(fù)到正常工作狀態(tài),并開始處理通信

NART自動(dòng)重傳功能

◆當(dāng)NART位被設(shè)置為0時(shí),CAN 控制器會(huì)==在發(fā)送失敗時(shí)自動(dòng)重傳該報(bào)文,直至發(fā)送成功狀態(tài)

◆當(dāng)NART位被設(shè)置為 1時(shí),自動(dòng)重傳功能被禁用,無論發(fā)送結(jié)果如何,每個(gè)消息都只會(huì)被發(fā)送一次

RFLM 接收 FIFO 鎖定模式

用于鎖定接收 FIFO

◆當(dāng)FIFO 鎖定時(shí),接收到的FIFO溢出時(shí),會(huì)直接丟棄下一個(gè)報(bào)文,將當(dāng)前的的報(bào)文保留在FIFO中

◆當(dāng)FIFO沒有鎖定時(shí),下一個(gè)接受的報(bào)文會(huì)覆蓋原報(bào)文

TXFP 報(bào)文發(fā)送優(yōu)先級的判定法

TXFP控制了當(dāng)CAN發(fā)送郵箱中有多個(gè)待發(fā)送報(bào)文時(shí),優(yōu)先發(fā)送哪一條消息

◆當(dāng)TXFP設(shè)置時(shí),發(fā)送報(bào)文的數(shù)據(jù)順序是根據(jù)進(jìn)入順序(即先進(jìn)先出原則,“FIFO原則”)

◆當(dāng)TXFP未被設(shè)置時(shí),根據(jù)報(bào)文ID的優(yōu)先級來發(fā)送消息,ID數(shù)值越低,優(yōu)先級加權(quán)

CAN_BTR(位時(shí)序寄存器)及波特率

配置測試模式、波特率以及各種位內(nèi)的段參數(shù)


CAN_BTR模式

靜默和環(huán)回模式用于調(diào)試和測試CAN通信(通過CAN_MCR注冊中的位30和位31(看上圖)進(jìn)行啟動(dòng))

SILM 靜默模式(調(diào)試)

CAN 可以接收數(shù)據(jù),但是不會(huì)主動(dòng)發(fā)送數(shù)據(jù),進(jìn)行干擾(檢測到錯(cuò)誤,也不會(huì)發(fā)送錯(cuò)誤幀)

主要用于睡眠監(jiān)聽,不影響睡眠上的正常通信

位31

0:正常工作

1:靜默模式


LBKM 回環(huán)模式(調(diào)試)

CAN 將自己發(fā)送的報(bào)文直接傳入到自己的寄存器上,用于自我檢測(節(jié)點(diǎn)自我檢測報(bào)文能否正?;貍?,而不接入CAN 網(wǎng)絡(luò))。

位30

0:禁止回環(huán)模式

1:支持回環(huán)模式


組合模式

如果同時(shí)啟用靜默模式(SILM = 1)和環(huán)回模式(LBKM = 1),CAN控制器將進(jìn)入靜默環(huán)回模式。

CAN控制器不會(huì)與實(shí)際行走通信,但可以通過內(nèi)部自我實(shí)現(xiàn)環(huán)回實(shí)現(xiàn)自動(dòng)化自收。


STM32 外設(shè)位時(shí)序:

同步段 SYNC_SEG + 位段 BS1 + 位段 BS2

(采樣點(diǎn)位于BS1 及 BS2 段交界)

◆SYNC_SEG 段固定長度為 1Tq

◆BS1,BS2的長度在CAN_BTR中設(shè)置(支持在重新同步期間增長或縮短)

BS1段類似CAN 標(biāo)準(zhǔn)協(xié)議中PTS段+PBS段

BS2段類似CAN 標(biāo)準(zhǔn)協(xié)議中的PBS2 段

波特率配置

配置位時(shí)序寄存器 CAN_BTR的TS1[3:0] ,TS2[2:0],設(shè)定 BS1 及 BS2 段的長度,確定每個(gè)CAN 數(shù)據(jù)位的時(shí)間:

BS1 段時(shí)間:TS1=Tq x (TS1[3:0] + 1)

BS2 段時(shí)間:TS2= Tq x (TS2[2:0] + 1)
一個(gè)數(shù)據(jù)位的時(shí)間:T1bit =1Tq+TS1+TS2=1+ (TS1[3:0] + 1)+ (TS2[2:0] + 1)= N Tq

計(jì)算公式

Fpclk一般為42MHz:

CAN 發(fā)送郵箱

CAN 有三個(gè)發(fā)送郵箱(可以支持最多3和待發(fā)送的報(bào)文)

郵箱構(gòu)成

CAN_TIxR(標(biāo)識(shí)符寄存器) + CAN_TDTxR(數(shù)據(jù)長度控制寄存器) + CAN_TDLxR,CAN_TDHxR(2個(gè)數(shù)據(jù)寄存器)

詳解標(biāo)識(shí)符

標(biāo)準(zhǔn)標(biāo)識(shí)符(11 位)和擴(kuò)展標(biāo)識(shí)符(29 位)

發(fā)送報(bào)文的時(shí)候需要根據(jù)標(biāo)識(shí)符類型將數(shù)據(jù)寫入標(biāo)識(shí)符寄存器CAN_TIxR,進(jìn)行發(fā)送。

標(biāo)準(zhǔn)標(biāo)識(shí)符(11位)

STDID[10:0]寄存器位存儲(chǔ)標(biāo)準(zhǔn)標(biāo)識(shí)符的 11 位值

報(bào)文中的 ID 就是STDID中的內(nèi)容,所有位都可以直接用來做報(bào)文優(yōu)先級判斷和匹配

擴(kuò)展標(biāo)識(shí)符(29 位)

STDID[10:0]EXTID[17:0]共同存儲(chǔ)擴(kuò)展標(biāo)識(shí)符

◆高 11 位存儲(chǔ)在STDID[10:0](對應(yīng)擴(kuò)展標(biāo)識(shí)符的[18:28]位)

◆低 18 位存儲(chǔ)在EXTID[17:0](對應(yīng)擴(kuò)展標(biāo)識(shí)符的[0:17]位)

29 位的標(biāo)識(shí)符共同決定了報(bào)文的優(yōu)先級和目標(biāo)地址

發(fā)送請求

CAN_TIxR 寄存器中的TMIDxR_TXRQ(為1時(shí),開始傳輸數(shù)據(jù))用于發(fā)送請求:

1.判斷標(biāo)識(shí)符(擴(kuò)展還是標(biāo)準(zhǔn))

2.將標(biāo)識(shí)符寫入標(biāo)準(zhǔn)STDID[10:0]&擴(kuò)展標(biāo)識(shí)符EXTID[17:0]

3.配置其他報(bào)文段如數(shù)據(jù)字段

4.TMIDxR_TXRQ設(shè)置為1,請求發(fā)送報(bào)文

CAN 接收 FIFO

接收 FIFO 是專門用于存儲(chǔ)接收到的 CAN 報(bào)文的

每個(gè) CAN 外設(shè)有 2 個(gè)接收 FIFO(FIFO0 和 FIFO1),每個(gè) FIFO 包含 3 個(gè)郵箱→一個(gè)CAN 接口最多可以緩存6個(gè)接收到的報(bào)文


工作機(jī)制

◆報(bào)文存儲(chǔ):接收到報(bào)文后存儲(chǔ)在FIFO中,計(jì)數(shù)器自增

◆讀取報(bào)文:當(dāng)cpu對報(bào)文進(jìn)行讀取時(shí),計(jì)數(shù)器自減

◆狀態(tài)監(jiān)控:通過狀態(tài)寄存器可以獲取 FIFO 的當(dāng)前狀態(tài)(報(bào)文數(shù)量,溢出報(bào)錯(cuò))

◆鎖定模式(RFLM)

  • 鎖定模式:FIFO 溢出,新的報(bào)文將被丟棄

  • 非鎖定模式:FIFO 溢出,新的報(bào)文會(huì)覆蓋 FIFO 中最舊的報(bào)文

驗(yàn)收篩選器

==用于篩選接收到的 CAN 報(bào)文==

CAN 總線是廣播式的,所有節(jié)點(diǎn)都會(huì)接收到所有報(bào)文,但通過配置篩選器可以選擇性接收特定報(bào)文

結(jié)構(gòu)與配置

CAN1 和 CAN2 共用 28 個(gè)篩選器組

每個(gè)篩選器組有 2 個(gè)寄存器

(通過配置不同的工作模式和掩碼來過濾不同的報(bào)文)

篩選器 ID 長度

過濾的報(bào)文 ID 長度來確定工作在兩種不同的長度模式:

31位模式

◆檢查標(biāo)準(zhǔn)標(biāo)識(shí)符(STDID)的 11 位(STDID[10:0])

◆擴(kuò)展標(biāo)識(shí)符(EXTID)**的 18 位(EXTID[17:0])

IDE(標(biāo)識(shí)符擴(kuò)展位)

RTR(遠(yuǎn)程傳輸請求位)

16位模式

◆檢查標(biāo)準(zhǔn)標(biāo)識(shí)符(STDID)的 11 位(STDID[10:0])

RTR

IDE

◆擴(kuò)展標(biāo)識(shí)符的 3 位(EXTID[17:15])

配置CAN_FS1R(篩選尺度寄存器)中的FSCx位,選擇篩選器使用 31 位模式和 16 位模式。

工作模式

兩種過濾模式:

1.標(biāo)識(shí)符列表模式:(類似白名單)

2.掩碼模式:(類似關(guān)鍵字匹配)

配置CAN_FM1R(篩選模式寄存器)中的FBMx位來選擇篩選器的工作模式(列表模式或掩碼模式)

四種狀態(tài)組合

1.31 位掩碼模式

2.31 位標(biāo)識(shí)符列表模式

3.16 位掩碼模式

4.16 位標(biāo)識(shí)符列表模式

看雪ID:gir@ffe

https://bbs.kanxue.com/user-home-989049.htm

*本文為看雪論壇優(yōu)秀文章,由 gir@ffe 原創(chuàng),轉(zhuǎn)載請注明來自看雪社區(qū)

特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相關(guān)推薦
熱點(diǎn)推薦
巴防長直接宣戰(zhàn),巴阿全面開打,塔利班全線潰退

巴防長直接宣戰(zhàn),巴阿全面開打,塔利班全線潰退

老馬拉車莫少裝
2026-02-27 23:59:47
伊朗收到好消息,中國緊急出售超音速導(dǎo)彈?美航母麻煩大了

伊朗收到好消息,中國緊急出售超音速導(dǎo)彈?美航母麻煩大了

流史歲月
2026-02-26 17:05:03
2.28 以色列和美國對伊朗的戰(zhàn)爭歷程:

2.28 以色列和美國對伊朗的戰(zhàn)爭歷程:

一種觀點(diǎn)
2026-02-28 19:07:02
前所未有!中國又沒求他,特朗普卻對華做出一承諾,盟友們要懵了

前所未有!中國又沒求他,特朗普卻對華做出一承諾,盟友們要懵了

知鑒明史
2026-02-27 17:51:51
醫(yī)生勸告:一旦吃上降壓藥,這4種食物必須戒掉,再吃有中風(fēng)風(fēng)險(xiǎn)

醫(yī)生勸告:一旦吃上降壓藥,這4種食物必須戒掉,再吃有中風(fēng)風(fēng)險(xiǎn)

冷眼看世界728
2026-02-28 09:53:17
重磅!蘋果將采用國產(chǎn)存儲(chǔ)芯片!

重磅!蘋果將采用國產(chǎn)存儲(chǔ)芯片!

中國半導(dǎo)體論壇
2026-02-27 21:00:12
這就是赤裸裸的現(xiàn)實(shí)!國家電網(wǎng)的員工估計(jì)很難熬到退休了!

這就是赤裸裸的現(xiàn)實(shí)!國家電網(wǎng)的員工估計(jì)很難熬到退休了!

小虎新車推薦員
2026-02-24 20:16:44
澳大利亞驚現(xiàn)封閉亂倫家族:4代人近親繁衍38名成員全是亂倫產(chǎn)物

澳大利亞驚現(xiàn)封閉亂倫家族:4代人近親繁衍38名成員全是亂倫產(chǎn)物

第7情感
2026-02-23 20:45:16
內(nèi)馬爾:我跟維尼修斯說,他進(jìn)球再做和首回合同樣的慶祝動(dòng)作

內(nèi)馬爾:我跟維尼修斯說,他進(jìn)球再做和首回合同樣的慶祝動(dòng)作

懂球帝
2026-02-28 19:27:26
人社部:2026年養(yǎng)老金或上調(diào),企退人員漲幅幾何?

人社部:2026年養(yǎng)老金或上調(diào),企退人員漲幅幾何?

二大爺觀世界
2026-02-28 17:44:54
WTT新加坡大滿貫:王曼昱11-0勝張本美和晉級四強(qiáng)

WTT新加坡大滿貫:王曼昱11-0勝張本美和晉級四強(qiáng)

負(fù)面黑洞
2026-02-28 15:14:17
再年輕也沒用!22歲健身博主胡洪盛去世,死因曝光,曾減重90斤

再年輕也沒用!22歲健身博主胡洪盛去世,死因曝光,曾減重90斤

青梅侃史啊
2026-02-27 23:44:02
以為是假新聞其實(shí)是真新聞,從袁立到王星,件件離譜又驚人

以為是假新聞其實(shí)是真新聞,從袁立到王星,件件離譜又驚人

上官晚安
2026-01-06 08:08:35
古天樂給TVB老演員發(fā)紅包,數(shù)百位老演員出席,劉江獲演藝貢獻(xiàn)獎(jiǎng)

古天樂給TVB老演員發(fā)紅包,數(shù)百位老演員出席,劉江獲演藝貢獻(xiàn)獎(jiǎng)

手工制作阿殲
2026-02-26 21:26:38
遲遲等不到反制被北京撤回,魯比奧通知:中國的優(yōu)惠待遇或被取消

遲遲等不到反制被北京撤回,魯比奧通知:中國的優(yōu)惠待遇或被取消

老夳古裝影視解說
2026-02-28 16:39:22
外資撤不走,中國攔不住,如今的中國廣東,制造早已不是代工

外資撤不走,中國攔不住,如今的中國廣東,制造早已不是代工

甜檸聊史
2026-01-23 14:01:57
上海小學(xué)班級考上985的學(xué)生幾乎為零,教育現(xiàn)狀令人心痛

上海小學(xué)班級考上985的學(xué)生幾乎為零,教育現(xiàn)狀令人心痛

手工制作阿愛
2026-02-28 16:00:10
特朗普贏了,12架戰(zhàn)機(jī)剛剛落地,伊朗先舉了白旗:禁止發(fā)展核武器

特朗普贏了,12架戰(zhàn)機(jī)剛剛落地,伊朗先舉了白旗:禁止發(fā)展核武器

鐵錘簡科
2026-02-27 17:30:48
10天內(nèi)不投就打,特朗普下最后通牒,關(guān)鍵時(shí)刻,解放軍就在附近

10天內(nèi)不投就打,特朗普下最后通牒,關(guān)鍵時(shí)刻,解放軍就在附近

泄氣得愛
2026-02-28 18:36:24
特朗普透露美伊將繼續(xù)談判 并 警告“有時(shí)候不得不打”

特朗普透露美伊將繼續(xù)談判 并 警告“有時(shí)候不得不打”

每日經(jīng)濟(jì)新聞
2026-02-28 07:01:17
2026-02-28 20:07:00
新能源自動(dòng)駕駛 incentive-icons
新能源自動(dòng)駕駛
專注于半導(dǎo)體行業(yè)資訊
950文章數(shù) 346關(guān)注度
往期回顧 全部

頭條要聞

疑將燃料當(dāng)白酒喝下兩男子參加婚宴后中毒仍在ICU搶救

頭條要聞

疑將燃料當(dāng)白酒喝下兩男子參加婚宴后中毒仍在ICU搶救

體育要聞

球隊(duì)主力全報(bào)銷?頂風(fēng)擺爛演都不演了

娛樂要聞

疑似王一博被爆私密聊天記錄

財(cái)經(jīng)要聞

沈明高提共富建議 百姓持科技股國家兜底

科技要聞

狂攬1100億美元!OpenAI再創(chuàng)融資神話

汽車要聞

嵐圖泰山黑武士版3月上市 搭載華為四激光智駕方案

態(tài)度原創(chuàng)

數(shù)碼
健康
親子
家居
教育

數(shù)碼要聞

“冠軍嚴(yán)選”:Pulsar派世預(yù)告第二代《CS》選手ZywOo聯(lián)名鼠標(biāo)

轉(zhuǎn)頭就暈的耳石癥,能開車上班嗎?

親子要聞

波速球半圓平衡球

家居要聞

素色肌理 品意式格調(diào)

教育要聞

實(shí)操 | 尋找46個(gè)說話晚/說不清/語言發(fā)育遲緩的兒童,3-4月來這10城接受免費(fèi)1v1言語實(shí)操

無障礙瀏覽 進(jìn)入關(guān)懷版