色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

STM32入門學習筆記之CAN通信實驗1

jf_78858299 ? 來源:滑小稽筆記 ? 作者:電子技術園地 ? 2023-02-16 14:37 ? 次閱讀

18.1 CAN協議

18.1.1 協議概述

CAN是Controller Area Network的縮寫,最初是專門用于汽車網絡的通信協議,與485協議相似,CAN也是一種2線制,采用兩根線的電壓差進行數據傳輸的協議,隨著CAN協議的高性能與可靠性被認同,現在被廣泛運用在工業自動化,船舶等當面,目前最熱門的國六標準,J1939通信協議就是以CAN協議為基礎設計的。

CAN協議最遠通信距離可達10km,與485相似,CAN也有兩種電平,分別為顯性電平與隱性電平,當CAN_H與CAN_L電壓一致的時候為隱性電平,反之為顯性電平。實際上隱性電平代表邏輯電平1,顯性電平代表邏輯電平0,CAN在通信的時候,也需要在每個設備輸出端并聯1120Ω的終端匹配電阻,用于進行阻抗匹配。

18.1.2 通信組成

CAN協議通過5種類型的幀進行數據通信:數據幀,遙控幀,錯誤幀,過載幀和間隔幀,其中數據幀與遙控幀具有標準格式與擴展格式兩種,標準格式有11個位的標識符,擴展格式則有29個位的標識符,五種幀的功能如下所示。

(1)數據幀:用于實際數據傳輸

(2)遙控幀:用于接收端向具有相同ID的發送端請求數據

(3)錯誤幀:用于檢測報錯時通知其他設備

(4)過載幀:用于接收端通報尚未準備好接收準備

(5)間隔幀:用于將數據幀與遙控幀和前面的幀分割

完整的數據幀構成如下圖所示。

圖片

數據幀一般由7段組成:

(1)幀起始:即數據幀開始的段,標準幀和擴展幀都是由1個位的顯性電平表示幀起始

(2)仲裁段:表示該幀優先級,標準幀和擴展幀格式在這一段結構如下圖所示。

圖片

其中RTR位用于標識是否是遠程幀(0代表數據幀;1代表遠程幀),IDE位為標識符選擇位(0表示使用標準標識符;1表示使用擴展標識符),SRR位為代替遠程請求位,為隱性位,代替了標準幀中的RTR位。

(3)控制段:表示數據的字節數即保留位,由6個位構成,表示數據段的字節數。標準幀和擴展幀的控制段結構如下圖所示。

圖片

r0和r1為保留位,必須全部以顯性電平發送,但是接收端可以接收顯性、隱性及任意組合的電平。DLC段為數據長度表示段,高位在前,DLC段有效值為08,但是接收方接收到915的時候并不認為是錯誤。

(4)數據段:數據段內容,一段可以發送0~8個字節的數據,從最高位MSB開始輸出

(5)CRC校驗:CRC校驗數據完整性

(6)應答段:表示正常接收

(7)幀結束:表示該幀結束

18.1.3 通信參數

由發送單元在非同步的情況下發送的每秒鐘的位數稱為位速率。一個位可分為4段。

(1)同步段(SS)

(2)傳播時間段(PTS)

(3)相位緩沖段1(PBS1)

(4)相位緩沖段2(PBS2)

這些段又由可稱為Tq的最小時間單位構成。1位分為4個段,每個段又由若干個Tq構成,這稱為位時序。1位由多少個Tq構成、每個段又由多少個Tq構成等,可以任意設定位時序。通過設定位時序,多個單元可同時采樣,也可任意設定采樣點。各段的作用和Tq數如下表所示。

圖片

18.1.4 總線仲裁

在總線空閑態,最先開始發送消息的單元獲得發送權。當多個單元同時開始發送時,各發送單元從仲裁段的第一位開始進行仲裁。連續輸出顯性電平最多的單元可繼續發送。實現過程如下圖所示。

圖片

單元1和單元2同時開始向總線發送數據,開始部分他們的數據格式是一樣的,故無法區分優先級,直到T時刻,單元1輸出隱性電平,而單元2輸出顯性電平,此時單元1仲裁失利,立刻轉入接收狀態工作,不再與單元2競爭,而單元2則順利獲得總線使用權,繼續發送自己的數據。這就實現了仲裁,讓連續發送顯性電平多的單元獲得總線使用權

18.1.5 STM32 CAN模組簡介

STM32F1系列自帶的是基本擴展CAN,支持CAN協議的2.0A和2.0B,支持報文發送的優先級要求可軟件配置,最大通信速率1Mbps,3個發送郵箱和3級深度的2個接收緩存器FIFO,28個可變的濾波器組,STM32的CAN模組結構如下圖所示。

圖片

從上面結構可以看出,兩個CAN都分別具備自己的發送與接收郵箱,但是28個濾波器卻是公用的,通過FMR寄存器可以設置濾波器的分配方式,STM32的每個濾波器組的位寬都可以獨立配置,根據位寬的不同,每個濾波器組可以提供

(1)1個32位過濾器:包含STDID[10:0],EXTID[17:0],18位擴展ID,IDE和RTR位

(2)1個16位過濾器:包含STDID[10:0],IDE,RTR和EXTID[17:15]

此外過濾器可以配置為屏蔽位模式與標識符列表模式。

(1)在屏蔽位模式下,標識符寄存器和屏蔽寄存器一起,指定報文標識符的任何一位,應該按照“必須匹配”或“不用關心”處理

(2)標識符列表模式下,屏蔽寄存器也被當作標識符寄存器用。因此,不是采用一個標識符加一個屏蔽位的方式,而是使用2個標識符寄存器。接收報文標識符的每一位都必須跟過濾器標識符相同。

18.1.6 CAN的發送流程

第1步:程序選擇1個空置的郵箱(TME=1),設置標識符(ID),數據長度和發送數據

第2步:設置CAN_TIxR的TXRQ位為1,請求發送

第3步:郵箱掛號(等待成為最高優先級)?

第4步:預定發送(等待總線空閑)

第5步:發送

第6步:郵箱空置

整個發送流程如下圖所示。

圖片

18.1.7 CAN的接收流程

CAN接收到的有效報文,被存儲在3級郵箱深度的FIFO中。FIFO完全由硬件來管理,從而節省了CPU的處理負荷,簡化了軟件并保證了數據的一致性。應用程序只能通過讀取FIFO輸出郵箱,來讀取FIFO中最先收到的報文。這里的有效報文是指那些正確被接收的(直到EOF都沒有錯誤)且通過了標識符過濾的報文。前面我們知道CAN的接收有2個FIFO,我們每個濾波器組都可以設置其關聯的FIFO,通過CAN_FFA1R的設置,可以將濾波器組關聯到FIFO0/FIFO1。CAN接收流程為:

FIFO空->收到有效報文->掛號1(存入FIFO的一個郵箱,這個由硬件控制,我們不需要理會)->收到有效報文->掛號2->收到有效報文->掛號3->收到有效報文->溢出

這個流程里面,我們沒有考慮從FIFO讀出報文的情況,實際情況是:我們必須在FIFO溢出之前,讀出至少1個報文,否則下個報文到來,將導致FIFO溢出,從而出現報文丟失。每讀出1個報文,相應的掛號就減1,直到FIFO空,完整的接收流程圖如下圖所示。

圖片

FIFO接收到的報文數,我們可以通過查詢CAN_RFxR的FMP寄存器來得到,只要FMP不為0,我們就可以從FIFO讀出收到的報文。

18.1.8 通信速率計算

根據通信參數小節我們可以知道1個位是由4個段組成,分別為同步段(SS),傳播時間段(PTS),相位緩沖段1(PBS1),相位緩沖段2(PBS2),STM32內部將傳播時間段與相位緩沖段1合并為時間段1,這樣1個位就是有3個段組成,即同步段SS,時間段1和時間段2(即相位緩沖段),由于波特率的定義是1秒內發送二進制位的個數,所以,CAN波特率的計算公式為

圖片

18.1.9 STM32F1系列CAN測試模式

(1)靜默模式

通過對CAN_BTR寄存器的SILM位置1,來選擇靜默模式。在靜默模式下,CAN可以正常地接收數據幀和遠程幀,但只能發出隱性位,而不能真正發送報文。如果bxCAN需要發出顯性位(確認位、過載標志、主動錯誤標志),那么這樣的顯性位在內部被接回來從而可以被CAN內核檢測到,同時CAN總線不會受到影響而仍然維持在隱性位狀態。因此,靜默模式通常用于分析CAN總線的活動,而不會對總線造成影響-顯性位(確認位、錯誤幀)不會真正發送到總線上,靜默模式等效圖如下圖所示。

圖片

(2)環回模式

通過對CAN_BTR寄存器的LBKM位置1,來選擇環回模式。在環回模式下,CAN把發送的報文當作接收的報文并保存(如果可以通過接收過濾)在接收郵箱里,環回模式等效圖如下圖所示。

圖片

(3)環回靜默模式

該模式可用于“熱自測試”,即可以像環回模式那樣測試CAN,但卻不會影響CANTX和CANRX所連接的整個CAN系統。在環回靜默模式下,CANRX引腳與CAN總線斷開,同時CANTX引腳被驅動到隱性位狀態,環回靜默模式等效圖如下圖所示。

圖片

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 通信協議
    +關注

    關注

    28

    文章

    887

    瀏覽量

    40317
  • 數據傳輸
    +關注

    關注

    9

    文章

    1914

    瀏覽量

    64641
  • CAN
    CAN
    +關注

    關注

    57

    文章

    2756

    瀏覽量

    463828
收藏 人收藏

    評論

    相關推薦

    介紹一下stm32F103C8T6的can總線通信實驗

    本篇文章介紹一下stm32F103C8T6的can總線通信實驗需要兩塊stm32F103C8T6板子can
    發表于 08-19 06:29

    串口通信實驗分享

    實驗四、串口通信實驗? 自律學習堅強 ,拒絕迷茫。作者:行走的皮卡丘時間:2021/4/4喜歡就去追,這個紅燈等不到,說不定下一個紅燈等到了,嘻嘻!!!!!!!文章目錄實驗四、串口
    發表于 01-14 09:08

    CAN通信實驗報文對象的FIFO緩沖器應用

    關鍵詞 CAN報文對象的FIFO模式應用摘 要 CAN通信實驗
    發表于 11-07 14:18 ?33次下載

    ALIENTEK_MINISTM32_實驗19_無線通信實驗

    ALIENTEK MINISTM32 實驗19 無線通信實驗,很好的資料,快來下載吧
    發表于 02-19 11:40 ?12次下載

    CAN通信實驗

    CAN通信實驗
    發表于 03-30 16:48 ?0次下載

    STM32各模塊學習筆記

    STM32個模塊學習筆記 目錄 STM32筆記之一 中斷優先級.......................................
    發表于 11-30 03:32 ?3165次閱讀

    STM32學習筆記--CAN

    目錄:一、CAN通信原理1.CAN通信簡介2.CAN通信優點3.
    發表于 11-19 12:21 ?86次下載
    <b class='flag-5'>STM32</b><b class='flag-5'>學習</b><b class='flag-5'>筆記</b>--<b class='flag-5'>CAN</b>

    STM32CubMX自學筆記(七)—CAN通信實驗

    STM32CubMX自學筆記(七)—CAN通信實驗主要介紹由于項目需求要用到CAN通信協議,因此
    發表于 12-04 18:21 ?11次下載
    <b class='flag-5'>STM32</b>CubMX自學<b class='flag-5'>筆記</b>(七)—<b class='flag-5'>CAN</b><b class='flag-5'>通信實驗</b>

    Can通信接口學習筆記

    Can通信接口學習筆記
    發表于 12-08 16:36 ?26次下載
    <b class='flag-5'>Can</b><b class='flag-5'>通信</b>接口<b class='flag-5'>學習</b><b class='flag-5'>筆記</b>

    16 . USART 串口通信實驗

    USART 串口通信實驗我們知道STM32F1 內部含有非常多的通信接口,我們就來學習下USART 串口通信。要實現的功能是:
    發表于 12-20 19:22 ?20次下載
    16 . USART 串口<b class='flag-5'>通信實驗</b>

    STM32 串口通信實驗

    stm32串口通信實驗UART通信實驗(通用異步收發器)UART串口通信原理:UART的通信過程實驗
    發表于 12-20 19:26 ?15次下載
    <b class='flag-5'>STM32</b> 串口<b class='flag-5'>通信實驗</b>

    實驗四、串口通信實驗

    實驗四、串口通信實驗? 自律 學習
    發表于 01-14 10:09 ?2次下載
    <b class='flag-5'>實驗</b>四、串口<b class='flag-5'>通信實驗</b>

    STM32入門學習筆記CAN通信實驗2

    CAN是Controller Area Network的縮寫,最初是專門用于汽車網絡的通信協議,與485協議相似,CAN也是一種2線制,采用兩根線的電壓差進行數據傳輸的協議,隨著CAN
    的頭像 發表于 02-16 14:37 ?1749次閱讀

    STM32入門學習筆記CAN通信實驗3

    CAN是Controller Area Network的縮寫,最初是專門用于汽車網絡的通信協議,與485協議相似,CAN也是一種2線制,采用兩根線的電壓差進行數據傳輸的協議,隨著CAN
    的頭像 發表于 02-16 14:37 ?960次閱讀

    STM32入門學習筆記CAN通信實驗4

    CAN是Controller Area Network的縮寫,最初是專門用于汽車網絡的通信協議,與485協議相似,CAN也是一種2線制,采用兩根線的電壓差進行數據傳輸的協議,隨著CAN
    的頭像 發表于 02-16 14:37 ?1084次閱讀
    主站蜘蛛池模板: 把腿张开再深点好爽宝贝动态图 | 日本无码毛片久久久九色综合| 伊人久久综合网站| 紧致肉肉高h| 777米奇影院第七色色| 欧美卡1卡2卡三卡2021精品| 成人在免费观看视频国产| 性一交一乱一色一视频| 久久久精品久久久久三级| bbbbbxxxxx肥胖| 性色AV一区二区三区咪爱四虎| 挤奶门事件完整照片| 99热成人精品国产免男男| 熟女人妻AV五十路六十路| 精彩国产萝视频在线| 99国产在线视频| 窝窝影院午夜看片毛片| 久久婷婷国产五月综合色啪最新 | 午夜理论在线观看不卡大地影院 | 蜜臀AV浪潮99国产麻豆| 粉嫩小护士| 一个人色导航| 人人做人人干| 久久re这里精品23| 爱人 qvod| 亚洲色无码播放| 人曽交Z00Z0OA片| 精品久久久噜噜噜久久久app| 69式国产真人免费视频| 亚洲 欧美 制服 视频二区| 明星三级电影| 国语自产精品一区在线视频观看 | 九色PORNY真实丨国产大胸| www.青青草| 欲香欲色天天天综合和网| 手机在线免费| 免费看美女的网站| 国产一卡在线观看完整版| jk制服喷水| 伊人久久大香线蕉综合亚洲| 日日摸夜夜嗷嗷叫日日拍|