S32K14x FlexCAN入门

每个系列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.hqwc.cn/news/15359.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

应对Python爬虫IP被封的策略及建议。

我们在进行数据抓取使用代理ip的时候需要有一些约束规定,才能保证我们持续稳定的抓取数据。 大概整理了一下,需要注意以下几点,仅供参考: 1、使用高质量的代理服务器:选择一些可靠的代理服务器,确保它们的…

Intellij IDEA 初学入门图文教程(八) —— IDEA 在提交代码时 Performing Code Analysis 卡死

在使用 IDEA 开发过程中,提交代码时常常会在碰到代码中的 JS 文件时卡死,进度框上显示 Performing Code Analysis,如图: 原因是 IDEA 工具默认提交代码时,分析代码功能是打开的,需要通过配置关闭下就可以了…

.net项目开发-EF框架解决添加默认值问题

文章目录 前言EF中核心类DbContextDbContext中的SaveChanges()方法重写SaveChanges()方法注意点-Modified 其它状态下的实体如何操作 前言 最近开发.net项目,持久层用的是EF框架,也是第一次使用这个框架,用这个框架的好处就是基于实体的开发…

MyBatis中的动态SQL(sql标签、where标签、set标签、批量增加与批量删除)

目录 sql标签 ​编辑 where标签 set标签 foreach标签 批量增加 批量删除 将基础SQL语句中重复性高的增加它的复用性&#xff0c;使得sql语句的灵活性更强 sql标签<sql> <sql id"text">select * from user</sql><select id"selectA…

基于simulink处理监控视频以选择包含运动的帧(附源码)

一、前言 此示例演示如何处理监控视频以选择包含运动的帧。安全问题要求使用摄像机对重要位置进行持续监控。为了有效地记录、查看和存档这些海量数据&#xff0c;您可以减小视频帧大小或减少录制的视频帧总数。此示例说明了后一种方法。在其中&#xff0c;相机视野中的运动会…

Win10 显示WLAN不安全,并且链路速度54/54 (Mbps),通过K3C路由器修改协议解决,无线网卡连接速度只有54Mbps

省流 换个安全协议就好了。 使用有线等同隐私(WEP)或临时密钥完整性协议(TKIP)加密配置时&#xff0c;客户端设备的WiFi数据传输速率不会超过54Mbps&#xff0c; 问题 我用的是K3C路由器&#xff0c;今天跑百度网盘感觉很奇怪&#xff0c;突然就只有10MB/s了&#xff0c;感觉…

Go 程序是怎样跑起来的

Go 程序是怎样跑起来的 引入 我们从一个 helloworld 的例子开始 package mainimport "fmt"func main() {fmt.Println("hello world") }用 vim 要打开&#xff0c;输入命令&#xff1a; :%!xxd下面是输出 00000000:7061 636b 6167 6520 6d61 696e 0a0a…

短视频矩阵源码技术开发

1.短视频矩阵源码是一种常见的视频编码标准&#xff0c;它通过将视频分成多个小块并对每个小块进行压缩来实现高效的视频传输。在本文中&#xff0c;我们将介绍短视频矩阵的原理和实现&#xff0c;并提供示例代码。 2.短视频矩阵系统源码开发链路包括需求分析、技术选型、系统…

第42节:cesium 火焰效果(含源码+视频)

结果示例: 完整源码: <template><div class="viewer"><!-- :shouldAnimate="true" 添加动画 --><vc-viewer @ready

在VSCode中导出安装的所有插件并在其他计算机进行导入

插件导出&#xff1a; 1、切换要导出的文件路径 cd D:\桌面文件\DownLoads2、导出到extensions文本 code --list-extensions > extensions.txt如图所示&#xff1a; 插件导入&#xff1a; 当您在另一台计算机上导出了 Visual Studio Code 编辑器已安装的扩展程序列表…

Spring 系列1 -- 初识Spring

目录 1. Spring是什么? 2. DI 概念说明 3. 总结 1. Spring是什么? 我们通常所说的Spring指的是Spring Framework(Spring框架),他是一个开源框架,有着庞大的社区.Spring ⽀持⼴泛的应⽤场景&#xff0c;它可以让 Java 企业级的应用程序开发起来更简单.用一句话来概述就是Spri…

协议分层与OSI参考模型【图解TCP/IP(笔记三)】

文章目录 协议分层与OSI参考模型协议的分层理解协议的分层OSI参考模型OSI参考模型中各个分层的作用 协议分层与OSI参考模型 协议的分层 OSI参考模型将通信协议中必要的功能分成了7层。通过这些分层&#xff0c;使得那些比较复杂的网络协议更加简单化。 在这一模型中&#xf…