S32K14x FlexCAN入门

news2024/9/21 16:34:06

每个系列S32K14x支持的邮箱个数。

基本每个系列的FlexCAN0可以支持32个报文缓存和支持CANFD。

中断源

mail 最多有32个mail

• 灵活的消息缓冲区 (MB),总共 32 个消息缓冲区,数据长度为 8 字节
每个,可配置为 Rx 或 Tx

过滤掩码功能


强大的 Rx FIFO ID 过滤,能够将传入 ID 与 128扩展、256 个标准或 512 个部分(8 位)ID,最多具有 32 个单独掩码能力。
• 与以前的FlexCAN 版本100% 向后兼容
• 支持低功耗下的假装网络功能:停止模式

消息缓冲区存储在FlexCAN 模块专用的嵌入式 RAM。

MB结构
FlexCAN收到和发送的报文会放在这一片message buffer 报文缓存区中,以下是FlexCAN,有16个MB的缓存结构,到到Data Byte 63。

如果FlexCAN0有32MB,结构大概是这样,会到Data Byte 127.

通过DS调试

看到这里估计对32MB和16MB有些不能理解,我以标准CAN计算。一个MB的结构 2个字帧首+2个字的数据,总共是4个字(16个字节)。FlexCAN0有128个Data Byte,128/4=32MB,如果FlexCAN只有64Data Byte,64/4=16MB.(MB可以看成是邮箱mail)
如果是支持FD的话,FlexCAN0有128个Data Byte,CANFD数据占64个字节(16字),一个MB占用 18个字,128/18=7.

MB前两个字的介绍

EDL - 扩展数据长度
该位区分 CAN 格式和 CAN FD 格式帧。 EDL 位
不得为配置为具有代码字段 0b1010 的 RANSWER 的消息缓冲区设置

BRS - 比特率开关
该位定义是否在 CAN FD 格式帧内切换比特率。
ESI - 错误状态指示器
该位指示发送节点是主动错误还是被动错误。
CODE - 消息缓冲区代码
该 4 位字段可由 CPU 和 FlexCAN 模块访问(读或写)
本身,作为消息缓冲区匹配和仲裁过程的一部分。
接收

发送

过滤

SRR
固定隐性位,仅在扩展格式中使用。 用户必须将其设置为 1
传输(Tx 缓冲区)并将与 CAN 总线上接收到的值一起存储
Rx 接收缓冲区。 它可以被认为是隐性的或显性的。 如果 FlexCAN
接收到该位为显性位,则将其解释为仲裁丢失。
1 = 隐性值对于扩展格式帧中的传输是强制的
0 = 显性不是扩展格式帧中传输的有效值
IDE - ID 扩展位
该字段标识帧格式是标准的还是扩展的。
1 = 扩展帧格式
0 = 帧格式为标准
RTR - 远程传输请求
该位影响远程帧的行为,并且是接收过滤器的一部分。如果 FlexCAN 将该位发送为“1”(隐性)并接收为“0”(显性),则
解释为仲裁损失。 如果该位传输为“0”(显性),则如果
接收为“1”(隐性)时,FlexCAN 模块将其视为位错误。 如果值
接收到的值与发送的值匹配,则认为位传输成功。
1 = 指示当前 MB 可能有要发送的远程请求帧(如果 MB 为
德克萨斯州。 如果MB是Rx,则可以存储传入的远程请求帧。
0 = 表示当前MB有数据帧要发送。 在 Rx MB 中可能是
在匹配过程中考虑。
笔记
配置 CAN FD 帧时,RTR 位必须为
被否定了。
TIME STAMP - 自由运行计数器时间戳
该 16 位字段是自由运行定时器的副本,在以下位置捕获 Tx 和 Rx 帧:
标识符字段的开头出现在 CAN 总线上的时间。
PRIO-本地优先级
该 3 位字段仅在 CAN_MCR 中设置 LPRIO_EN 位时使用,并且仅使
Tx 邮箱的意义。 这些位不被传输。 它们被附加到常规的
用于定义传输优先级的 ID。 请参阅仲裁过程。
ID——帧标识符
在标准帧格式中,仅 11 个最高有效位(28 至 18)用于帧
接收和发送情况下的识别。 18 个最低有效位被忽略。
在扩展帧格式中,所有位都用于接收和接收帧中的帧标识

功能模式

FlexCAN 模块具有以下功能模式:
• 正常模式(用户或管理员)Normal mode:
在正常模式下,模块操作接收和/或发送消息帧,
错误处理正常,所有 CAN 协议功能均启用。 用户和
管理员模式的不同之处在于对某些受限控制寄存器的访问。
• 冻结模式 Freeze mode:
当 MCR 中的 FRZ 位被置位时,冻结模式被启用。 如果启用,则冻结
当 MCR[HALT] 置位或芯片请求调试模式时进入模式
电平且 MCR[FRZ_ACK ] 由 FlexCAN 置位。 在此模式下,无
帧的传输或接收完成,并且 CAN 总线的同步性丢失。
• 环回模式 Loop-Back mode:
当控制 1 寄存器中的 LPB 字段为
断言。 在此模式下,FlexCAN 执行内部环回,可用于
自检运行。 发送器的比特流输出在内部反馈到
接收器输入。 Rx CAN 输入引脚被忽略,Tx CAN 输出转到
隐性状态(逻辑“1”)。 FlexCAN 的行为与平常一样
发送并将其自己发送的消息视为从
远程节点。 在此模式下,FlexCAN 忽略在 ACK 时隙期间发送的位。
CAN 帧确认字段确保其自身消息的正确接收。 两个都
产生发送和接收中断。
• 只听模式 Listen-Only mode:
当控制 1 寄存器中的 LOM 字段为
断言。 在此模式下,传输被禁用,所有错误计数器被冻结,并且
模块在 CAN 错误被动模式下运行。 仅接收由另一个 CAN 站确认的消息。 如果 FlexCAN 检测到一条消息
被确认后,它将标记一个 BIT0 错误(不更改 REC),就好像它是
试图确认该消息。
• CAN FD 主动模式 CAN FD Active mode:
在此模式下,FlexCAN 能够发送和接收所有消息
根据 CAN FD 协议和 CAN 2.0 协议 2.0 格式化
交错的时尚。 CPU 可以通过以下方式将 FlexCAN 设置为 CAN FD 主动模式:
在冻结模式下配置 MCR[FDEN] 位字段。

对于低功耗操作,FlexCAN 模块具有:

• 模块禁用模式Module Disable mode:
当 MCR 寄存器中的 MDIS 位被置位时,进入该低功耗模式
由 CPU 发出,LPM_ACK 由 FlexCAN 发出。 当禁用时,
模块请求禁用 CAN 协议引擎和控制器的时钟
主机接口子模块。 通过取消 MDIS 位来退出该模式
MCR 寄存器。 有关详细信息,请参阅模块禁用模式。
• 停止模式 Stop mode:
当在芯片级请求停止模式并且
MCR 寄存器中的 LPM_ACK 位由 FlexCAN 置位。 停止时
模式下,模块将自身置于非活动状态,然后通知 CPU
时钟可以全局关闭。 当停止模式时,会退出此模式
请求被删除。 有关详细信息,请参阅停止模式。
• 假装网络模式 Pretended Network Mode:
可以选择该模式与停止模式一起运行。 进入之前
其中一种低功耗模式必须置位 MCR 寄存器中的 PNET_EN 位。
一旦进入低功耗模式,CHI 子块时钟将关闭,CAN_PE 子块保持时钟,以便 Rx 接收过程仍然处于活动状态以过滤传入的数据消息(请参阅假装网络模式下的接收过程)配置寄存器(请参阅假想网络控制 1 寄存器 (CTRL1_PN))。一旦检测到唤醒事件,就会向系统发出唤醒中断。

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

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

相关文章

MyBatis中的缓存介绍与示例

目录 什么是缓存? 一级缓存 实例效果 二次缓存 示例效果 什么是缓存? 在用户访问相同数据时,需要对数据库多次访问,导致产生大量IO、读写硬盘的操作,效率低下,有了缓存首次访问时,查询到数…

【AI 绘图】Stable Diffusion WebUI 本地安装教程(Windows,兼容 NVIDIA、AMD 显卡)

文章目录 硬性要求Stable Diffusion 简介Stable Diffusion WebUI 简介1. 安装 Python 3.10.6(较新版本的 Python 不支持 torch)2. 安装 Git3. 下载 stable-diffusion-webui 存储库(此步二选一)3.1 NVIDIA GPU3.2 AMD GPU 4. webui…

Unity 3D 刚体初步

Unity 3D 中的 Rigidbody ,刚体,是用来模拟物理特性,模拟推力与扭力,实现现实世界中的物理学现象。 把在外力作用下,物体的形状和大小保持不变,而且内部各部分相对位置保持恒定(没有形变&#…

2.zabbxi操作和设置

文章目录 zabbxi操作和设置添加zabbix-agent客户端web端添加客户端 自定义监控模板(面试)监控模板下载地址案例1案例2 设置邮件报警自动注册和自动发现自动发现(对于agent是被动模式)自动注册(对于agent是主动模式&…

把同组人做的工作写在自己简历上,算造假吗?知道这个需求不是我做的人,这个世界可能不超过10个人!...

把同组人做的东西写在自己简历上,算造假吗? 一位网友问: 同组人做的需求,需求细节我完全可以讲得清楚。知道这个需求不是我做的人,全世界可能不超过10个人,我把这个需求写在自己简历上算简历造假吗&#xf…

go数据结构之slice与map

1. 切片 1. 切片结构定义 type slice struct {array unsafe.Pointerlen intcap int }array:引用的底层数组,动态数组,可以修改 如果多个切片的array指针指向同一个动态数组,则它们都可以对底层这个动态数组元素进行修改。 len:&#xf…

电商平台怎么搭建

越来越多商家致力于搭建并运营自己的私域电商平台,大家都清楚了解拥有自己电商平台的好处。有利于品牌的塑造与提升,提高品牌曝光度和认知度,提高客户黏性,降低渠道成本。 乔拓云平台模板式搭建电商平台,方法简单实用…

【Linux实验】I/O接口实验(Vmware虚拟机、S5P6818开发板)

这里写目录标题 一、实验目的二、实验内容三、实验设备四、实验步骤五、总结 一、实验目的 掌握S5P6818芯片的I/O口控制寄存器的配置。掌握实验掌握ARM芯片使用I/O口控制LED显示。熟练使用嵌入式交叉编译器。掌握Makefile文件书写。 二、实验内容 编写程序控制实验平台的发光…

ISCSI网络存储服务

ISCSI网络存储服务 应用场景: 服务器硬盘空间不足,可能导致服务器宕机。解决方案通常有两个,一是拷贝出服务器中的部分数据,空出存储空间,但在生产环境中,数据一般会很大,拷贝时间会很长&…

Kubernetes 的内部架构和工作机制

Kubernetes 是一个生产级别的容器编排平台和集群管理系统,能够创建、调度容器,监控、管理服务器。 操作系统的一个重要功能就是抽象,从繁琐的底层事务中抽象出一些简洁的概念,然后基于这些概念去管理系统资源。 Kubernetes 也是…

时间序列预测 | Matlab灰狼算法(GWO)优化极限梯度提升树XGBoost时间序列预测,GWO-XGBoost时间序列预测模型,单列数据输入模型

文章目录 效果一览文章概述部分源码参考资料效果一览 文章概述 时间序列预测 | Matlab灰狼算法(GWO)优化极限梯度提升树XGBoost时间序列预测,GWO-XGBoost时间序列预测模型,单列数据输入模型 评价指标包括:MAE、RMSE和R2等,代码质量极高,方便学习和替换数据。要求2018版本及…

AD为什么使用不了Keepout层来画板框(技巧分享)

AD为什么使用不了Keepout层 背景:keepout层作为板框层,是以前AD10的老版本延续下来的习惯,在新版本上需要单独放置! 在嘉立创平台上,习惯了用一个机械1层作为板框。当使用带有添加3D封装的pcb库,发现上面的…

Excel的技术分享

导出Excel的技术分享 Excel前置知识 首先大家就是在大学的计算机导论等课程肯定有了解过office全家桶中的工具之一Excel。在印象当中就是Excel是普遍使用的就是有03和07的两个不同的版本。请问一下大家就是能说一说就是这两个版本有什么区别吗? 显而易见就是从了直…

Elasticsearch【安装ES服务、安装kibana、Docker安装 、索引操作、文档操作】(二)-全面详解(学习总结---从入门到深化)

目录 Elasticsearch安装_安装ES服务 Elasticsearch安装_安装kibana Elasticsearch安装_Docker安装 Elasticsearch常用操作_索引操作 Elasticsearch常用操作_文档操作 Elasticsearch安装_安装ES服务 准备工作 1、 准备一台搭载有CentOS7系统的虚拟机,使用XSh…

(转载)支持向量机(SVM)的回归拟合(matlab实现)

与传统的神经网络相比,SVM具有以下几个优点: (1)SVM是专门针对小样本问题而提出的,可以在有限样本的情况下获得最优解。 (2)SVM算法最终将转化为一个二次规划问题,从理论上讲可以得到全局最优解,从而解决了传统神经网…

Python GUI编程利器:Tkinker中的布局管理器(10)

小朋友们好,大朋友们好! 我是猫妹,一名爱上Python编程的小学生。 和猫妹学Python,一起趣味学编程。 今日目标 学习Tkinter的三个布局管理器: pack布局管理器 gird布局管理器 place布局管理器 啥是布局管理器&am…

TCP流套接字编程(模拟多个客户端与服务器交互)

目录 一、ServerSocket API 1.1、ServerSocket构造方法 1.2、ServerSocket方法 二、Socket API 2.1、socket构造方法 2.2、socket方法 三、TCP 中的长短连接 四、示例 实现聊天室功能 五、存在的问题 一、ServerSocket API ServerSocket 是创建TCP服务端Socket的…

500个线程运行串行原因排查

场景:项目中有业务需要开启500个线程执行,需要证明有500个线程在执行。用的是一台128核的电脑。服务用docker启动的。所以理论上应该是要有128个线程并行执行的。 目录 一.证明有500个线程在执行(会发现并行度很低) 1.用top命令监控进程内的线程运行情…

netty学习(5):netty实现注册中心和发送JSON数据到指定的客户端

1. 实现:在netty客户端实现netty客户端注册功能,netty客户端需要发送注册消息到netty服务端。 2. 在父工程创建Message类,定义消息格式和消息类型 定义消息类型: package message;public enum MessageType {RegisterRequest,Re…

函数重载与函数递归

一、函数重载 定义:两个函数的函数名称相同,但是参数的个数或者类型不同 参考以下代码: //1.public static int add(int x,int y){return x y;}//2.与1构成重载public static int add(byte a,int b){return a b;}//3.与1构成重载public s…