一、CAN相關(guān)芯片
1.CAN控制器
2.CAN收發(fā)器:CAN收發(fā)器的作用是負(fù)責(zé)邏輯電平和信號(hào)電平之間的轉(zhuǎn)換。
即從CAN控制芯片輸出邏輯電平到CAN收發(fā)器,然后經(jīng)過CAN收發(fā)器內(nèi)部轉(zhuǎn)換將邏輯電平轉(zhuǎn)換為差分信號(hào)輸出到CAN總線上,CAN總線上的節(jié)點(diǎn)都可以決定自己是否需要總線上的數(shù)據(jù)。
二、CAN的配置
void CAN1_Config_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
CAN_InitTypeDef CAN_InitStructure;
CAN_FilterInitTypeDef CAN_FilterInitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
三、CAN波特率計(jì)算公式
CAN波特率=系統(tǒng)時(shí)鐘/分頻數(shù)/(1*tq+tBS1+tBS2)
其中
tBS1=tq*(TS1[3:0]+1)
tBS2=tq*(TS2[2:0]+1)
tq=(BRP[9:0]+1)*tPCLK
這里tq表示1個(gè)時(shí)間單元
tPCLK=APB時(shí)鐘的時(shí)間周期
BRP[9:0],TS1[3:0]和TS2[2:0]在CAN_BTR寄存器中定義
總體配置保持
tBS1>=tBS2,tBS2>=1個(gè)CAN時(shí)鐘周期,tBS2>=2tSJW
四、CAN的發(fā)送與CAN的接收
1、發(fā)送過程:CAN控制器將CPU傳來的信號(hào)轉(zhuǎn)換為邏輯電平(即邏輯0-顯性電平或者邏輯1-隱性電平)。CAN發(fā)射器接收邏輯電平之后,再將其轉(zhuǎn)換為差分電平輸出到CAN總線上。
2、接收過程:CAN接收器將CAN_H 和 CAN_L 線上傳來的差分電平轉(zhuǎn)換為邏輯電平輸出到CAN控制器,CAN控制器再把該邏輯電平轉(zhuǎn)化為相應(yīng)的信號(hào)發(fā)送到CPU上。
五、STM32 CAN控制器簡介-發(fā)送流程和接收流程
程序選擇1個(gè)空置的郵箱(TME=1)->設(shè)置標(biāo)識(shí)符(ID),數(shù)據(jù)長度和發(fā)送數(shù)據(jù)->設(shè)置CAN_TIxR的TXRQ位為1,請求發(fā)送->郵箱掛號(hào)(等待成為最高優(yōu)先級(jí))->預(yù)定發(fā)送(等待總線空閑)->發(fā)送->郵箱空置
FIFO空->收到有效報(bào)文->掛號(hào)_1(存入FIFO的一個(gè)郵箱,這個(gè)由硬件控制,我們不需要理會(huì))->收到有效報(bào)文->掛號(hào)_2->收到有效報(bào)文->掛號(hào)_3->收到有效報(bào)文->溢出。
CAN收到的有效報(bào)文,存儲(chǔ)在3級(jí)郵箱深度的FIFO中。FIFO接收到的報(bào)文數(shù),我們可以通過查詢CAN_RFxR的FMP寄存器來得到,只要FMP不為0,我們就可以從FIFO讀出收到的報(bào)文。
審核編輯:湯梓紅
-
收發(fā)器
+關(guān)注
關(guān)注
10文章
3671瀏覽量
107879 -
控制器
+關(guān)注
關(guān)注
114文章
17088瀏覽量
184041 -
CAN
+關(guān)注
關(guān)注
57文章
2917瀏覽量
467575 -
通信
+關(guān)注
關(guān)注
18文章
6205瀏覽量
137748 -
總線
+關(guān)注
關(guān)注
10文章
2959瀏覽量
89697
原文標(biāo)題:CAN總線通信
文章出處:【微信號(hào):智能汽車電子與軟件,微信公眾號(hào):智能汽車電子與軟件】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評(píng)論請先 登錄
詳解汽車CAN總線
CAN總線詳解 精選資料分享
CAN通信總線詳解
CAN總線通信原理分析

汽車can總線工作原理及測量方法詳解

CAN總線通信報(bào)文驗(yàn)收濾波、位定時(shí)與同步詳解

為什么要用光纖CAN轉(zhuǎn)換器_基于光纖轉(zhuǎn)CAN模塊的CAN總線通信改造
詳解CAN總線通信優(yōu)先級(jí)機(jī)制

評(píng)論