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参考资料

消息 RAM 配置

在 DCAN 中,消息 RAM 只能由消息处理程序进行访问。Driverlib API 与消息接口 (IFx) 寄存器交互,该寄存器使用消息 RAM 执行读取或写入操作。在 MCAN 中,Driverlib API 可用于直接使用消息 RAM 执行读取或写入操作。

消息 RAM 结构在 DCAN 和 MCAN 中不同。在 DCAN 中,消息 RAM 中的消息对象数量固定为 32 个,每个消息对象都可配置为用于发送或接收操作。

但是,在 MCAN 中,消息 RAM 可以配置为具有以下各段:

  • 标准过滤器元素
  • 扩展过滤器元素
  • Rx 缓冲器
  • Rx FIFO
  • Tx 缓冲器
  • Tx FIFO 或 Tx 队列
  • Tx 事件 FIFO

MCAN 消息 RAM 的设计提供了极大的灵活性,支持根据应用需要将可用内存分配至上述每个段。这些段可以按任何方式排序,并且可以为未使用的段分配零内存。请注意,消息 RAM 大小可能因器件而异。有关更多信息,请参阅特定于器件的数据表。

消息 RAM 配置涉及定义以下内容:

  • 使用的每个段的起始地址。
  • 每个段中的元素数量。
  • 对于不同大小的数据包,元素的大小是不同的,如表 5-1 所示(过滤器元素和 Tx 事件 FIFO 具有固定大小)。

这些值写入特定的寄存器,随后由消息处理程序和 Driverlib API 用来与消息 RAM 进行交互。因此,消息 RAM 配置是 MCAN 在模块初始化期间的关键步骤,而 DCAN 中不需要此类配置。MCAN 模块以 32 位字对消息 RAM 进行寻址。因此,所有段的大小都是 32 位字的倍数。

表 5-1 元素大小与数据包大小
MCAN_RXESC.RBDS/
MCAN_RXESC.F0DS/
MCAN_RXESC.F1DS/
MCAN_TXESC.TBDS
(分别对应于 Rx 缓冲器、Rx FIFO 和 Tx 缓冲器)
数据字段(字节) FIFO 元素大小(或)缓冲器元素大小 [RAM 字]
000 8 4
001 12 5
010 16 6
011 20 7
100 24 8
101 32 10
110 48 14
111 64 18

C2000ware 示例中提供了宏,当用户设置元素的数量和大小时,宏会自动计算每个段的起始地址。此配置可以成功地用于任何应用。可以使用多种有效配置,而不存在单一“正确的”配置。请注意,MCAN 模块不会检查是否有无效的配置。用户有责任验证各个段不会相互重叠或超出可用 RAM。

GUID-20230906-SS0I-ZBXW-SQCS-GCDRK4KPRSXL-low.png图 5-1 MCAN 消息 RAM 宏
GUID-20230906-SS0I-S5FN-MPQS-WRXJP22RM7MZ-low.png图 5-2 MCAN 消息 RAM 初始化