STM32 CAN 配置 收發結構定義 留存

2021-07-05 11:37:53 字數 2599 閱讀 9301

分布式系統專案需要,這次弄個can匯流排來布局,僅見can的冰山一角。

本次使用擴充套件幀模式。

stm32 對can的定義–庫 can結構體定義 說明:

typedef struct  

can_typedef;

can訊息傳送:

/* can tx message structure definition */  

typedef struct

cantxmsg;

can訊息接收:

/* can rx message structure definition */  

typedef struct

canrxmsg;

關於庫函式相關結構體的定義,詳情對照手冊瞅瞅,,,不多說,也說不清。

濾波器設定:基於stm32的can匯流排徹底研究

對擴充套件資料幀過濾:

can_filterinitstructure.can_filternumber = 0;

can_filterinitstructure.can_filtermode = can_filtermode_idmask;

can_filterinitstructure.can_filterscale = can_filterscale_32bit;

can_filterinitstructure.can_filteridhigh = (((u32)can_id<<3)&0xffff0000)>>16;

can_filterinitstructure.can_filteridlow= (((u32)can_id<<3)|can_id_ext|can_rtr_data)&0xffff;

can_filterinitstructure.can_filtermaskidhigh = ~((u32)can_id <<16); –

can_filterinitstructure.can_filtermaskidlow = ~((u32)can_id );

對標準資料幀過濾:—沒試過,不做說明

can_filterinitstructure.can_filteridhigh= (((u32)can_id0<<21)&0xffff0000)>>16;

can_filterinitstructure.can_filteridlow=(((u32)can_id0<<21)|can_id_std|can_rtr_data)&0xffff;

can_filterinitstructure.can_filtermaskidhigh = 0xffff;

can_filterinitstructure.can_filtermaskidlow = 0xffff;

先上我們的協議說明:

這裡只關心紅線標註的….

不一一說明啦,上結構

/*定製協議版 擴充套件幀摘過來的幀頭包 */  

typedef struct extidpackextidpackage,*pextidpackage;

extern extidpackage parsing;

extern pextidpackage pparsing;

typedef struct

mycanrxmsg;

extern mycanrxmsg mycanrxmsg;

這樣子定義,使用方便很多。

使用eg:

switch(mycanrxmsg.extid.commond)  

//資料不合規矩,pass

mycanrxmsg.dlc=sizeof(getversion)/sizeof(u8);

memcpy(&mycanrxmsg.data[0],&getversion[0],mycanrxmsg.dlc);

memcpy(&txmessage.extid,&mycanrxmsg,sizeof(mycanrxmsg));//資料拷貝

can_transmit(&txmessage);

frame_reset();

break;

} 。。。。

以上,有點亂,,,看著煩躁,趕緊切換頁面————別砸電腦@

本打算說說濾波器這塊的設定來著–詳細的

結果翻手冊也沒太弄明白 32-bit identifier 32-bit mask 為啥子要《移動三位,如下。

/* 

* 函式名:can_filter_config

* 描述 :can的過濾器 配置

* 輸入 :無

* 輸出 : 無

* 呼叫 :內部呼叫

*/static

void can_filter_config(void)

這裡

等待 神 前來說明,叩謝…..

留存…………………

STM32 CAN通訊問題

檢舉 2012 07 04 20 59 breath123 分類 工程技術科學 瀏覽974次 can通訊測試中 使能報文標示符過濾器按照標示符的內容進行比對過濾,擴充套件id不是如下的就拋棄掉,是的話,會存入fifo0。can filterinitstructure.can filteridhigh...

stm32 can通訊傳送解釋

uint8 t can transmit can typedef canx,cantxmsg txmessage else if canx tsr can tsr tme1 can tsr tme1 else if canx tsr can tsr tme2 can tsr tme2 else if...

STM32 CAN通訊硬體設計

隔離方案就不說了,之前的usb轉485工具的開發在這塊已經有些基礎。其實板上非隔離can介面設計還有一些額外的注意點。回到最基礎的知識依然是cmos ttl 推挽 開漏的問題。正點原子開發板,can電路最為簡易,基本無可用性 看看乙個常用電路 非隔離 tx rx直連stm32引腳 ft 覺得還是要使...