點擊上方藍字談思汽車
獲取更多汽車網絡安全資訊

1.CAN控制器
2.CAN收發器:CAN收發器的作用是負責邏輯電平和信號電平之間的轉換。
即從CAN控制芯片輸出邏輯電平到CAN收發器,然后經過CAN收發器內部轉換將邏輯電平轉換為差分信號輸出到CAN總線上,CAN總線上的節點都可以決定自己是否需要總線上的數據。

二、CAN的配置
void CAN1_Config_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
CAN_InitTypeDef CAN_InitStructure;
CAN_FilterInitTypeDef CAN_FilterInitStructure;
NVIC_InitTypeDef NVIC_InitStructure;


三、CAN波特率計算公式

CAN波特率=系統時鐘/分頻數/(1*tq+tBS1+tBS2)
其中
tBS1=tq*(TS1[3:0]+1)
tBS2=tq*(TS2[2:0]+1)
tq=(BRP[9:0]+1)*tPCLK
這里tq表示1個時間單元
tPCLK=APB時鐘的時間周期
BRP[9:0],TS1[3:0]和TS2[2:0]在CAN_BTR寄存器中定義
總體配置保持
tBS1>=tBS2,tBS2>=1個CAN時鐘周期,tBS2>=2tSJW
1、發送過程:CAN控制器將CPU傳來的信號轉換為邏輯電平(即邏輯0-顯性電平或者邏輯1-隱性電平)。CAN發射器接收邏輯電平之后,再將其轉換為差分電平輸出到CAN總線上。

2、接收過程:CAN接收器將CAN_H 和 CAN_L 線上傳來的差分電平轉換為邏輯電平輸出到CAN控制器,CAN控制器再把該邏輯電平轉化為相應的信號發送到CPU上。

程序選擇1個空置的郵箱(TME=1)->設置標識符(ID),數據長度和發送數據->設置CAN_TIxR的TXRQ位為1,請求發送->郵箱掛號(等待成為最高優先級)->預定發送(等待總線空閑)->發送->郵箱空置

FIFO空->收到有效報文->掛號_1(存入FIFO的一個郵箱,這個由硬件控制,我們不需要理會)->收到有效報文->掛號_2->收到有效報文->掛號_3->收到有效報文->溢出。
CAN收到的有效報文,存儲在3級郵箱深度的FIFO中。FIFO接收到的報文數,我們可以通過查詢CAN_RFxR的FMP寄存器來得到,只要FMP不為0,我們就可以從FIFO讀出收到的報文。

來源:電控技術大師


碼上報名
2023第六屆無人駕駛及智能駕艙中國峰會,
5月11-12日,上海


碼上報名
AutoSec 7周年年會暨中國汽車網絡安全與數據安全合規峰會,5月11-12日,上海


碼上報名
第四屆中國國際汽車以太網峰會,6月8-9日,上海

