文章目录
- 1. 概述
- 2. 特点
- 3. 功能描述
- 4. 模式操作
1. 概述
S32K144的CAN模块由三个,符合ISO 11898和CAN2.0B协议规范,其中CAN0支持CAN FD,具体资源情况如下:
CAN模块的系统框图如下图所示。
协议引擎(PE)用于管理CAN总线的通信:
- 通过RAM访问来接收和发送消息帧
- 验证接收的消息
- 执行错误处理
- 检测CAN FD消息
控制器主机接口(CHI)子模块管理用于接收和传输的消息缓冲区选择,负责处理 CAN FD 和非 CAN FD 消息格式的仲裁和 ID 匹配算法。
总线接口单元(BIU)子模块控制对内部接口总线的访问,以便与 CPU 及其他模块建立连接。时钟、地址和数据总线、中断输出、直接内存访问(DMA)和测试信号都通过 BIU 进行访问。
2. 特点
- 符合CAN2.0B 的CAN和CAN FD协议
- 遵从ISO 11898-1标准
- 可配置存储8,16,32,64字节长度的邮箱
- 每个邮箱都可以配置为接收和发送
- 每个邮箱独立的接收掩码寄存器
- Rx FIFO,存储容量6帧,支持DMA功能
- 支持传输打断
- 灵活的消息缓冲区(MBs),总计 32 个消息缓冲区,每个消息缓冲区的数据长度为 8 字节,可配置为接收(Rx)或发送(Tx)
- 可编程的CAN协议接口时钟源,可以在外设时钟或晶振时钟选择
- 未被接收或传输结构使用的RAM可以用作通用RAM空间
- 只听模式
- 可编程的回环模式支持自测操作
- 可编程传输优先级方案:最低ID、最低缓冲区编号或最高优先级
- 基于16位自由运行定时器的时间戳,带有可选的外部时间刻度
- 全局网络时间,由特定消息同步
- 可屏蔽中断
- 独立于传输介质(假设使用外部收发器)
- 由于针对高优先级消息的仲裁方案,可以缩短延迟时间
- 低功耗模式或与接收帧匹配(伪装网络)
- 当以更快的数据速率传输 CAN FD 消息时的收发器延迟补偿功能
- 远程帧可以被自动管理或被软件管理
- CAN位时间设置和配置位只能在冻结模式下写入
- Tx邮箱状态(最低优先级缓冲区或空缓冲区)
- 用于接收帧的标识符接受过滤器命中指示器(IDHIT)寄存器
- 在状态 1 寄存器中的错误里,SYNCH 位可用,以表明该模块与 CAN 总线是同步的
- 传输消息的CRC状态
- Rx FIFO全局掩码寄存器
- 在匹配过程中,邮箱和接收 FIFO 之间的可选优先级
- 强大的接收 FIFO ID 过滤功能,能够将传入的 ID 与 128 个扩展 ID、256 个标准 ID 或 512 个部分(8 位)ID 进行匹配,具有多达 32 个单独的掩码功能
- 与以前的FlexCAN版本100%向后兼容
- 在低功耗:停止模式下支持虚拟网络功能
3. 功能描述
FlexCAN 模块是一个具有非常灵活的邮箱系统的 CAN 协议引擎,用于发送和接收 CAN 消息帧。该邮箱系统由一组消息缓冲区(MB)组成,用于存储配置和控制数据、时间戳、消息 ID 和数据。前 38 个 MB 对应的内存可配置为支持具有强大 ID 过滤机制的 FIFO 接收方案,能够根据 ID 表(最多 128 个扩展 ID 或 256 个标准 ID 或 512 个 8 位 ID 切片)检查传入帧,并为多达 32 个 ID 过滤表元素提供单独的掩码寄存器。
对于经典 CAN 帧,支持通过 FIFO 和邮箱同时接收。对于 CAN FD 帧,仅支持通过邮箱接收。对于邮箱接收,一种匹配算法使得仅将接收到的具有在 ID 字段中编程的相同 ID 的帧存储到 MB 中成为可能。一种掩码方案使得将 MB 上编程的 ID 与接收到的 CAN 帧上的一系列 ID 进行匹配成为可能。对于传输,一种仲裁算法根据消息 ID(可选地由 3 个本地优先级位增强)或 MB 顺序决定要传输的 MB 的优先级。
4. 模式操作
- 正常模式(用户或管理员)
在正常模式下,模块接收和/或发送消息帧,正常管理错误,并启用所有CAN协议功能。用户和主管模式在访问某些受限控制寄存器方面有所不同。 - 冻结模式
在这种模式下,不会进行帧的发送或接收,并且会失去与 CAN 总线的同步性。 - 回环模式
在这种模式下,FlexCAN 执行一个内部回环,可用于自测试操作。发送器的位流输出在内部反馈到接收器输入。Rx CAN 输入引脚被忽略,Tx CAN 输出进入隐性状态(逻辑’1’)。FlexCAN 在发送时的表现与正常情况一样,并将自己发送的消息视为从远程节点接收的消息。在这种模式下,FlexCAN 忽略在 CAN 帧确认字段的 ACK 时隙期间发送的位,以确保正确接收自己的消息。发送和接收中断都会产生。 - 只听模式
在这种模式下,传输被禁用,所有错误计数器被冻结,模块在 CAN 错误被动模式下运行。只有被另一个 CAN 站确认的消息才会被接收。如果 FlexCAN 检测到一个未被确认的消息,它将标记一个 BIT0 错误(不改变 REC),就好像它试图确认该消息一样。 - CAN FD激活模式
在这种模式下,FlexCAN 能够以交错方式发送和接收所有按照 CAN FD、标准(2.0)以及 2.0B 协议格式化的消息。CPU 可以通过在冻结模式下配置 MCR[FDEN] 将 FlexCAN 设置为 CAN FD 激活模式。
CANFD和经典CAN的差异:
对于低功耗操作,FlexCAN模块:
- 模块禁止模式
CPU 置位 MCR[MDIS] 且 FlexCAN 置位 MCR[LPM_ACK] 时,模块进入这种低功耗模式。在该模式下,模块会发出请求以禁用通往 CAN 协议引擎和控制器主机接口子模块的时钟。 - 停止模式
当在芯片级请求进入停止模式且 FlexCAN 置位 MCR[LPM_ACK] 时,会进入这种低功耗模式。在停止模式下,模块将自身置于非活动状态,然后通知 CPU 可以全局关闭时钟。当停止模式请求被移除时,会退出此模式 - 模拟网络模式
可以选择此模式与停止模式(Stop mode)一起运行。在进入这些低功耗模式之一之前,必须置位 MCR[PNET_EN]。在低功耗模式下,CHI 子模块的时钟会被关闭,而 CAN_PE 子模块的时钟保持开启,因此接收过程仍然处于活动状态,可以过滤接收到的消息,其行为由配置寄存器定义。当检测到唤醒事件时,系统会发出唤醒中断(Wake Up interrupt)。