<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

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

3天內不再提示

HMI工業級芯片Model3如何進行CAN通信配置?

QiMingZhiXian ? 來源:QiMingZhiXian ? 作者:QiMingZhiXian ? 2024-04-17 11:16 ? 次閱讀

Model3(簡稱M3芯片)簡介

wKgaomYfP02AIwYGAAKm7W_CztY963.png

基于Model3芯片的核心板

Model3 是一款高性能的顯示交互和智能控制 MCU,采用國產自主高算力 RISC-V 內核,內置片上 1MB 大容量 SRAM 以及 64Mb PSRAM,并提供豐富的互聯外設接口,配備了 2D 圖像加速引擎和 PNG 解碼/JPEG 編 解碼引擎,可以滿足各類交互設計場景和多媒體互動需求,具有高可靠性、高安全性、高開放度的特點,可以面向于泛工業領域應用。

wKgaomYfP02AYjwYAAD2g4U6p1w382.png

Model3芯片功能框圖

Model3(簡稱M3芯片)接口圖如下:

wKgZomYfP06AVbktAABhPT2xgTY341.png

M3芯片接口圖

今天小編主要介紹Model3(簡稱M3芯片)CAN通信的架構及寄存器說明

CAN通信簡介

CAN控制器,多應用于汽車控制系統和一般工業環境中的區域網絡控制。CAN是一種多主機、多廣播的通信協議,CAN總線上的各個節點都可以向總線發送數據,多個節點同時發送時利用仲裁機制,從而確保最高優先級的數據可以正常發送到總線上,具有很高的實時性和可靠性。

Model3芯片(簡稱M3芯片)CAN接口基本特性如下:

支持CAN2.0A和CAN2.0B協議

支持11位標識符(標準格式)和29位標識符(擴展格式)

編程通信速率最高達1Mbps驅動配置

支持多種操作模式:正常模式、只聽模式、自測模式、休眠模式、復位模式

錯誤檢測與處理:錯誤計數、錯誤報警閾值可配置、錯誤捕獲、仲裁丟失捕獲

CAN配置指南:

驅動配置

Board options --->

[*] Using CAN0

[ ] Using CAN1

zx-rtt CAN的driver層是基于RT-Thread的CAN驅動框架實現的,所以需要使能RT-Thread的CAN驅動框架:

RT-Thread options --->

RT-Thread Components --->

Device Drivers --->

[*] Using CAN device drivers

[*] Enable CAN hardware filter

[ ] Enable CANFD support

備注:

CAN模塊不支持CANFD

為了使用方便,選擇Using CAN0/1后會自動選擇CAN驅動框架

測試說明

硬件準備:

測試板:帶有兩個CAN接口的測試板

PC:用于和測試板交互

串口線:連接測試板的調試串口

軟件:

PC端串口終端軟件

can_sample測試程序

CAN收發測試:

將測試板上的兩個CAN接口對接。執行can_sample命令,CAN0會向CAN1發送數據,CAN1會打印接收到的數據。

注意:

Model3芯片(簡稱M3芯片)的CAN 只能設置1個過濾表,支持屏蔽模式;如果要支持雙過濾模式,擴展幀只能過濾id28~id13,id12~id0和rtr不能過濾。

Model3芯片(簡稱M3芯片)CAN的架構還有寄存器說明

wKgaomYfP0-AK4bRAADAMUbIG3c055.png

CAN控制器原理框圖

位時序邏輯BTL:負責同步位時序,確保數據傳輸的穩定性,以預先配置的波特率發送和接受報文。

位流處理器BSP:負責對發送數據進行位填充、附加CRC等處理,并為位時序邏輯模塊生成位流;負責對接收的位流進行去填充、驗證CRC等處理;負責檢測總線上的錯誤并將錯誤報告給錯誤管理邏輯。

接收過濾器:是一個可編程的報文過濾單元,允許控制器根據報文的標識符接收或拒絕該報文,可以過濾掉總線發送的與節點無關的消息,使節點效率提高。

緩沖FIFO:大小為64byte,負責存儲通過接收過濾器的報文。FIFO中的第一條報文將被映射到13byte 的接收緩沖寄存器中可被CPU訪問,直到該報文被清除,空間被釋放。隨后,接收緩沖寄存器將繼續映射FIFO 中的下一條報文。

錯誤管理邏輯EML:負責更新發送錯誤計數TEC 和接收錯誤計數REC 的數值,記錄錯誤類型、錯誤位置,更新控制器錯誤狀態,確保BSP 模塊發送正確的錯誤標志;還負責記錄報文仲裁丟失時的bit位置。

wKgaomYfP0-Ab4xTAABAiAF3pec934.png

CAN典型應用

運行模式

控制器包含5種運行模式,由模式寄存器(CAN_MODE)定義設置。

復位模式:Reset Mode,進入復位模式,控制器離線不參與總線任何活動,可修改CAN控制器的各種參數配置。退出復位模式后,控制器需等待11 個連續隱性位出現(等效于總線空閑),才能正常接收和發送報文。

正常模式: Normal Mode,CAN 控制器可以發送和接收包含錯誤信號在內的報文。

自測模式:Self-Test Mode, 與正常模式相同,但在該模式下,CAN 控制器發送報文時,即使沒有接收到應答,也不會產生應答錯誤。通常在控制器自測時使用該模式。

只聽模式: Listen Only Mode,CAN 控制器可以接收報文,但在CAN 總線上保持完全被動。因此,CAN 控制器將無法發送任何報文、應答或錯誤信號,錯誤計數將保持凍結狀態。該模式用于CAN 總線監控。

休眠模式:Sleep Mode,無總線活動及無中斷發生,可進入低功耗休眠模式,該模式下時鐘停止。SLEEP_MOD為0或總線有信號輸入時喚醒,產生喚醒中斷。

位時序

為了實現位同步,每個正常位時間劃分為幾個不重疊時間的片段,包括同步段SS,傳播段PS,相位緩沖段PBS1,相位緩沖段PBS2,一個完整的位由8~25個時間定額Tq組成。

如圖所示,將傳播段PS和相位緩沖段PBS1合并形成新的時間段Ts1。

在復位模式下,配置總線時序0寄存器(CAN_BTR0)和總線時序1寄存器(CAN_BTR1)中的BRP、SJW、TS1、TS2、SAM等參數,決定CAN的波特率。

SJW具體作用是增大或減小CAN波特率的容許偏差量,其大小與波特率值沒有太大關系,可理解為波特率精度調節,SJW值越大則總線獲得更寬波特率容忍度。

wKgZomYfP0-ANmJoAAAhkztwMtc568.png

位時序各參數計算關系如下:

時間定額Tq = 2*(BRP[5:0]+1)*Tpclk,其中Tpclk為APB時鐘(通常為24MHz)周期。

位時間Tbit = [1+ (TS1+1) + (TS2+1)]*Tq;

波特率Baud = 1/Tbit;

采樣點= [1 + (TS1+1)]/ [1+ (TS1+1) + (TS2+1)]。

舉例:假設單次采樣SAM為0,且SJW=2,TS1=8,TS2=1,BRP=0,則波特率為24M/[2*(0+1)*(1+9+2)]=1Mbps,采樣點為(1+9)/ (1+9+2)=83%。建議選取規則:TS2>=SJW;BRP盡量小、SJW盡量大;采樣點選取范圍75%~85%之間;盡量采用單次采樣。

通信報文

CAN通信報文類型包含數據幀、遠程幀、錯誤幀、過載幀、間隔幀這5種類型。

wKgZomYfP1CAee0wAACIE_poFcU187.png

CAN標準格式和擴展格式數據幀

wKgaomYfP1CAYQDjAACDjNPkkzU058.png

CAN標準格式和擴展格式遠程幀

wKgZomYfP1GAZw5EAABeFUWMKm0925.png

CAN錯誤幀、過載幀、間隔幀

中斷管理

控制器提供8種中斷包括總線錯誤中斷、仲裁丟失中斷、被動錯誤中斷、喚醒中斷、數據溢出中斷、錯誤報警中斷、發送中斷、接收中斷。

由中斷寄存器(CAN_INTR)定義,通過設置中斷使能寄存器(CAN_INTEN)中相應使能位,每個中斷源都可以單獨允許和禁用。

當有一個或多個中斷觸發,控制器IRQ有效,當所有中斷位都被清除,控制器IRQ失效。

中斷寄存器被讀取后,除接收中斷外,其中的中斷位將自動清除。

接收中斷直到通過RXB_REL 指令位清除所有接收報文后,才能被清除,否則會影響接收緩沖狀態RXB_STAT。

接收中斷RX_INT:當接收FIFO 中有待讀取報文(接收數據計數寄存器(CAN_RXC)中RXC > 0)時觸發此中斷。計數的報文數量包括有效報文和溢出報文。直到通過RXB_REL 指令位清除所有掛起接收報文后,接收中斷才會失效。

發送中斷TX_INT:當發送緩沖器空閑,將其他報文加載到緩沖器中等待發送時,都會觸發此中斷。

錯誤報警中斷ERRW_INT:狀態寄存器(CAN_STAT)中ERR_STAT或BUS_STAT的位值發生改變(由0變1或由1變0)都會觸發此中斷。觸發時狀態值可分以下幾種:

ERR_STAT = 0 與BUS_STAT = 0:如果控制器處于主動錯誤狀態,則表示TEC 和REC 的值都返回ERRWT 所設閾值之下;如果控制器此前處于總線恢復狀態,則表示此時總線恢復已成功完成。

ERR_STAT = 1 與BUS_STAT = 0:表示TEC 或REC 數值已超過ERRWT所設閾值。

ERR_STAT = 1 與BUS_STAT = 1:表示控制器已進入離線狀態(TEC> =255)。

ERR_STAT = 0 與BUS_STAT = 1:表示總線恢復期間,控制器TEC 數值已低于ERRWT所設閾值。

仲裁丟失中斷ARBLOST_INT :控制器發送報文并且丟失仲裁時觸發此中斷。丟失仲裁位置將被捕獲記錄在狀態寄存器(CAN_STAT)的ARBLOST_CAP中,狀態被清除之前(通過CPU 的讀?。?,將不會再記錄新的仲裁丟失位置。

總線錯誤中斷ERRB_INT:控制器在總線上檢測到錯誤時觸發此中斷。錯誤類型和錯誤位置都將被捕獲記錄在狀態寄存器(CAN_STAT)的ERR_TYPE和ERR_CODE中。狀態被清除之前(通過CPU 的讀?。?,將不會再記錄新的總線錯誤信息。

數據緩沖器

下表描述了數據緩沖寄存器布局。發送和接收緩沖寄存器的訪問地址范圍相同(0x40~0x70),且只有當控制器處于非復位模式時才可訪問。

wKgaomYfP1GAVEaaAABo1mmRWEw242.png

發送緩沖寄存器:CPU 的寫入操作訪問,配置待發送報文,指定報文的幀類型、幀格式、幀標識符和數據。CPU通過控制寄存器(CAN_MCR)配置發送報文模式:

正常報文發送,需將TX_REQ置1。

自發自收,需將SELF_REQ 置1。

單次發送,需將TX_REQ 和ABORT_REQ同時置1。

接收緩沖寄存器:CPU 的讀取操作訪問,接收緩沖寄存器映射到緩沖FIFO 中的第一條報文,獲取第一條報文的幀類型、幀格式、幀標識符和數據。讀取完接收緩沖寄存器中的報文后,CPU 通過控制寄存器(CAN_MCR)中的RXB_REL置1來釋放接收緩沖寄存器,若接收FIFO 中仍有待處理的報文,按照接收報文的先后次序將最早接收到的報文映射到接收緩沖寄存器中。

緩沖FIFO: 是一個64字節大小的內部緩沖器,以先進先出原則存儲接收到的報文。接收緩沖寄存器為FIFO中可訪問窗口,偏移地址0x40~0x70,將被映射到FIFO 中第一條報文,一條報文可在FIFO 中占3 ~ 13字節空間,其中字節序與接收緩沖寄存器相同。當控制器接收到一條報文時,接收數據計數器RXC增加1,最大值為64。如果FIFO中有足夠空間,報文內容將被寫入到FIFO 中。首先,CPU讀取接收緩沖寄存器中的報文后,通過將RXB_REL置1,釋放FIFO 中第一條報文所占的空間, RXC將減小1。然后,接收緩沖寄存器將映射FIFO 中的下一條報文。

FIFO數據溢出:在任何情況下,FIFO 中可以存儲的報文數量取決于各條報文的長度,當FIFO 中沒有足夠空間完整地存儲新的報文,控制器會產生數據溢出,通過狀態位或數據溢出中斷反饋給CPU。FIFO在內部將溢出報文標記為無效,后續接收到的溢出報文仍然將增加RXC 到最大值64。為了清除FIFO 中的溢出報文,應重復調用RXB_REL,直到RXC為0。這樣可以讀取接收FIFO 中的所有有效報文,并清除所有溢出報文。

wKgZomYfP1OAXU83AAAqpUsEFBg589.png

CAN緩沖FIFO存儲報文過程

接收過濾器

接收過濾器,是一個可編程的報文過濾單元,允許控制器根據報文的標識符、幀類型、第一個數據字節接收或拒絕該報文,由4個接收代碼寄存器(CAN_RXCODE)和4個接收屏蔽寄存器(CAN_RXMASK)定義組成。

如 圖 8 所示,每條報文中的位必須匹配RXCODE 值所指定的模式或者被RXMASK值屏蔽,才能使該報文通過過濾并存儲到接收FIFO中。

接收代碼寄存器、接收屏蔽寄存器,分別與緩沖0~3寄存器(偏移地址0x40~0x4C)、緩沖4~7寄存器(偏移地址0x50~5C)地址空間相同,所以只有控制器在復位模式時,才能訪問這兩個寄存器。

wKgaomYfP1SAFsNtAAAbuZufXyY601.png

接收過濾器原理

單過濾模式:在模式寄存器(CAN_MODE)中將FILTER_SEL設置為1啟動單過濾模式。根據RXCODE / RXMASK的值定義單個過濾器,其定義及過濾報文格式如圖1-11所示。

wKgZomYfP1SABDt3AABvVAP7FXs568.png

雙過濾模式:在模式寄存器(CAN_MODE)中將FILTER_SEL設置為0啟動雙過濾模式。根據RXCODE / RXMASK的值將定義2個過濾器,分別為過濾器0和過濾器1,其標準格式和擴展格式下過濾報文定義如圖1-12和圖1-13所示。雙過濾模式下,如果報文通過這2個濾波器中至少一個,則表示該報文成功通過過濾。

wKgaomYfP1WAMrKsAABpBUZwtOQ627.png

雙過濾模式下SFF標準格式過濾報文定義

wKgZomYfP1WAXmmhAABf6sefynQ905.png

雙過濾模式下EFF擴展格式過濾報文定義

錯誤管理

錯誤計數包含發送錯誤計數TEC和接收錯誤計數REC,錯誤計數將決定CAN控制器當前的錯誤狀態(如主動錯誤、被動錯誤、離線)。

除了錯誤狀態外,控制器還提供錯誤報警閾值ERRWT功能,這個功能可在控制器進入被動錯誤狀態前,提醒用戶當前發生的嚴重總線錯誤。

控制器當前的錯誤狀態通過TEC、REC、ERR_STAT 、BUS _STAT和ERRWT體現,這些數值和狀態位的變化將觸發中斷,從而提醒用戶當前的錯誤狀態變化(參考中斷管理)。

錯誤捕獲

錯誤捕獲功能允許控制器以錯誤代碼的形式,記錄總線錯誤類型和錯誤位置。

當檢測到一個總線錯誤時,總線錯誤中斷ERRB_INT將被觸發,相應的錯誤代碼將記錄在狀態寄存器(CAN_STAT)的ERR_CODE中。

在當前錯誤代碼被讀取前,后續的總線錯誤中斷觸發時,將不會再記錄。

仲裁丟失捕獲

仲裁丟失捕捉功能允許控制器記錄仲裁丟失的bit位置。

當控制器丟失仲裁時,所丟失bit位置將被記錄在狀態寄存器(CAN_STAT)的ARBLOST_CAP中,同時觸發仲裁丟失中斷ARBLOST_INT。

在當前仲裁丟失捕獲bit位置被讀取前,后續的仲裁丟失中斷觸發時,將不會再記錄。

wKgaomYfP1aAZy-7AAAlXKRnTwM658.png

仲裁丟失位置記錄

審核編輯 黃宇

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

    關注

    56

    文章

    2472

    瀏覽量

    459354
  • 通信
    +關注

    關注

    18

    文章

    5706

    瀏覽量

    134423
  • HMI
    HMI
    +關注

    關注

    9

    文章

    490

    瀏覽量

    47888
  • Model3
    +關注

    關注

    1

    文章

    229

    瀏覽量

    20703
收藏 人收藏

    評論

    相關推薦

    工業HMI芯片選型推薦表

    國產工業HMI芯片,支持Linux、OpenWrt、RT-Thread、FreeRTOS 、OneOS等多個操作系統;支持多種高清顯示接口,如MIPI、RGB、LVDS等;支持豐富的外設,如
    的頭像 發表于 04-08 14:27 ?162次閱讀
    <b class='flag-5'>工業</b>級<b class='flag-5'>HMI</b><b class='flag-5'>芯片</b>選型推薦表

    特斯拉Model 3用了哪些芯片?

    特斯拉引領了汽車“四化”的浪潮,這背后也帶動了我國汽車產業鏈的上下游。中信證券研究部TMT和汽車團隊聯手多家公司和機構耗時兩個月對特斯拉Model3進行了完整的拆解,并發布了報告。作為電動汽車
    的頭像 發表于 03-07 17:00 ?1143次閱讀
    特斯拉<b class='flag-5'>Model</b> 3用了哪些<b class='flag-5'>芯片</b>?

    為什么CAN通信速率無法到達配置值?CAN配置時有什么注意點?

    在工程里面配置CAN通信速率為500Kbit/s,但是實際測試下來只能勉強達到125Kbit/s的水平,這個測試結果差距太大了,大家有測試過配置后的實際
    發表于 02-23 06:41

    XMC1404芯片CAN通訊需要配置些什么?

    大佬們好,我目前使用1404芯片的“XMC1400_MCAN”例程進行CAN的學習,但是在配置好后,我發現兩個板子之間的CAN通訊并沒有成功
    發表于 02-01 07:00

    EVAL-ADF7XXXMB4Z和ADF7023BC如何進行無線通信?

    有兩塊母版為EVAL-ADF7XXXMB4Z,主芯片為ADF7023BC,請問如何進行兩塊模擬嵌套板之間的無線通信?小白一只 請指教
    發表于 01-11 07:15

    【ELF 1開發板試用】+ 6.0 CAN通信

    。此外,CAN總線還支持優先控制,能夠根據不同節點的重要性和緊急程度進行優先的設置,確保重要信息能夠優先傳輸。 在機器人應用中,CAN
    發表于 12-11 22:57

    315MHz無線模塊和單片機如何進行直接通信?

    315MHz無線模塊和單片機如何進行直接通信
    發表于 10-19 08:27

    【RA6M3 HMI Board評測挑戰】-瑞薩RA6M3上的CAN實踐

    【RA6M3 HMI Board 評測大挑戰】-瑞薩RA6M3上的CAN實踐
    的頭像 發表于 10-17 14:55 ?1080次閱讀
    【RA6M3 <b class='flag-5'>HMI</b> Board評測挑戰】-瑞薩RA6M3上的<b class='flag-5'>CAN</b>實踐

    Qt助力工業HMI設計

    Qt 助力工業HMI設計內容包含:Qt發布歷程、Qt Group、Qt Product Portfolio、Qt’s Products in the Product Creation Flow、Challenge: Developing the First Prototy
    發表于 09-05 06:25

    特斯拉Model3或移除所有雷達

    特斯拉Model3或移除所有雷達 特斯拉為了降成本搶市場,當然或者是也有其他的考量,特斯拉Model3或移除所有雷達。 網上有爆料消息稱特斯拉新款Model 3已經結束“試生產階段”,9月份預計日產
    的頭像 發表于 08-21 17:37 ?1102次閱讀

    can總線的通信協議有哪些 CAN接口保護及工作原理

    CAN總線(Controller Area Network)是一種廣泛應用于汽車、工業自動化和其他領域的串行通信協議。以下是幾種常見的CAN總線通信
    的頭像 發表于 08-18 14:40 ?1.2w次閱讀
    <b class='flag-5'>can</b>總線的<b class='flag-5'>通信</b>協議有哪些 <b class='flag-5'>CAN</b>接口保護及工作原理

    何進行組態網絡連接設置

    在圖形化的網絡圖形視區中,可以很方便的將具有聯網能力的設備進行組網。下面我們就簡單介紹如何進行組態網絡連接。 ? 目錄 1.組態網絡 2.組態HMI連接 1.組態網絡 例如有兩個S7-1200
    的頭像 發表于 08-01 09:32 ?1120次閱讀
    如<b class='flag-5'>何進行</b>組態網絡連接設置

    特斯拉Model3 CAN數據采集和解析-CANedge

    到可提取的8—32GB工業SD卡中。設備通過WiFi接入點(例如WLAN或3G / 4G路由器)進行連接,以將數據安全地推送到您的服務器,此外,可以通過無線方式進行設備更新,軟件/API是免費和開放源代碼的。
    的頭像 發表于 07-10 13:17 ?1277次閱讀
    特斯拉<b class='flag-5'>Model3</b> <b class='flag-5'>CAN</b>數據采集和解析-CANedge

    HMI 連接的 PROFINET 參數

    HMI 連接的 PROFINET 參數 關于已組態 HMI 連接參數的概述,請參見 HMI 連接的屬性。 在該巡視窗口中只能進行部分更改。 顯示和編輯
    的頭像 發表于 06-23 21:56 ?545次閱讀
    <b class='flag-5'>HMI</b> 連接的 PROFINET 參數

    CAN與上位機通信詳細教程

    CAN與上位機通信詳細教程 提示:這里可以添加系列文章的所有文章的目錄,目錄需要自己手動添加本文使用32版HAL庫與上位機進行通信,使用按鍵按一次則發送一次數據給上位機,上位機發送一次
    發表于 05-09 14:41 ?9次下載
    <b class='flag-5'>CAN</b>與上位機<b class='flag-5'>通信</b>詳細教程
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>