当前位置:   article > 正文

S32K14x FlexCAN入门

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))。一旦检测到唤醒事件,就会向系统发出唤醒中断。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/144581
推荐阅读
相关标签
  

闽ICP备14008679号