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

消息 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 初始化