ZHCAD88 October 2023 TMS320F280039
表 3-1 中列出了初始化 DCAN 和 MCAN 模块的各个步骤以及主要差异:
| 运行 | DCAN | MCAN |
|---|---|---|
| 进入初始化模式 | 设置 CAN_CTL.INIT 位 | 设置 MCAN_CCCR.INIT 位并检查该位是否已设置 |
| 解锁受保护的寄存器 | 设置 CAN_CTL.CCE 位 | 设置 MCAN_CCCR.CCE 位 |
| 配置 CAN 模式和比特率切换 | 不适用 | 设置 CAN FD 功能的 MCAN_CCCR.FDOE 位 设置 MCAN_CCCR.BRSE 位以启用比特率切换 (BRS) (对于传统 CAN 通信,这两个位都需要为 0) |
| 配置位时序 | 配置 CAN_BTR 寄存器 | 配置 MCAN_NBTP 寄存器 |
| 配置数据位时序 | 不适用 | 配置 MCAN_DBTP 寄存器(对于传统 CAN 不需要,因为 BRS 已禁用) |
| 消息 RAM 配置 | 不适用 | 请参阅消息 RAM 配置 |
| 全局过滤器配置(如果需要)(确定模块如何处理不匹配的帧)。 | 不适用 | 设置 MCAN_GFC 寄存器 |
| 接收和发送配置(也可以在运行时执行) | 设置消息对象 | 滤波器配置 |
| 锁定受保护的寄存器 | 清除 CAN_CTL.CCE 位 | 清除 MCAN_CCCR.CCE 位 |
| 使模块恢复正常运行 | 清除 CAN_CTL.INIT 位 | 清除 MCAN_CCCR.INIT 位 |
除了上面显示的步骤之外,对于 MCAN,可能还需要在初始化过程中设置 MCAN 时钟分频器。此配置通常通过 AUXCLKDIVSEL 寄存器执行(请参阅特定于器件的 TRM 以确定用于时钟分频的寄存器)。对于 120MHz 和 200MHz 器件,C2000ware 示例将 MCAN 位时钟配置为 40MHz。如果应用需要更小的时间量子 (TQ),则可以采用其他位时钟配置。不过,需要相应地更改标称位时序和数据位时序的参数。图 3-1 显示了 DCAN 的初始化步骤。图 3-2、图 3-3 和图 3-4 显示了 MCAN 的初始化步骤。