器件型号: TMS320F28P650DK
尊敬的 TI:
我尝试使用 F28P65X LaunchPad 板上的 CAN 引导加载程序功能刷写仅 CPU1 的应用程序映像。 我正在使用 TI 示例工程:“dcan_flash_kernel_c28x_dual_ex5“。 我正在使用 PCAN 标准 USB 器件、其中 GPIO4/5 用于 CANA TX/RX。
以下是我的方法:
1.使用板载开关 S3 将 GPIO72 设置为高电平、将 GPIO84 设置为低电平。
2.使用板载开关 S4 至 XCVR 将 CANA 引脚 (GPIO4/5) 通过收发器 (U15) 连接到 J14 上的接头引脚。
3.将 J14 引脚高/低/接地连接至 PCAN 标准 USB(使用 120 欧姆端接)。
4.转至“device.h“并修改第 270 行和第 271 行以启用 INTOSC。 具体如下:
//#define USE_PLL_SRC_XTAL
#define USE_PLL_SRC_INTOSC
5.转至“flash_kernel_ex5_can_flash_kernel.c“、并修改第 92 行以禁用 XTAL。 具体如下:
return DCAN_Boot(CAN_BOOT_ALT1_SENDTEST, 0, 0, 25, 5, Application_Flash_Banks,
WE_Protection_A_Masks, WE_Protection_B_Masks, WE_Protection_OTP_Masks);
6.编译工程并进入调试/仿真模式。
7.转至“dcan_flash_kernel_c28x_dual_ex5.txt“、并修改字节 3 和 4 以匹配 CAN_BTR 寄存器。 该 txt 文件的前 4 个字节如下:
AA 08 C0 7A
8.转至“Memory Browser“、将位置 0xD01 的高字节修改为“5A“、然后将位置 0xD05 的低字节修改为“22“。 这应选择 GPIO4/5 作为 CANA TX/RX 引脚。 如下图所示。
0x00000D00 22E8 5A5B DB0E 4FD0 B28E 6A22
9.使用 XRSn 按钮复位 F28P65X LaunchPad 板、然后按 CCS Debug 中的“Resume“按钮。 此器件现在处于 CAN 引导模式。
10.在 cmd 窗口中运行以下命令:
"C:\ti\C2000Ware_26_00_00_00\utilities\flash_programmers\dcan_flash_programmer\dcan_flash_programmer.exe" -d f28p65x -k "C:\Users\f799267\workspace_v12\dcan_flash_kernel_c28x_dual_ex5\LAUNCHXL_CPU1_RAM\dcan_flash_kernel_c28x_dual_ex5.txt" -a "C:\GIT\application.txt" -v
等待内核和应用程序加载完毕。
11.将 GPIO84 和 GPIO72 切换为高电平以从闪存引导新的应用程序、并使用 XRSn 按钮复位 F28P65X LaunchPad 板。
我面临的问题是无法加载我的应用程序。 我相信内核本身已被发送到 CPU、因为在 CCS“Registers View“上、我可以看到、随着 cmd 窗口可执行文件正在运行、“CAN_BTR“会从 0x7FC7 实时更改为 0x7AC0(更改为 1Mbps)。 该函数还成功擦除任何现有闪存。
内核加载后、CPU 尝试发送和接收一些测试字节 (DCAN_Boot.c 中的函数 DCAN_SendWordData)。 使用范围、我无法看到从 GPIO4/5 发送这些消息。 我可以看到可执行文件从 PCAN 向 CPU 发送字节、但 CPU 似乎无法检测到字节。 这就是它在以下 while 循环上挂起的原因:
while((HWREGH(CANA_BASE + CAN_O_TXRQ_21) & CAN_MSG_OBJ_2) == CAN_MSG_OBJ_2)
{
}
似乎 CPU 一直在等待它从不检测到的 CAN 消息。
我已通过单独的测试验证 CANA 是否通过收发器与 GPIO4/5 配合使用。 我也是 512 位、通过使用“align (32)“修改其链接器文件来对齐应用程序映像
您能提供建议吗?
谢谢、Samuel。