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

Rx FIFO

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

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

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

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

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

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

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