ZHCAD88 October   2023 TMS320F280039

 

  1.   1
  2.   摘要
  3.   商标
  4. 引言
  5. DCAN 和 MCAN 之间的主要差异
  6. 模块初始化
    1. 3.1 DCAN 初始化
    2. 3.2 MCAN 初始化
    3. 3.3 初始化序列
    4. 3.4 模块初始化代码片段
  7. 位时序配置
  8. 消息 RAM 配置
  9. 中断处理
    1. 6.1 MCAN 中断源
    2. 6.2 DCAN 中断处理
    3. 6.3 MCAN 中断处理
  10. 发送数据
    1. 7.1 基本发送过程
      1. 7.1.1 使用 DCAN 发送
      2. 7.1.2 使用 MCAN 发送
    2. 7.2 MCAN 与 DCAN 发送过程差异
    3. 7.3 MCAN 发送概念
      1. 7.3.1 Tx 事件 FIFO
  11. 接收数据
    1. 8.1 接收简介
    2. 8.2 基本接收流程
      1. 8.2.1 DCAN 接收
      2. 8.2.2 MCAN 接收
    3. 8.3 过滤器元素
      1. 8.3.1 过滤器元素结构
    4. 8.4 Rx 缓冲器
      1. 8.4.1 在 Rx 缓冲器中接收
    5. 8.5 Rx FIFO
      1. 8.5.1 在 Rx FIFO 中接收
    6. 8.6 接收高优先级消息
  12. 避免网络错误
  13. 10参考资料

过滤器元素结构

标准(或扩展)过滤器元素由以下字段定义:

  • sft(或 eft)确定要实现哪种过滤器。
  • sfec(或 efec)确定要存储接受的帧的位置或是否要拒绝该帧。
  • sfid1sfid2(或 efid1efid2)确定哪些消息 ID 匹配。

各个函数可能根据过滤器类型而有所不同,如表 8-1表 8-2 所示:

表 8-1 标准过滤器元素参数
参数 说明
标准过滤器类型 (SFT) 0x0:从 SFID1 到 SFID2 的范围过滤器 (SFID1<= SFID2)
0x1:用于 SFID1 或 SFID2 的双 ID 过滤器
0x2:传统过滤器:SFID1 = 过滤器;SFID2 = 掩码
0x3:过滤器元素已禁用
标准过滤器元素配置 (SFEC) 0x0:禁用过滤器元素
0x1:如果过滤器匹配,则存储在 Rx FIFO 0 中
0x2:如果过滤器匹配,则存储在 Rx FIFO 1 中
0x3:如果过滤器匹配,则拒绝 ID
0x4:如果过滤器匹配,则设置优先级
0x5:如果过滤器匹配,则设置优先级并存储在 Rx FIFO 0 中
0x6:如果过滤器匹配,则设置优先级并存储在 Rx FIFO 1 中
0x7:存储在 Rx 缓冲器中,忽略 SFT [1:0] 字段
表 8-2 扩展过滤器元素参数
参数 说明
扩展过滤器类型 (EFT) 0x0:从 EFID1 到 EFID2 的范围过滤器 (EFID1<= EFID2)
0x1:用于 EFID1 或 EFID2 的双 ID 过滤器
0x2:传统过滤器:EFID1 = 过滤器;EFID2 = 掩码
0x3:从 EFID1 到 EFID2 的范围过滤器 (EFID1<= EFID2),未应用 XIDAM 掩码
扩展过滤器元素配置 (EFEC) 0x0:禁用过滤器元素
0x1:如果过滤器匹配,则存储在 Rx FIFO 0 中
0x2:如果过滤器匹配,则存储在 Rx FIFO 1 中
0x3:如果过滤器匹配,则拒绝 ID
0x4:如果过滤器匹配,则设置优先级
0x5:如果过滤器匹配,则设置优先级并存储在 Rx FIFO 0 中
0x6:如果过滤器匹配,则设置优先级并存储在 Rx FIFO 1 中
0x7:存储在 Rx 缓冲器中,忽略 EFT 字段

下面显示了一个设置标准过滤器元素的示例:

如果应用需要过滤器配置,以便

  • 消息 ID = 0x04 的帧必须存储在 Rx 缓冲器元素 5 中(缓冲器元素范围为 0 到 63)
  • 消息 ID 为 0x371、0x375、0x379、0x37D 的帧必须存储在 Rx FIFO 0 中
  • 必须拒绝消息 ID 为 0xF4 和 0x23 的帧
  • 消息 ID 在 [0x734 至 0x75A] 范围内的帧必须存储在 Rx FIFO 1 中

在这种情况下,要添加的标准过滤器元素如表 8-3 所示:

表 8-3 标准过滤器元素配置
过滤器元素编号
(filtNum)
标准过滤器类型
(sft)
标准过滤器元素配置
(sfec)
标准过滤器 ID 1
(sfid1)
标准过滤器 ID 2
(sfid2)
0 xx = 不用考虑 111 = 存储在 Rx 缓冲器中 0x04 0x05
1 10 = 传统位掩码过滤器 001 = 存储在 Rx FIFO 0 中 0x371(过滤器) 0x0C(掩码)
2 01 = 双 ID 011 = 拒绝 0xF4 0x23
3 00 = 范围过滤器 010 = 存储在 Rx FIFO 1 中 0x734 0x75A

当访问任何标准过滤器元素时,地址是在消息 RAM 配置期间初始化到寄存器 (MCAN_SIDFC.FLSSA) 的起始地址加上过滤器元素的字大小乘以过滤器元素的索引。然而,当根据过滤器列表评估任何接收到的帧时,模块检查的过滤器至多仅为在消息 RAM 配置期间初始化到寄存器 (MCAN_SIDFC.LSS) 的数量。

注意:确保过滤器元素索引不超过初始化的值 (MCAN_SIDFC.LSS);否则过滤器元素基准可能会出现问题。

GUID-20231010-SS0I-WQJB-RHKH-V88DG23SJFHG-low.png图 8-2 MCAN 过滤器配置