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
DCAN 闪存内核基于 ROM 引导加载程序,它与 C2000Ware 中提供的主机 PC 应用程序 (C2000Ware_x_xx_xx_xx > utilities > flash_programmers > dcan_flash_programmer) 进行通信,并就接收数据包和分配给它的命令的完成情况向主机提供反馈。主机应用程序的源代码和可执行文件可在 dcan_flash_programmer 文件夹中找到。有关内核功能的更详细说明,请参阅 C2000 微控制器 CAN 闪存编程应用手册 [16]。
C2000Ware 中的 dcan_flash_programmer 支持以下器件:
DCAN 闪存内核基于 DCAN ROM 加载程序源。为了使该代码能够擦除和编程闪存,必须合并闪存 API,这是通过链接闪存 API 来完成的。
在接收到任何应用程序数据之前,F28P65x 和 F280015x DCAN 闪存内核会擦除器件的闪存,为编程做好准备。F28P65x 和 F280015x DCAN 闪存内核工程允许用户指定在进行应用程序编程之前要擦除哪些闪存组和闪存扇区。C2000 微控制器 CAN 闪存编程应用手册 [16] 对此进行了更详细的讨论。
在闪存存储器中的相应位置进行擦除后,应用程序加载开始。缓冲区用于保存接收到的连续应用程序代码块。当缓冲区已满或检测到新的非连续数据块时,将对缓冲区中的代码进行编程。此过程一直持续到收到整个应用程序为止。
在首次写入扇区之前,F28003x DCAN 闪存内核会检查该扇区是否已被擦除。如果尚未擦除该扇区、则 F28003x 闪存内核使闪存 API 执行擦除操作。此后,一个缓冲区将被写入闪存的内容填满,并从闪存 API 发送编程命令。一旦发生写入,闪存内核就会通过闪存 API 验证相应段是否已写入闪存的正确地址。一旦内核将所有内容复制到闪存,工程就会跳转到映像的入口地址。
DCAN 模块在闪存内核中初始化后,该模块等待主机发送固件映像。闪存内核一次从主机接收 8 个字节,并将内容放入中间 RAM 缓冲区中。然后,将该缓冲区以 128 位或 512 位增量写入闪存。
存储在闪存中的固件映像的所有段都根据一次性编程的位数对齐。
CCS 的闪存内核源文件和工程文件在 C2000Ware 中提供,位于相应器件的示例目录中。这些工程有一个编译后处理步骤,将编译和链接的 .out 文件转换为 DCAN 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,因此需要配置引导选项 0x02。





在 CCS 中构建内核和固件工程后,正确设置器件硬件,使其能与运行 C2000Ware 中提供的 dcan_flash_programmer 的主机 PC 进行通信。首先要做的是确保正确配置引导模式选择引脚,以将器件引导至 CAN 引导模式。如果用户需要在片上闪存中从外部主机加载代码,则用户可以使用默认 BMSP(如果支持)配置 CAN 引导,或者可以配置 BOOTPIN-CONFIG 和 BOOTDEF 寄存器。
用于启用 CAN 引导的默认 BMSP 可以在 TMS320F28003x 实时微控制器数据表中找到。如果用户将 GPIO24 设置为 1 并将 GPIO32 设置为 0,则引导 ROM 跳转到 CAN 引导加载程序且 CANRXA 设置为 GPIO5,CANTXA 设置为 GPIO4,并且无需对器件寄存器进行编程。
但是,如果用户希望灵活地使用具有不同 GPIO 分配的 CAN 引导,则需要为特定的引导选项配置 OTP 或仿真 BOOTCONFIG 和 BOOTDEF 寄存器。请参阅 TMS320F28003x 实时微控制器数据表中的 GPIO 分配,以确定哪种 CAN 引导选项符合 GPIO 要求。
运行示例所需的硬件组件是连接到 CAN 收发器的 C2000 器件和 PEAK PCAN-USB Pro FD 分析仪。

现在需要设置将器件,以模拟使用引导选项 0x02、CANRXA = GPIO5 和 CANTXA = GPIO4 的 CAN 引导。只有一个大约 10 秒的超时窗口,用于可将第一个 CAN 帧发送到器件。





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