stm32 HAL庫之CAN總線

本文的目的是為了能夠?qū)崿F(xiàn)功能涡匀,故寫的時候比較簡略讯检。

參考資料:https://blog.csdn.net/u012308586/article/details/81001102

? ? ? ? ? ? ? ? ?正點原子開發(fā)手冊

目標(biāo):

通過can總線州疾,用stm32的CAN模塊實現(xiàn)對電機驅(qū)動發(fā)送指令,從而實現(xiàn)對電機的控制岭洲。

硬件設(shè)計:

?

①收發(fā)芯片的功能:把單片機送來的信號通過收發(fā)芯片的轉(zhuǎn)換從而實現(xiàn)信號的具體傳輸。

②120歐終端電阻:主要是為了防止信號的干擾帖池,一般來說,終端設(shè)備的CAN_H和CAN_L也要加上120歐終端電阻吭净。

軟件設(shè)計基本知識:

其實各種通信方式的本質(zhì)都是一樣的睡汹,均分為兩個部分;①波特率:以何種速度來通信②具體準(zhǔn)則:發(fā)送端和接收端對發(fā)送來的數(shù)據(jù)的解釋寂殉。

特色:CAN工作于4種模式囚巴;類似于手機的飛行模式,正常模式友扰,待機狀態(tài)彤叉,是一種感覺。

? ? ? ? ? ?CAN常用的工作模式是(1)回環(huán)模式:也就是自己發(fā)焕檬,自己收。(2)正常工作模式澳泵,也就是用于正常的接收实愚,發(fā)送。

一.公共部分(發(fā)送端和接收端都會用到的部分)

①波特率:

通過配置掛在APB1總線上的CAN1模塊的幾個參數(shù)設(shè)置從而得到通信速率兔辅。也就是通過設(shè)置掛在APB1外設(shè)總線上的速率?

42Mhz腊敲。?

?

然后通過波特率計算公式(波特率= APB1外設(shè)總線速率? * (1/(相位緩沖段 1+相位緩沖段 2+重新同步跳躍段)*(預(yù)分頻系數(shù))))來設(shè)置波特率

?

這個參數(shù)代表波特率=42M/(2*(14+6+1))=1M bps

注意:①相位緩沖段1設(shè)置范圍:1-16 ②相位緩沖段2設(shè)置范圍:1-8? ③重新同步跳躍段一般設(shè)置為1

二.發(fā)送端:

(1)設(shè)置的數(shù)據(jù)格式

CAN協(xié)議規(guī)定發(fā)送的數(shù)據(jù)有幾種:數(shù)據(jù)幀,遙控幀维苔,錯誤幀碰辅,過載幀,間隔幀介时。我們?nèi)∑湟环N:數(shù)據(jù)幀來舉例没宾,故名思意,這種幀就是用來發(fā)送數(shù)據(jù)的沸柔,也是應(yīng)用最廣泛的一種數(shù)據(jù)幀循衰。

幀的格式如下圖

?

?

對于我們來說我們只需要關(guān)注以下幾點:①仲裁段(ID)? ②數(shù)據(jù)段的長度(DLC)③幀的類型

①ID;這是CAN總線的特色,它有兩個含義

(1)代表每個單元的地址

(2)代表優(yōu)先級褐澎,CAN總線可以用于多主多從結(jié)構(gòu)会钝,簡而言之,在一個系統(tǒng)里面工三,每個單元都可以收發(fā)迁酸,那么當(dāng)有多個單元想要占用總線的時候先鱼,那么我給誰用呢?于是這個時候多個單元都來到總線上進(jìn)行仲裁奸鬓,優(yōu)先級高的占據(jù)總線使用權(quán)焙畔。

②數(shù)據(jù)長度:就是明確的指出我發(fā)的這一幀數(shù)據(jù)里面有幾個數(shù)據(jù)(一幀最多發(fā)送8字節(jié)的數(shù)據(jù))

③幀的類型:有標(biāo)準(zhǔn)幀(11位)和擴展幀(29位)兩種,這是為整個網(wǎng)絡(luò)考慮全蝶,當(dāng)整個網(wǎng)絡(luò)節(jié)點個數(shù)多闹蒜,則用擴展幀。小型網(wǎng)絡(luò)標(biāo)準(zhǔn)幀足夠抑淫。

(2)發(fā)送郵箱

用于存放要發(fā)送的數(shù)據(jù)绷落。

程序選擇 1 個空置的郵箱(TME=1)-->設(shè)置標(biāo)識符(ID)數(shù)據(jù)長度(DLC)和發(fā)送數(shù)據(jù)(數(shù)據(jù)幀)-->設(shè)置 CAN_TIxR 的 TXRQ 位為 1,請求發(fā)送-->郵箱掛號(等待成為最高優(yōu)先級)-->預(yù)定發(fā)送(等待總線空閑)-->發(fā)送-->郵箱空置始苇。

(3)發(fā)送仲裁

問題來源:用CAN發(fā)送多個數(shù)據(jù)的時候砌烁,出現(xiàn)了發(fā)送字節(jié)亂序的問題。

參考博客:https://blog.csdn.net/zhangxufei/article/details/52334278

如果三個郵箱中同時存在多個待發(fā)送的報文時催式,此時存在一個問題函喉,即先送哪個郵箱中的報文好呢?此時荣月,存在一個發(fā)送優(yōu)先級的問題管呵。此時,非空發(fā)送郵箱進(jìn)入發(fā)送仲裁哺窄,發(fā)送仲裁有兩種策略:ID模式和FIFO模式捐下。

ID模式:當(dāng)有超過1個發(fā)送郵箱在掛號時,發(fā)送順序由郵箱中報文的標(biāo)識符決定萌业。根據(jù)CAN協(xié)議坷襟,標(biāo)識符數(shù)值最低的報文具有最高的優(yōu)先級。如果標(biāo)識符的值相等生年,那么郵箱號小的報文先被發(fā)送婴程。此模式通過對CAN主控寄存器CAN_MCR的TXFP位清0來設(shè)置。

FIFO模式:通過對CAN_MCR寄存器(CAN主控寄存器)的TXFP位置’1’抱婉,可以把發(fā)送郵箱配置為發(fā)送FIFO档叔。在該模式下,發(fā)送的優(yōu)先級由發(fā)送請求次序決定蒸绩。該模式對分段發(fā)送很有用蹲蒲。

三.接收端

對于我們來說我們只需要關(guān)注以下幾點:①過濾器

①過濾器:

(1)顧名思義,通過它來得到我們想要的ID的數(shù)據(jù)侵贵,當(dāng)總線上的數(shù)據(jù)經(jīng)過仲裁后届搁,終于到達(dá)目的地(接收端)了,那么這個時候還要讓接收端看看這是不是我想要的數(shù)據(jù),怎么看呢卡睦?通過ID宴胧。

(2)工作模式:列表模式;得到一組幀表锻,通過設(shè)置僅關(guān)心ID的幾位來實現(xiàn)恕齐。

? ? ? ? ? ? ? ? ? ? ? ? ? 標(biāo)志位掩碼模式:得到特定ID的幀。過來的幀的ID必須與過濾器的ID一摸一樣瞬逊。

四.代碼實現(xiàn):

鏈接:https://pan.baidu.com/s/1GadiL6UjDvrh6wDDlpp1nw? ?提取碼:38zp

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末显歧,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子确镊,更是在濱河造成了極大的恐慌士骤,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,639評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蕾域,死亡現(xiàn)場離奇詭異拷肌,居然都是意外死亡,警方通過查閱死者的電腦和手機旨巷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評論 3 385
  • 文/潘曉璐 我一進(jìn)店門巨缘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人采呐,你說我怎么就攤上這事若锁。” “怎么了斧吐?”我有些...
    開封第一講書人閱讀 157,221評論 0 348
  • 文/不壞的土叔 我叫張陵又固,是天一觀的道長。 經(jīng)常有香客問我会通,道長口予,這世上最難降的妖魔是什么娄周? 我笑而不...
    開封第一講書人閱讀 56,474評論 1 283
  • 正文 為了忘掉前任涕侈,我火速辦了婚禮,結(jié)果婚禮上煤辨,老公的妹妹穿的比我還像新娘裳涛。我一直安慰自己,他們只是感情好众辨,可當(dāng)我...
    茶點故事閱讀 65,570評論 6 386
  • 文/花漫 我一把揭開白布端三。 她就那樣靜靜地躺著,像睡著了一般鹃彻。 火紅的嫁衣襯著肌膚如雪郊闯。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,816評論 1 290
  • 那天,我揣著相機與錄音团赁,去河邊找鬼育拨。 笑死,一個胖子當(dāng)著我的面吹牛欢摄,可吹牛的內(nèi)容都是我干的熬丧。 我是一名探鬼主播,決...
    沈念sama閱讀 38,957評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼怀挠,長吁一口氣:“原來是場噩夢啊……” “哼析蝴!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起绿淋,我...
    開封第一講書人閱讀 37,718評論 0 266
  • 序言:老撾萬榮一對情侶失蹤闷畸,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后躬它,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體腾啥,經(jīng)...
    沈念sama閱讀 44,176評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,511評論 2 327
  • 正文 我和宋清朗相戀三年冯吓,在試婚紗的時候發(fā)現(xiàn)自己被綠了倘待。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,646評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡组贺,死狀恐怖凸舵,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情失尖,我是刑警寧澤啊奄,帶...
    沈念sama閱讀 34,322評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站掀潮,受9級特大地震影響菇夸,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜仪吧,卻給世界環(huán)境...
    茶點故事閱讀 39,934評論 3 313
  • 文/蒙蒙 一庄新、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧薯鼠,春花似錦择诈、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至郊艘,卻和暖如春荷科,著一層夾襖步出監(jiān)牢的瞬間唯咬,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評論 1 266
  • 我被黑心中介騙來泰國打工畏浆, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留副渴,地道東北人。 一個月前我還...
    沈念sama閱讀 46,358評論 2 360
  • 正文 我出身青樓全度,卻偏偏與公主長得像煮剧,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子将鸵,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,514評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 轉(zhuǎn):https://www.kvaser.cn/about-can/can-protocol-tutorial/?...
    right_33cb閱讀 2,375評論 0 3
  • 總線 計算機的各個功能部件通過總線連接在一起構(gòu)成完整的計算機系統(tǒng)勉盅,總線是多個系統(tǒng)功能部件之間進(jìn)行數(shù)據(jù)傳送的公共通路...
    羅蓁蓁閱讀 4,788評論 0 10
  • 什么是嵌入式 IEEE(Institute of Electrical and Electronics Engin...
    Leon_Geo閱讀 3,694評論 1 20
  • 這一年,經(jīng)歷了太多顶掉〔菽龋回頭看以前的自己,為什么就不能再認(rèn)真一點痒筒,再多想一步宰闰。如果一切我都做好了,會不會也就不是今天這...
    霙落閱讀 264評論 0 0
  • 今天的行程有點趕簿透,既要購物移袍,又要去景點,而且安排的景點較多老充,另外還打算去泡個泥漿浴葡盗,行程滿滿,來去匆匆啡浊。 ...
    汾湖秀閱讀 283評論 7 4