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

Rx FIFO

RX FIFO 元素在结构上与 Rx 缓冲器元素相同,并且也存储在消息 RAM 中。模块有两个 Rx FIFO(Rx FIFO 0 和 Rx FIFO 1),它们可单独配置为具有多达 64 个元素。Rx 缓冲器元素和 Rx FIFO 元素之间的主要区别在于模块访问它们的方式。

Rx FIFO 的行为由 PutGet 索引决定。这些索引由模块在特定寄存器 (MCAN_RXFxS) 中维护。Put 索引是指需要将新接收的帧存储在消息 RAM 中的 FIFO 元素编号。GET 索引是指应用需要从消息 RAM 读取数据的 FIFO 元素编号。

由于这种结构,应用不需要在每次接收帧时都从 Rx 缓冲器元素检索数据,也不需要清除相应的新数据标志来在相同的 Rx 缓冲器元素中接收下一个匹配帧。相反,应用可以一次读取多个接收到的帧。

每个 FIFO 段的起始地址存储在 MCAN_RXFxC.FxSA 寄存器中,而该段中的后续区域根据模块的 PutGet 索引进行计算。

每次在 FIFO 中接收到新消息时,Put 索引都会递增(由模块自动执行),而每次应用读取消息时,Get 索引都需要由应用来递增。FIFO 的填充级别(即 FIFO 中应用要读取的消息数)由(Put 索引 - Get 索引)确定。

FIFO 有两种模式,可根据 FIFO 已满时接收到新消息时的行为进行区分。第一种是 FIFO 阻塞模式,这意味着当 Rx FIFO 已满时,Rx FIFO 中不会存储任何消息,除非当前存储的至少一条消息已被应用读取。如果收到新消息,则会设置一个中断标志 (MCAN_IR.RXFxL),表示消息丢失。第二种是 FIFO 覆盖模式,这意味着当 Rx FIFO 已满时,下一条接受的消息将覆盖最早的 FIFO 消息。

Rx FIFO 模式在初始化期间作为消息 RAM 配置的一部分进行设置。