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
    +关注

    关注

    58

    文章

    3010

    浏览量

    471471
  • 通信
    +关注

    关注

    18

    文章

    6316

    浏览量

    139567
  • HMI
    HMI
    +关注

    关注

    9

    文章

    687

    浏览量

    51536
  • Model3
    +关注

    关注

    1

    文章

    230

    浏览量

    21420
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    香蕉派 BPI-2K3000 工业计算机开发板采用龙芯2K3000芯片设计

    引出所有信号,扩展能力强 多功能工业底板: 全部工业(EMC3-4)保护的多种通讯与交
    发表于 11-15 11:43

    Air8000 模块 CAN 接口实战开发:从入门到配置的完整流程指南

    工业通信与物联网应用中,CAN 总线以其高可靠性和实时性成为关键通信方式。Air8000 模块集成 CAN 接口后,为设备互联提供了强大支
    的头像 发表于 10-29 14:05 262次阅读
    Air8000 模块 <b class='flag-5'>CAN</b> 接口实战开发:从入门到<b class='flag-5'>配置</b>的完整流程指南

    一款工业MP3语音芯片介绍

    稳定性 采用工业设计标准: · 工作温度范围:-40℃~70℃ · 支持CRC校验与通信握手机制 · 提供抗干扰设计指南,适应复杂电磁环境 即使在长时间高负荷运行条件下,仍能保证音
    发表于 09-08 10:33

    工业树莓派的高光时刻!树莓派工业 HMI 列阵!

    上海晶珩作为树莓派官方设计合作伙伴和代理商,基于树莓派技术开发了一系列工业人机界面(HMI)产品,广泛应用于工业自动化、楼宇控制、智能制造等领域。这些
    的头像 发表于 07-23 18:36 542次阅读
    <b class='flag-5'>工业</b>树莓派的高光时刻!树莓派<b class='flag-5'>工业</b><b class='flag-5'>级</b> <b class='flag-5'>HMI</b> 列阵!

    打破协议壁垒,CAN转EtherCAT连接工业相机秒变跨国CP”!

    工业自动化中,不同协议设备集成常面临兼容性难题。本文以CAN转EtherCAT连接工业相机为例,从技术原理到实践,提供一套严谨的解决方案,助力高效通信。 一、协议转换必要性
    发表于 07-14 16:20

    谁说低价没有好方案?Model3C彩屏仪表HMI芯片方案强势破局!

    近年来,两轮车销量不断攀升,两轮车智能化浪潮也席卷而来,彩屏仪表渗透率也加速提升。但是,传统HMI方案普遍采用ARM芯片搭载外挂存储,单颗芯片成本居高不下,中小厂商面临着巨大压力。可低价方案又
    的头像 发表于 05-27 18:04 615次阅读
    谁说低价没有好方案?<b class='flag-5'>Model3</b>C彩屏仪表<b class='flag-5'>HMI</b><b class='flag-5'>芯片</b>方案强势破局!

    一文读懂启明智显 Model系列 HMI芯片:从性能参数到场景适配的选型指南

    “卡脖子”的困境,针对泛工业领域研发的Model系列HMI芯片也应运而生,采用国产平头哥芯片架构,坚持SDK开源,将“国产”“开源”等理念贯
    的头像 发表于 05-21 15:45 934次阅读
    一文读懂启明智显 <b class='flag-5'>Model</b>系列 <b class='flag-5'>HMI</b><b class='flag-5'>芯片</b>:从性能参数到场景适配的选型指南

    使用S32G3进行CAN消息测试遇到的问题求解

    我正在使用 S32G3进行 CAN 消息测试。 配置完成后,我可以使用 cansend 命令发送 CAN 消息。 我想从 PC 接收
    发表于 04-10 07:06

    Model4芯片方案串口屏,支持视频解码,分辨率1080P

    如果你想设计一款可以播放视频、对系统稳定性和可靠性都有较高要求的串口屏,不妨考虑Model4芯片方案串口屏,国产芯片方案,拒绝管控限制,工业
    的头像 发表于 04-01 17:36 809次阅读
    <b class='flag-5'>Model</b>4<b class='flag-5'>芯片</b>方案串口屏,支持视频解码,分辨率1080P

    使用CAN以及CANIF配置了S32K310的CAN驱动模块,如何进行报文的接收呢?

    我使用CAN以及CANIF配置了S32K310的CAN驱动模块。我知道调用CAN_Write()函数进行报文的发送,但我存有以下的一些问题:
    发表于 03-21 07:24

    深度解析SSD2351核心板:硬核视频处理+工业可靠性设计

    明远智睿SSD2351核心板基于SigmaStar SSD2351芯片打造,专为高可靠性工业场景设计,其硬件配置与接口能力充分满足复杂环境下的多模态数据处理需求。 芯片技术细节 : 视
    发表于 02-21 17:19

    BLE MESH 智能开关开发 情景模式(睡眠、明亮) 蓝牙model如何分配,如何配置model

    发送state】依次发送。 开关面板设定了model以及通用的处理逻辑后就无法再更改了,主要是通过app层面下发配置信息设定组播地址和属性来完成不同的控制逻辑 求能实现该功能的解决方案
    发表于 02-12 23:54

    HMI在智能制造与工业自动化中的作用

    工业4.0时代,先进技术的融入正在彻底改变工业运作的方式。在实现无缝操作的过程中,人机界面(HMI)是不可或缺的关键组成部分。HMI在智能制造与
    的头像 发表于 01-17 11:34 1114次阅读
    <b class='flag-5'>HMI</b>在智能制造与<b class='flag-5'>工业</b>自动化中的作用

    Model系列:基于RT-Thread freemodbus主从协议栈

    启明智显Model系列芯片已经在工业HMI、智慧商显、智能家具家电、智慧医疗等多领域实现应用,也获得了大家的一致好评。同时,我们也注意到了大家在Mo
    的头像 发表于 12-30 17:32 1025次阅读
    <b class='flag-5'>Model</b>系列:基于RT-Thread freemodbus主从协议栈

    如何使用Arduino实现CAN总线通信

    CAN(Controller Area Network)总线是一种常用于汽车和工业控制系统的串行通信协议,以其高可靠性和实时性而闻名。Arduino,作为一种流行的开源微控制器平台,可以通过附加
    的头像 发表于 12-23 09:06 2817次阅读