ZHCAD88 October   2023 TMS320F280039

 

  1.   1
  2.   摘要
  3.   商标
  4. 1 引言
  5. 2 DCAN 和 MCAN 之间的主要差异
  6. 3 模块初始化
    1. 3.1 DCAN 初始化
    2. 3.2 MCAN 初始化
    3. 3.3 初始化序列
    4. 3.4 模块初始化代码片段
  7. 4 位时序配置
  8. 5 消息 RAM 配置
  9. 6 中断处理
    1. 6.1 MCAN 中断源
    2. 6.2 DCAN 中断处理
    3. 6.3 MCAN 中断处理
  10. 7 发送数据
    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. 8 接收数据
    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. 9 避免网络错误
  13. 10参考资料

过滤器元素结构

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

  • sft(或 eft)确定要实现哪种过滤器。
  • sfec(或 efec)确定要存储接受的帧的位置或是否要拒绝该帧。
  • sfid1 和 sfid2(或 efid1 和 efid2)确定哪些消息 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 过滤器配置