ZHCAD88 October 2023 TMS320F280039
本节概述 MCAN 中的其他特性。
在消息 RAM 内,Tx 缓冲器空间可以具有以下可能的配置:
| Tx 缓冲器 | Tx 缓冲器 + Tx FIFO | Tx 缓冲器 + 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 指定了每个段的功能差异和潜在用例:
| 功能 | Tx 缓冲器 | Tx FIFO | Tx 队列 |
|---|---|---|---|
| 主机 (CPU) 直接可用的信息 | 缓冲器元素编号已知。 | 只能从寄存器 (MCAN_TXFQS) 读取 Put 和 Get 索引 | 只能从寄存器 (MCAN_TXFQS) 读取 Put 和 Get 索引 |
| 首先发送的元素 | 具有最低消息 ID 的元素 | 最早的元素 | 具有最低消息 ID 的元素 |
| Put 索引/Get 索引 | 不适用 | Put 索引 指向存储最近一帧的位置。随添加发送请求 而递增。Get 索引 指向下一个要发送的最早元素。 | Put 索引 指向最低的空闲缓冲器元素(队列内),其中存储最近的帧。通过添加发送请求 进行更新。 GET 索引 始终为零 |
| 使用同一 ID 发送多条消息 | 发送缓冲器编号最低的元素 | 发送最早的元素 | 发送缓冲器编号最低的元素 |
| 完整条件 | 不适用 | 如果 FIFO 已满,除非请求的发送完成,否则无法写入消息 | 如果队列已满,除非请求的发送完成,否则无法写入消息 |
| Tx 取消 | 可实现 | 无法实现 | 无法实现 |
| 用例 | 优点是应用知道哪个消息 ID 存储在哪个缓冲器元素中,因此可以在发送之前进行编辑 | 必须按特定顺序(而不是按消息 ID 升序)发送帧的应用 | 优点是缓冲器编号由 Put 索引 自动处理。应用不需要根据消息 ID 优先级跟踪哪个缓冲器为空 |
图 7-2 使用 MCAN 发送