ZHCAD88 October 2023 TMS320F280039
在 DCAN 中,消息 RAM 只能由消息处理程序进行访问。Driverlib API 与消息接口 (IFx) 寄存器交互,该寄存器使用消息 RAM 执行读取或写入操作。在 MCAN 中,Driverlib API 可用于直接使用消息 RAM 执行读取或写入操作。
消息 RAM 结构在 DCAN 和 MCAN 中不同。在 DCAN 中,消息 RAM 中的消息对象数量固定为 32 个,每个消息对象都可配置为用于发送或接收操作。
但是,在 MCAN 中,消息 RAM 可以配置为具有以下各段:
MCAN 消息 RAM 的设计提供了极大的灵活性,支持根据应用需要将可用内存分配至上述每个段。这些段可以按任何方式排序,并且可以为未使用的段分配零内存。请注意,消息 RAM 大小可能因器件而异。有关更多信息,请参阅特定于器件的数据表。
消息 RAM 配置涉及定义以下内容:
这些值写入特定的寄存器,随后由消息处理程序和 Driverlib API 用来与消息 RAM 进行交互。因此,消息 RAM 配置是 MCAN 在模块初始化期间的关键步骤,而 DCAN 中不需要此类配置。MCAN 模块以 32 位字对消息 RAM 进行寻址。因此,所有段的大小都是 32 位字的倍数。
| 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。
图 5-1 MCAN 消息 RAM 宏
图 5-2 MCAN 消息 RAM 初始化