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

MCAN 发送概念

本节概述 MCAN 中的其他特性。

  • 每条 Tx 消息都可以配置为在传统 CAN 或 CAN-FD 模式下发送
  • 传输暂停
  • 发送取消
  • Tx FIFO/Tx 队列

在消息 RAM 内,Tx 缓冲器空间可以具有以下可能的配置:

  1. 仅 Tx 缓冲器
  2. Tx 缓冲器 + Tx FIFO
  3. Tx 缓冲器 + Tx 队列
下面的表 7-2 显示了如何配置其中每一个段:

表 7-2 各种 Tx 缓冲器选项的消息 RAM 配置
Tx 缓冲器Tx 缓冲器 + Tx FIFOTx 缓冲器 + Tx 队列

txBufNum = BUFF_SIZE

(MCAN_TXBC.NDTB)

txFIFOSize = 0

(MCAN_TXBC.TFQS)

txBufNum = BUFF_SIZE

(MCAN_TXBC.NDTB)

txFIFOSize = FIFO_SIZE

(MCAN_TXBC.TFQS)

txBufMode = 0

(MCAN_TXBC.TFQM)

txBufNum = BUFF_SIZE

(MCAN_TXBC.NDTB)

txFIFOSize = QUE_SIZE

(MCAN_TXBC.TFQS)

txBufMode = 1

(MCAN_TXBC.TFQM)

下面的表 7-3 指定了每个段的功能差异和潜在用例:

表 7-3 TX 缓冲器与 Tx FIFO 与 Tx 队列特性比较
功能Tx 缓冲器Tx FIFOTx 队列
主机 (CPU) 直接可用的信息缓冲器元素编号已知。只能从寄存器 (MCAN_TXFQS) 读取 PutGet 索引只能从寄存器 (MCAN_TXFQS) 读取 PutGet 索引
首先发送的元素具有最低消息 ID 的元素最早的元素具有最低消息 ID 的元素
Put 索引/Get 索引不适用

Put 索引 指向存储最近一帧的位置。随添加发送请求 而递增。Get 索引 指向下一个要发送的最早元素。

Put 索引 指向最低的空闲缓冲器元素(队列内),其中存储最近的帧。通过添加发送请求 进行更新。

GET 索引 始终为零
使用同一 ID 发送多条消息发送缓冲器编号最低的元素发送最早的元素发送缓冲器编号最低的元素
完整条件不适用如果 FIFO 已满,除非请求的发送完成,否则无法写入消息如果队列已满,除非请求的发送完成,否则无法写入消息
Tx 取消可实现无法实现无法实现
用例优点是应用知道哪个消息 ID 存储在哪个缓冲器元素中,因此可以在发送之前进行编辑必须按特定顺序(而不是按消息 ID 升序)发送帧的应用优点是缓冲器编号由 Put 索引 自动处理。应用不需要根据消息 ID 优先级跟踪哪个缓冲器为空
GUID-20231010-SS0I-VJ3R-ZWHF-CC1RXKRG0ZDP-low.png图 7-2 使用 MCAN 发送