ZHCUCY3 April 2025 TMS320F2800132 , TMS320F2800133 , TMS320F2800135 , TMS320F2800137 , TMS320F2800152-Q1 , TMS320F2800153-Q1 , TMS320F2800154-Q1 , TMS320F2800155 , TMS320F2800155-Q1 , TMS320F2800156-Q1 , TMS320F2800157 , TMS320F2800157-Q1 , TMS320F280021 , TMS320F280023 , TMS320F280023C , TMS320F280025 , TMS320F280025C , TMS320F280034 , TMS320F280036-Q1 , TMS320F280036C-Q1 , TMS320F280037 , TMS320F280037C , TMS320F280038-Q1 , TMS320F280038C-Q1 , TMS320F280039 , TMS320F280039C , TMS320F280040-Q1 , TMS320F280040C-Q1 , TMS320F280041 , TMS320F280041C , TMS320F280045 , TMS320F280048-Q1 , TMS320F280048C-Q1 , TMS320F280049 , TMS320F280049C , TMS320F28076 , TMS320F28374D , TMS320F28374S , TMS320F28375D , TMS320F28375S , TMS320F28376D , TMS320F28376S , TMS320F28377D , TMS320F28377S , TMS320F28378D , TMS320F28378S , TMS320F28379D , TMS320F28379S , TMS320F28384D , TMS320F28384S , TMS320F28386D , TMS320F28386S , TMS320F28388D , TMS320F28388S , TMS320F28P550SG , TMS320F28P550SJ , TMS320F28P559SG-Q1 , TMS320F28P559SJ-Q1 , TMS320F28P650DH , TMS320F28P650DK , TMS320F28P650SH , TMS320F28P650SK , TMS320F28P659DH-Q1 , TMS320F28P659DK-Q1 , TMS320F28P659SH-Q1
如节 3.2中所述,ROM 引导加载程序只能将代码加载到 RAM 中,这就是使用 ROM 引导加载程序在闪存内核中加载以便代码可以存储到闪存中的原因。CAN 闪存内核基于 ROM 引导加载程序,它与 C2000Ware 中提供的主机 PC 应用程序 (C2000Ware_x_xx_xx_xx > utilities > flash_programmers > can_flash_programmer) 进行通信,并就接收数据包和分配给它的命令的完成情况向主机提供反馈。主机应用程序的源代码和可执行文件可在 can_flash_programmer 文件夹中找到。有关内核功能的更多信息,请参阅 C2000 微控制器的 CAN 闪存编程应用手册 [16]。
C2000Ware 中的 can_flash_programmer 支持以下器件:
在本文档中,术语 MCAN、MCAN 闪存内核、CAN 闪存编程器等指的是模块化控制器局域网 (MCAN)。MCAN 是可与控制器局域网灵活数据速率 (CAN-FD) [15] 互换使用的术语。本文档中描述的 CAN 闪存编程器是指 MCAN 模块。
闪存内核工程是根据 MCAN ROM 引导加载程序建模的。它直接进入已修改为写入闪存的 MCAN_Boot 函数。闪存内核的 MCAN 模块初始化与引导加载程序相同。MCAN 模块的时钟源、标称和数据比特率、GPIO 引脚等由内核在初始化时根据引导模式进行设置。
在接收到任何应用程序数据之前,F28P55x 内核会擦除器件的闪存,为编程做好准备。此外,F28P55x MCAN 闪存内核工程允许用户指定在进行应用程序编程之前要擦除哪些闪存组和闪存扇区。C2000 微控制器的 CAN 闪存编程应用手册 [16] 的自定义闪存组和扇区擦除一节中对此进行了更加详细的介绍。
在对应用程序进行编程之前,F28003x 内核会检查每个闪存扇区是否被擦除过。如果之前没有擦除闪存扇区,则会擦除该扇区并写入应用程序数据。
F28P65x 内核会在应用程序下载过程开始时擦除闪存。擦除闪存可能需要几秒时间。请注意,当应用程序加载显示为失败时,说明闪存正在被擦除。
在闪存存储器中的相应位置进行擦除后,应用程序加载开始。闪存内核一次从主机接收 64 个字节,并将内容放入中间 RAM 缓冲区中。然后,将该缓冲区以 128 位或 512 位增量写入闪存。
此后,RAM 缓冲区将被写入闪存的内容填满,并从闪存 API 发送编程命令。一旦发生写入,闪存内核就会通过闪存 API 验证相应段是否已写入闪存的正确地址。一旦内核将所有内容复制到闪存,工程就会跳转到映像的入口地址。
存储在闪存中的固件映像的所有段都必须根据一次性编程的位数对齐。
用于传输应用程序数据的协议遵循 MCAN ROM 加载程序协议。使用原始 MCAN ROM 加载程序协议,使用的标称比特率为 1Mbps,并且每帧从主机向目标器件传输 64 个字节,以实现标称位时序。该协议使用的数据比特率是 2Mbps,以实现数据位时序。
CCS 的闪存内核源文件和工程文件在 C2000Ware 中提供,位于器件相应的示例目录中。这些工程有一个编译后处理步骤,将编译和链接的 .out 文件转换为 MCAN ROM 引导加载程序所需的正确的十六进制格式引导文件,并按扩展名为 .txt 的工程名称进行保存。
通过检查 C2000Ware_x_xx_xx_xx > boards > (LaunchPads or controlCARDs) > DEVICE_NAME > Rev# > documentation 中 CAN 收发器和连接器的原理图,可以确认 LaunchPad 中 CAN 布线所需的正确 GPIO 分配。在 LAUNCHXL-F280039C 上,收发器 RXD 内部布线到 GPIO5,TXD 内部布线到 GPIO4,因此需要配置 BOOTDEF 0x02。



在 CCS 中构建内核和固件工程后,正确设置器件硬件,使其能与运行 C2000Ware 中提供的 can_flash_programmer 的主机 PC 进行通信。首先要做的是确保正确配置引导模式选择引脚,以将器件引导至 CAN-FD 引导模式。如果用户需要将外部主机中的代码加载到片上闪存中,则用户需要配置 BOOTPIN-CONFIG 和 BOOTDEF 寄存器,因为它们不作为默认引导选项提供。请参阅 TMS320F28003x 实时微控制器数据表中的 GPIO 分配,以确定哪种 CAN-FD 引导选项符合 GPIO 要求。
运行示例所需的硬件组件是连接到 CAN 收发器的 C2000 器件和 PEAK PCAN-USB Pro FD 分析仪。

需要设置器件,以模拟使用引导选项 0x02、CANRXA = GPIO5 且 CANTXA = GPIO4 的零引脚 CAN 引导。现在需要设置将器件,以模拟使用引导选项 0x08、CANRXA = GPIO5 且 CANTXA = GPIO4 的零引脚 CAN-FD 引导。请注意,只需大约 10 秒即可将第一个 CAN 帧发送到器件。





现在,ROM 中的 MCAN 引导加载程序(包含引导选项 0x08 指定的 GPIO 分配)开始执行并等待从主机发送 CAN 帧。此时,器件已准备好接收来自主机的代码。
命令行 PC 实用程序是一种编程解决方案,可以轻松集成到脚本环境中,用于生产线编程等应用程序。它是使用 Microsoft Visual Studio 用 C++ 编写的。工程及其源代码可在 C2000Ware (C2000Ware_x_xx_xx_xx > utilities > flash_programmers > can_flash_programmer) 中找到。
主机负责将 MCAN 内核映像和闪存(固件)映像发送到 MCU。PEAK PCAN-USB Pro FD CAN 总线分析仪用作主机。闪存编程器工程在 Visual Studio 2019 上编译并运行。主机编程器使用 PEAK 的 PCAN_Basic API。[17]。PCAN_Basic API 可用于在 CAN 分析仪上发送和接收 CAN-FD 帧。
在 F28003x 器件上,MCAN 模块的时钟由引导 ROM 切换到外部时钟源。LaunchPad 和 ControlCard 中的外部时钟为 20MHz。引导 ROM 将标称比特率配置为 1Mbps,将数据比特率配置为 2Mbps。主机 CAN 编程器将 PEAK CAN 分析仪配置为具有相同的时钟、标称和数据比特率值。
主机初始化分析仪以使用 CAN-FD,以 64 字节增量发送内核,以 64 字节增量发送映像,每帧之间延迟 100ms,以便闪存 API 有时间对接收到存闪存中的数据进行编程。一旦固件映像被写入,主机 CAN 编程器就会退出。
若要使用此工具对 C2000 器件进行编程,请确保目标板已复位且当前处于前面配置的 CAN 引导模式,并连接至 PEAK PCAN-USB Pro FD CAN 总线分析仪。下面介绍了该工具在单核 MCAN 引导中的命令行用法,其中 -d、-k 和 -a 是必需参数。可以使用 -v 启用详细输出。有关该实用程序参数的更多详细信息,请参阅 [14]。
can_flash_programmer.exe –d DEVICE -k KERNEL_FILE -a APPLICATION_FILE -v
can_flash_programmer.exe –d DEVICE_NAME –k <path_to_kernel_hex> -a <path_to_application_hex> -v这会使用引导加载程序将 MCAN 闪存内核加载到器件的 RAM 中。通过 MCAN 总线传输的字节可以在终端中看到。然后,内核会执行并加载,而后用“-a”命令行参数指定的文件对闪存编程,如图 4-41 和图 4-42 所示。如果成功加载到闪存中,内核会转移到应用程序并开始执行。
图 4-41 已加载的 MCAN 闪存编程器内核
图 4-42 已加载的 MCAN 闪存编程器应用程序