3分钟看懂Microchip 32位MCU CAN模块的配置

文章目录

    • CAN模块系统框图
    • Microchip MCC Harmony下CAN模块配置选项
      • CAN模块工作模式
      • CAN模块中断模式
      • CAN工作速率Bit Timing Calculation配置
      • CAN 接收的配置
      • CAN 发送的配置
      • CAN 过滤器工作流程说明
      • CAN 过滤器的配置

CAN模块系统框图

CAN的英文全称:Control Area Network

Microchip下32位ARM MCU的CAN模块框图如下:
SAM ARM MCU CAN模块

  • 遵循ISO 11898-1:2015标准
    • 兼容Bosch CAN 2.0A, B标准和ISO CAN FD标准
  • CAN消息的存储都放在MCU内部的SRAM,通过高速总线进行访问
    • 需要单个或者2个外部消息RAM

Microchip MCC Harmony下CAN模块配置选项

CAN模块工作模式

在MCC配置模式下,添加CAN模块后进行配置
在这里插入图片描述

  • NORMAL (CAN 2.0B模式):
  • CAN FD模式:
  • Restricted Operation Mode (限制性操作模式):
    • 节点能够接收数据帧和远程帧
    • 能够对接收到的有效帧进行应答
    • 不能发送数据帧、远程帧、主动错误帧和过载帧
    • 当CAN 发送时无法及时从外部RAM中读到数据,会自动进入该模式,需手动进入配置模式,清除ASM标志位
    • 该模式可以用来实现CAN波特率自适应 (工作在不同波特率,当收到有效帧后手动退出该模式)
  • Bus Monitoring Mode: (总线监听模式):
    • 节点能够接收数据帧和远程帧
    • 节点不能传输数据
    • 用来分析CAN总线上的数据
    • 需要单个或者2个外部消息RAM
  • External Loop Back Mode (外部回环模式):
    • 数据帧在内部回环并会发送到总线上
    • 可以用来做硬件测试
  • Internal Loop Back Mode: (内部回环模式):
    • CAN数据帧在内部回环,不发送到总线上
    • 可以用来做自我诊断
      回环模式

CAN模块中断模式

MCAN中断模式配置

  • 开启Interrupt Mode (建议勾选):
    • 提供Tx FIFO/Event, Rx FIFO和中断回调注册接口
    • CAN初始化时开启CAN中断
    • 有CAN中断处理函数,在中断处理中调用注册的回调接口
  • 不选中Interrupt Mode:
    • 提供CAN中断状态查询和清除接口
    • 提供Tx Event和Rx FIFO状态查询接口

CAN工作速率Bit Timing Calculation配置

CAN的工作速率和采样点计算公式如下:
CAN波特率计算公式 =
CAN Clock Freq/Rate Prescaler/(1+TSEG1+TSEG2)
采用点计算公式 =
(1+TSEG1)/(1+TSEG1+TSEG2)
在这里插入图片描述
MCC支持自动计算比特率,只需要输入所需要的工作速率:
在这里插入图片描述

CAN 接收的配置

在这里插入图片描述

  • RX FIFOx配置:
    • 包括RX FIFOx深度、RX FIFOx中断触发门槛
    • 覆盖模式(Overwrite)还是阻塞模式(Blocking)
  • RX Buffer配置:
    • RX Buffer的深度(可以存多少个CAN数据帧)

CAN RX工作在阻塞模式:
阻塞模式

  • 在阻塞模式下RX FIFO工作流程:
    • 开始工作时Get Index和Put Index索引值都为0
    • 新收的数据帧存储在Put Index所指向的FIFO存储区
    • Put Index值自动+1 (0 ~ 63)
    • 当FIFO所有单元存满(Get Index == Put Index)
    • 新接收的数据帧会被丢弃

CAN RX工作在覆盖模式:
CAN覆盖模式

  • 在覆盖模式下RX FIFO工作流程:
    • 开始工作时Get Index和Put Index索引值都为0
    • 新收的数据帧存储在Put Index所指向的FIFO存储区
    • Put Index值自动+1 (0 ~ 63)
    • 当FIFO所有单元存满(Get Index == Put Index)
    • 新接收的数据帧会覆盖最旧的数据
    • Put Index值自动+1

CAN RX工作在FIFO模式和Buffer模式的对比:

  • RX FIFO模式:

    • CAN模块提供2个RX FIFO,FIFO0和FIFO1
    • 每个FIFO最大的存储深度是64(64个完整CAN数据帧)
    • 通过过滤器的设置可指定接收数据帧存储到指定FIFO
    • FIFO存储的数据帧读取遵循先入先出的原则
    • 可以配置为高优先级帧的缓存区
    • 可通过配置将普通帧和高优先级帧存放在不同FIFO
  • RX Buffer模式:

    • CAN模块提供1个专属RX Buffer
    • Buffer最大的存储深度是64(64个完整CAN数据帧)
    • 通过过滤器的设置可指定接收数据帧存储到Buffer
    • 可以指定位置读取存储在Buffer里的数据帧
    • Buffer里存储进新数据后该buffer区域会被锁定直到数据被取走并手动清除标志位信息
    • 可以用来存储CAN的debug message

CAN 发送的配置

在这里插入图片描述

  • TX FIFO 配置:
    • 包括TX FIFO深度(最大32个存储深度)
    • 发送的数据遵循先入先出原则
    • 通过Watermark来设置TX FIFO空闲中断门槛
  • TX Pause配置:
    • 满足AUTOSAR关于transmit cancellation要求
    • 满足ECU某些场合需要优先级控制的要求
  • TX Buffer配置:
    • TX Buffer的深度(最大32个存储深度)
    • 可以往指定的TX Buffer存储单元写入数据
    • 在发送的帧的ID都是相同的情况下,编号越小的TX Buffer具备更高的发送优先级
    • TX Buffer里面帧的ID越小,发送优先级越高
    • TX Buffer和TX FIFO混用的情况下,TX Buffer里面某个帧的ID值如果小于FIFO里面下一个发送帧的ID,则Buffer里的具有更小ID的帧会优先发送

CAN 过滤器工作流程说明

在这里插入图片描述

  • CAN 帧过滤器处理流程:
    • 根据帧ID判定是标准帧还是扩展帧
    • 判断是否为远程帧
      • 未使能远程帧接收则直接丢弃接收到的远程帧
    • 判断是否开启了帧过滤器
      • 未开启任何过滤器则认为接收的帧不匹配
      • 有开启过滤器则执行过滤规则
    • 判断接收的帧是否满足匹配规则
      • 如拒绝接收不满足匹配规则的帧则直接丢弃
      • 满足匹配规则的帧将会被放入接收缓存区
    • 判断接收缓存区是否空闲
      • 缓存区未空则存储接收的数据帧
      • 缓存区满(阻塞模式)则丢弃接收的数据帧

CAN 过滤器的配置

在这里插入图片描述

  • Store in RX FIFOx:
    • 满足过滤规则的帧将存储在指定的FIFO中
  • Set Priority:
    • 接收的帧标记优先级并不存储
    • 会触发HPM(High Priority Message)中断
  • Set Priority and store in RX FIFO x:
    • 满足过滤规则的帧将存储在指定的FIFO中
    • 接收的帧标记为高优先级
    • 会触发HPM(High Priority Message)中断
    • 标记为高优先级的帧需要遵循先入先出原则
  • Store into RX Buffer:
    • 满足过滤规则的帧将存储在对应的Buffer中
    • Buffer中的数据必须及时处理
    • 否则新收的数据会被拒收

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/560883.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

通过linux工具iftop命令查看视频监控平台是否收到监控摄像头的视频流(视频监控平台接收和转发的视频流)

目录 一、需求描述 二、解决思路 (一)问题分析 (二)解决思路 1、通过抓包的方式 2、通过一些linux的网络监视工具 三、需求实现 (一)抓包工具 1、tcpdump 2、Wireshark 3、tcptrace &#xff0…

OpenHarmony 网络与连接—RPC连接

介绍 本示例使用ohos.rpc 相关接口,实现了一个前台选择商品和数目,后台计算总价的功能,使用rpc进行前台和后台的通信。 效果预览 使用说明: 点击商品种类的空白方框,弹出商品选择列表,选择点击对应的商品…

天软因子数据系列课堂回顾——“委托订单:流动性因子”

高频因子库4月更新,新增5张表单,51个因子。目前,高频因子数量扩容到628个,涵盖了从2000年开始的全A市场。本次“天软因子数据系列课堂”在线分享的即是最新发布因子列表之一的流动性因子,剖析微观角度下因子的底层逻辑…

什么是代理IP?如何正确使用代理IP?

代理IP(Proxy IP)是一种网络技术,它允许用户通过一个中介服务器(即代理服务器)来访问互联网。具体来说,代理IP隐藏了用户的真实IP地址,使用第三方的IP地址进行网络访问。当用户发起网络请求时&a…

Linux进阶篇:Centos7搭建smb服务

Centos7搭建smb服务 1 smb介绍 Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域…

数据结构-基于ArrayList的源码模拟

文章目录 继承关系 :1. 构造方法的模拟2. 扩容机制的分析3. 查找方法的模拟4. 获取,修改元素的方法模拟5. 添加元素的模拟6. 删除元素的模拟7. removeAll与retainAll的模拟总结: 边缘方法以及总代码 继承关系 : 1. 构造方法的模拟 源码中我们的ArrayList的构造方法给出了三种实…

基于SpringBoot+Vue的便利店管理系统 免费获取源码

项目源码获取方式放在文章末尾处 项目技术 数据库:Mysql5.7/8.0 数据表:11张 开发语言:Java(jdk1.8) 开发工具:idea 前端技术:vue 后端技术:SpringBoot 功能简介 (有文档) 项目获取关键字&#…

tcp-learner 数据包分析 20240420

输入输出: 数据包分析: learner和Adapter建立连接。 Learner让Adapter发送RST Adapter没有从SUT抓到任何回复,于是向learner发送timeout learner给adapter发送reset命令,让SUT重置。 这是第一次初始化,由于Adapter和…

7. DAX 时间函数-- DATE 日期--TOTALMTD、TOTALQTD、TOTALYTD

函数名目的语法返回值TOTALMTD计算当前上下文中该月份至今的表达式的值 。TOTALMTD ( <表达式>, <日期列>, [<筛选器>] )标量 表示表达式的标量值&#xff0c;在“日期”中给定日期&#xff0c;计算当前月份至今的日期 。TOTALQTD计算当前上下文中该季度至今…

452. 用最少数量的箭引爆气球[排序+贪心]

https://leetcode.cn/problems/minimum-number-of-arrows-to-burst-balloons/description/?envTypestudy-plan-v2&envIdtop-interview-150 题目描述 有一些球形气球贴在一堵用 XY 平面表示的墙面上。墙面上的气球记录在整数数组 points &#xff0c;其中points[i] [xst…

C++ 内存分区管理

一、栈区&#xff08;Stack&#xff09; 栈区用来存储函数的参数值、局部变量的值等数据。栈区是自动分配和释放的&#xff0c;函数执行时会在栈区分配空间&#xff0c;函数执行结束时会自动释放这些空间。栈区的数据是连续分配的&#xff0c;由系统自动管理。 注意事项&…

大话设计模式-依赖倒转原则

依赖倒转原则 在大话设计模式这本书中&#xff0c;作者通过电话修电脑这个例子引入了面向对象设计的基本原则之一&#xff1a;依赖倒转原则。 概念 依赖倒转原则是面向对象设计的基本原则之一&#xff0c;它用于减少类之间的耦合&#xff0c;提高系统的灵活性和可维护性。在…

明道云HAP合作伙伴计划全解析:开辟业务增长新路径

什么是明道云HAP合作伙伴计划&#xff1f; 明道云采纳的是增值伙伴商业模式。在这个模式下&#xff0c;合作伙伴通过平台型产品为终端客户提供定制应用、行业解决方案、赋能培训等增值活动&#xff0c;从而在大幅降低交付成本的同时获得多来源的收入&#xff0c;提高经营绩效水…

PLC中连接外部现场设备和CPU的桥梁——输入/输出(I/O)模块

输入&#xff08;Input&#xff09;模块和输出&#xff08;Output&#xff09;模块简称为I/O模块&#xff0c;数字量&#xff08;Digital&#xff0c;又称为开关量&#xff09;输入模块和数字量输出模块简称为DI模块和DQ模块&#xff0c;模拟量&#xff08;Analog&#xff09;输…

RK3568 android11 修改关机弹窗界面

需要修改关机弹窗界面&#xff0c;当前界面我已经按照客户需求去掉emergency 但是客户需要按其他区域可以实现返回&#xff0c;也就是点击黑色背景取消dialog 嗑代码发现黑色布局为&#xff1a; <node index"0" text"" resource-id"com.android.…

【Redis】string数据类型

文章目录 常用命令setsetnx & NXXXsetex & EXpsetex & PX msetget & mgetincr & decrincrby & decrbyincrbyfloatappendgetrangesetrangestrlen 内部编码 字符串类型是 Redis 最基础的数据类型。 在redis中所有的键都是 string 类型&#xff0c;其他的…

oracle操作系统OS认证和密码文件认证

1 说明 1.1 常见认证方式 Oracle登录认证方式主要涉及到如何验证用户身份以访问数据库。Oracle数据库提供了多种认证机制来确保数据的安全性和访问控制&#xff0c;每种方式都有其特定的使用场景和安全性考虑。以下是Oracle中常见的登录认证方式&#xff1a; 1、基于操作系统…

Vue-鼠标悬浮在缩略图图片上,弹出原图

使用Popover 弹出框实现 <template><div><el-popoverplacement"right"width"400"trigger"hover"><img src"https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x36…

三维天地低代码平台实现客户需求的快速交付与灵活定制

— 款合格的低代码平台应具备架构稳定、 产品质量高、 交付速度快、 运维简便的特点, 能快速实现业务需求到系统功能落地。 二十余年来, 北京三维天地科技股份有限公司一直专注于实验室信息化管理 领域, 旗下 SW- LIMS 已在化工、 环保、 食品、 科研等二十余个行业广泛应用,服…

PyTorch and Stable Diffusion on FreeBSD

Stable Diffusion在图像生成领域具有广泛的应用和显著的优势。它利用深度学习和扩散模型的原理&#xff0c;能够从随机噪声中生成高质量的图像。 官网&#xff1a;GitHub - verm/freebsd-stable-diffusion: Stable Diffusion on FreeBSD with CUDA support FreeBSD下难度主要…