英飞凌Tc275使用记录:Can邮箱号确认与Busoff寄存器设置方法

news2024/11/25 4:39:39

目录

1、消息后处理

2、消息暂存

3、Tc275 Busoff的寄存器手动处理


1、消息后处理

        消息对象成功接收或发送帧后,可以通知CPU对消息对象执行后处理。MultiCAN+模块的后处理由两个部分组成:

  1. 消息中断触发后处理。
  2. 消息挂起寄存器将挂起的消息中断收集到一个公共结构中进行后处理。

      消息后处理,一般都会到CanIf这个层面

        当接收到的帧存储到消息对象中或成功传输帧时,可以发出消息中断。对于每个消息对象,可以生成一个发送中断和一个接收中断,并将其路由到16条can中断输出线之一(如下图所示)。接收中断也发生在由FIFO或网关动作引起的帧存储事件之后。在消息对象状态寄存器中的状态位TXPND和RXPND总是在成功发送/接收后设置,无论是否使能各自的消息中断。

        提供了消息对象的第三个FIFO完全中断条件。如果位场为MOFCRn。设置了OVIE(溢出中断使能),FIFO完全中断将根据实际消息对象类型被激活。

        在接收FIFO基础对象(MOFCRn)的情况下。MMC = 0001), FIFO完全中断被路由到中断输出线INT_Om(由发送中断节点指针MOIPRn.TXINP定义)。

        在传输FIFO基础对象(MOFCRn)的情况下。MMC = 0010g), FIFO完全中断被路由到中断输出线INT_Om,由接收中断节点指针MOIPRn.RXINP定义。        

2、消息暂存

        当一个消息中断请求产生时,在一个消息暂挂寄存器中设置一个消息暂挂位。有8个消息等待寄存器,MSPNDk (k= 0-7),每个寄存器有32个等待位可用。下图给出了在芯片上实现最多8个message pending Registers的情况下,message pending bits的分配示意图。

        也是刚发现的一个地方,每个邮箱都可以设置为是否为中断的形式,见如下寄存器。

例如:TC275可以实现255个硬件邮箱的配置,假设第0、1、2、3、4、5、共6个发送邮箱使能中断,只需要配置

MOFCR0 = 0x00020000

MOFCR1 = 0x00020000

MOFCR2 = 0x00020000

MOFCR3 = 0x00020000

MOFCR4 = 0x00020000

MOFCR5 = 0x00020000

MSIMASK = 0x3F也就是 11 1111B,共6个bit在使用即可。

使用接收报文的话MSIMASK也是这样子的,获取邮箱号的寄存器是

一旦获取ID之后,也就是在中断里面执行的内容,需要清除对应的暂存寄存器,也就是

在上面的图示里面显示了,MSPND总共有8个,寄存器是32位的,代表着有256个邮箱。

例子里面用了6个邮箱(0~5),属于MSPND0,不管是发送还是接受,都需要在中断里面清除对应的MSPND位,例如3邮箱也就是将MSPND0的第三个bit清零即可。在中断里面配置的时候,可以通过MSID寄存器来读取邮箱号。

举个邮箱接受中断的例子

For(i = 0; i < 8; i++)/*此处为了轮询MSPND的255个邮箱,哪个在进中断来着*/
{
    MSIMASK = MASK[i];/*注意一下初始化的时候MASK[0] = 0x3F,其他的等于0,因为我们只初始化了0-5共6个邮箱*/
    While(MSID[i] ! = 0x00000020)/*MSID的默认值为0x20,所以当不等于0x20的时候就是已经等到邮箱寄存器准备好了*/
    {
        MailBoxId = 32*i +MSID[i];	/*获取邮箱号*/
        RXFunction(MailBoxId ); /*接收或者发送到CanIf的函数,函数内部用户根据MailBoxId 看下是用来做诊断还是XCP之类的*/
        MSPND[i] = ~(1<<MSID[i]);/*清除暂存寄存器*/
    }
}

3、Tc275 Busoff的寄存器手动处理

主要设置两个节点寄存器

下图寄存器显示了busoff与否,假设为1,就是BUSOFF

BusoffState = NCR & 0x0000 0001 ;

ALERT寄存器

ALER = ((NSR &0x0000 0020) >>5)

上述这两个寄存器为1表示处于busoff状态

Illd里面的解释如下:

/*

Bus-off error check:

---------------------

The ALERT bit is set upon the occurrence of one of the following events

(the same events which also trigger an alert interrupt if ALIE is set):

1. A change of bit NSRx.BOFF

2. A change of bit NSRx.EWRN

3. A List Length Error, which also sets bit NSRx.LLE

4. A List Object Error, which also sets bit NSRx.LOE

5. Bit INIT has been set by hardware

Note:

- List error occurance is ruled out because list is not changed at run

time by the driver. So LOE and LLE bits need not be checked.

- Points 1,2 and 5 constitute BusOff condition

In the driver EWRN level is set to be equal to BOFF error level.

So when EWRN triggers ALERT bit, it also means bus-off.

When bus-off happens, INIT is set by "hardware".

So is it enough to check ALERT bit alone to see if there was bus-off

event triggered? No. Resetting of EWRN and/or BOFF also triggers

ALERT bit to be set. To differentiate this scenario, both ALERT

and INIT bit should be checked.

*/

清除busoff的时候进行如下操作

NSR = 0x0000 03DF;

NCR = NCR & (~ 0x0000 00041);

以此达到清除busoff重启对应节点的目的。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【漏洞复现】maccms苹果cms 命令执行漏洞

漏洞描述 感谢提供更多信息。“苹果CMS” 似乎是指 “Maccms”&#xff0c;这是一款开源的内容管理系统&#xff0c;主要用于搭建视频网站。Maccms 提供了一套完整的解决方案&#xff0c;包括用户管理、视频上传、分类管理、数据统计等功能&#xff0c;使用户能够方便地创建和…

【整顿C盘】pycharm、chrome等软件,缓存移动

C盘爆了&#xff0c;特来找一下巨大的软件缓存&#xff0c;特此记录&#xff0c;跟随的各大教程&#xff0c;和自己的体会 一、爆炸家族JetBrains 这个适用于pycharm、idea、webstorm等等&#xff0c;只要是JetBrains家的&#xff0c;2020版本以上&#xff0c;都是一样的方法 p…

【MySQL】索引和事务(B树、B+树图解原理)

一、索引 1.1 什么是索引&#xff1f; 索引是一种特殊的文件&#xff0c;包含着对数据表里所有记录的引用指针。可以对表中的一列或多列创建索引&#xff0c;并指定索引的类型&#xff0c;各类索引有各自的数据结构实现。 1.2 索引的作用 &#x1f693;&#xff08;1&#…

python科研绘图:面积图

目录 1、面积图 2、堆积面积图 1、面积图 面积图是一种数据可视化图表&#xff0c;用于展示数据随时间或其他有序类别的变化趋势。它与折线图相似&#xff0c;但在展示数据变化的同时&#xff0c;面积图还强调了各个数据点之间的累积关系。这种图表通常通过在折线下方填充颜…

【读点论文】FMViT: A multiple-frequency mixing Vision Transformer-期待源码

FMViT: A multiple-frequency mixing Vision Transformer Abstract transformer模型近年来在计算机视觉任务中得到了广泛的应用。然而&#xff0c;由于自关注的时间和内存复杂度是二次的&#xff0c;并且与输入token的数量成正比&#xff0c;大多数现有的(Vision transformer,…

IDEA配置tomcat运行环境

前言 当我们使用springboot进行开发时&#xff0c;因为已经内嵌了tomcat&#xff0c;我们不用手动配置tomcat即可运行。 我们的项目在写完后&#xff0c;会在服务器上的tomcat内运行&#xff0c;所以我们测试时&#xff0c;也需要在本地配置tomcat环境。本文便介绍了如何使用…

YOLOv8环境搭建

YOLOv8环境搭建 torch环境安装requestment.txt文件中的包安装ultralytics调用 torch环境 使用的是python3.9版本 pip install torch-2.1.0cu118-cp39-cp39-linux_x86_64.whl torchvision0.16.0 torchaudio2.1.0 --index-url https://download.pytorch.org/whl/cu118安装reques…

mysql索引学习案例

简单的学习一下mysql普通索引 这是一个小的案例 一、创建表SQL CREATE TABLE group_order (id int(11) NOT NULL AUTO_INCREMENT,group_seq varchar(64) COLLATE utf8mb4_bin NOT NULL COMMENT 拼单号,group_status int(8) NOT NULL COMMENT 100 待提货, 200 已提货, 300 已…

Linux_虚拟机常用目录汇总

根目录&#xff08;cd /&#xff09;&#xff1a;/ 表示根目录&#xff0c;cd和 / 之间有个空格&#xff01; 用户目录&#xff08;cd ~&#xff09;&#xff1a;~ 表示用户目录&#xff0c;也称为家目录。cd 和 ~ 之间有个空格&#xff01; 当前路径&#xff1a;执行 pwd 指令…

component 动态组件的用法

一&#xff1a;前言 <component></component> 标签是Vue框架自定义的标签&#xff0c;它的用途就是可以动态绑定我们的组件&#xff0c;根据数据的不同需求来更换使用不同的组件。 在最上方的图片中&#xff0c;就是使用的 Element Plus 的 Tags 组件&#xff0c;根…

接口自动化测试如何实现?5个步骤轻松拿捏!

最近接到一个接口自动化测试的case&#xff0c;并展开了一些调研工作&#xff0c;最后发现&#xff0c;使用pytest测试框架并以数据驱动的方式执行测试用例&#xff0c;可以很好的实现自动化测试。这种方式最大的优点在于后续进行用例维护的时候对已有的测试脚本影响很小。当然…

物联网AI MicroPython学习之语法 I2C总线

学物联网&#xff0c;来万物简单IoT物联网&#xff01;&#xff01; I2C 介绍 模块功能: I2C Master设备驱动 接口说明 I2C - 构建硬件I2C对象 函数原型&#xff1a;I2C(id, scl, sda, freq)参数说明&#xff1a; 参数类型必选参数&#xff1f;说明idintYI2C外设&#xff…

linux三次握手、四次挥手

TCP协议是一个安全的、面向连接的、流式传输协议&#xff0c;所谓的面向连接就是三次握手&#xff0c;对于程序猿来说只需要在客户端调用connect()函数&#xff0c;三次握手就自动进行了。先通过下图看一下TCP协议的格式&#xff0c;然后再介绍三次握手的具体流程。 1.tcp协议…

python正则匹配示例

需要再如下图的txt中把 1100开头的订单号 提取出来&#xff0c;这个时候需要用到正则表达式 import rewith open(source.txt, r) as file:lines file.readlines()target \1100 target_lines [] for line in lines:if line.find(target) ! -1: print("match string…

java的Exception.getMessage为null

之前捕获异常后调用异常的getMessage写日志&#xff0c;日志写的竟然是null&#xff0c;不可思议。发现要调用异常的getCause().getMessage()才能得到异常信息 刻意把密码改错&#xff0c;让异常直达界面&#xff0c;免得有问题时候只能猜

LeetCode算法题解|LeetCode738. 单调递增的数字、LeetCode968. 监控二叉树

一、LeetCode738. 单调递增的数字 题目链接&#xff1a;738. 单调递增的数字 题目描述&#xff1a; 当且仅当每个相邻位数上的数字 x 和 y 满足 x < y 时&#xff0c;我们称这个整数是单调递增的。 给定一个整数 n &#xff0c;返回 小于或等于 n 的最大数字&#xff0c…

Backblaze 2023 Q3硬盘故障质量报告解读

作为一家在2021年在美国纳斯达克上市的云端备份公司&#xff0c;Backblaze一直保持着对外定期发布HDD和SSD的故障率稳定性质量报告&#xff0c;给大家提供了一份真实应用场景下的稳定性分析参考数据。2023年度之前发布的两次报告&#xff0c;请参考&#xff1a; Backblaze发布2…

Vue-Pinia

目录 Pinia状态管理库 使用步骤 1、安装Pinia 2、在vue应用实例中使用pinia 3、在src/stores/token.js中定义stores 4、在组件中使用store axios请求拦截器 代码实现 Pinia状态管理库 Pinia是Vue的专属状态管理库&#xff0c;它允许你跨组件或页面共享状态 一般在登录时…

第一百七十五回 如何创建放射形状渐变背景

文章目录 1. 概念介绍2. 实现方法3. 代码与效果3.1 示例代码3.2 运行效果 4. 内容总结 我们在 上一章回中介绍了"如何创建扇形渐变背景"相关的内容&#xff0c;本章回中将介绍" 如何创建放射形状渐变背景"。闲话休提&#xff0c;让我们一起Talk Flutter吧…

根据店铺ID或店铺昵称或店铺链接获取阿里巴巴店铺所有商品数据接口|阿里巴巴店铺整店商品数据接口|阿里巴巴API接口

阿里巴巴店铺所有商品数据接口是阿里巴巴开放平台提供的API接口之一&#xff0c;它可以帮助开发者获取到店铺内所有商品的信息&#xff0c;包括商品的ID、标题、价格、图片、链接等。通过该接口&#xff0c;开发者可以快速地获取到大量的商品数据&#xff0c;并进行进一步的数据…