Thread 中讨论的其他器件:C2000WARE、 SysConfig
工具/软件:
您好、
我目前正在尝试使用 P65x 让 CAN 闪存内核正常工作、以便远程固件更新。 我已经成功执行了针对 C2000 微控制器的 CAN 闪存编程中的所有步骤、但遗憾的是、无法让闪存内核正常工作。 在我想澄清的过程中、我有几个点不确定。
1.我使用了示例 dcan_flash_kernel_c28x_dual_ex5 工程、并在闪存内核 main 内将下一行修改为我的配置
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具/软件:
您好、
我目前正在尝试使用 P65x 让 CAN 闪存内核正常工作、以便远程固件更新。 我已经成功执行了针对 C2000 微控制器的 CAN 闪存编程中的所有步骤、但遗憾的是、无法让闪存内核正常工作。 在我想澄清的过程中、我有几个点不确定。
1.我使用了示例 dcan_flash_kernel_c28x_dual_ex5 工程、并在闪存内核 main 内将下一行修改为我的配置
为了使其正常工作、我保留在默认引导引脚 (GPIO84 + GPIO72) 上。
GPIO84 和 GPIO72 用于选择 ROM 引导模式:SCI、CAN 或闪存等
关于哪些引脚用于 CAN 引导、请对 EMU-BOOTDEF-LOW 进行编程 0x0D04。 请参阅器件 TRM 的表 4-17 和应用手册“sprad51a_can_pdf.pdf"<xmt-block0>“ Flash_Programming
6.在仿真模式下、需要设置以下存储器位置以启用 CAN 引导模式:a.带 0xFFFF 的位置 0xD00 b.带 0x5AFF C 的位置 0xD01。带 0x00XX 的位置 0xD04、其中 XX 是 CAN 引导的引导模式:0x02、0x22、0x42 或 0x62。 0x82、0xA2、0xC2 和 0xE2 的 SENDTEST CAN 引导模式分别使用与前四种配置相同的引脚、并且它们还发送两个 CAN 帧。 在评估模式下、使用其中一种 SENDTEST 模式可确保 CAN 模块在主机开始发送闪存内核之前不会超时。 要了解有关 SENDTEST 模式的更多信息、请参阅 C2000Ware 中的 DCAN 引导源文件 (C2000Ware_x_xx_xx_xx > driverlib > f28003x > examples > flash > DCAN_Boot.c)。
只需确认我正在写入此 ROM 并正确执行复位。

我之前已将这些地址写入 CAN 闪存编程文档中所述。 接下来还有几个问题。
1.在 P65x 的 dcan_flash_kernel_c28x_dual_ex5 示例工程中、是否需要对程序进行修改、或者这些临时 OTP 仿真是否涵盖让基本闪存编程器运行所需的所有配置?
2.我注意到 dcan_flash_programmer 可执行文件在详细模式下会告诉我加载了内核+应用程序、无论我是否在总线的另一端连接了器件、我认为通信是自动确认的、如果编程器实际上可以看到我的器件、是否有办法使用另一个实用程序进行测试?
3、在工程内部,我直接在这个语句后放置一个断点
只是在进一步调查之后的一个跟进。
我已经对 EMU_BOOTDEF_LOW (0xD04) 进行了编程、以将 GPIO 配置移动到 GPIO36 + GPIO37。 我已经调查了一点、发现我当前的硬件与当前内核的位时序不匹配。 我手动更改 GPIO 切换引脚、所以只保留了 D00 和 D01。
下面我将在内核调用内部传递到 DCAN_BOOT
CAN_BOOT_ALT3 ->作为引导模式
bitTimingRegValue = 0x7FC0(我在 25MHz XTAL 和 BITTIME = 25 条件下以 1Mbps 获得的数学运算)。 根据 TRM、CALC_CANCLK 是未预分频的 CAN 时钟的值、我假设它是 XTAL(当我添加 SysConfig 时,时钟树不会显示为选项,因此这是一个假设)。
我有一个跟进问题、取自 C2000 的应用加载 CAN 闪存编程的 sectioin 4.1.2 第 2 点
2.闪存内核以每帧 2 字节的数据传输到设备。 主机编程器将帧传输到器件、检查数据字节 3 和 4 是否为非零值。 文本文件的字节 3 和 4 必须替换为根据位时序寄存器值 (CAN_CALC_BTRREG) 的最终结果计算出的十六进制值、顺序为最低有效字节后跟最高有效字节。 如果主机编程器识别出字节 3 和 4 的位时序更改、则主机编程器会将位时序更改发送到器件并重新初始化自身(跳过以下 7 个保留字)。 器件会将比特率增加到所需的位时序、并继续接收帧、直到内核完成下载。
您能否确认这是我生成的内核文件中唯一需要更改的字节? 这是为了与 can_btr 寄存器匹配。

再次感谢
我要手动更改 GPIO 切换引脚、因此我只剩下 D00 和 D01。
EMU-BOOTPIN-CONFIG 用于选择引导引脚。 它位于 0xD00。 其高位字节[31:24]必须为 0x5A、位[7:0](BMSP0) 与位[15:8](BMSP1) 设置要在引导期间使用的 GPIO。 用例中、BMSP0 为 36 (GPIO36)、BMSP1 为 37 (GPIO37)。
地址 0xD04 处的值用于定义引导模式和引导选项。 对于 CAN 引导、位[3:0]为 0x2。
匹配您能否确认这是我生成的内核文件中唯一需要更改的字节? 这是为了与 can_btr 寄存器
内核中的 CAN 时钟可能不是晶体时钟。 它可以是 20MHz 或 25MHz(在 ex_5_bootloader_can_timing.h 中定义) 请查看您使用的示例。

BYTE3=0xC0 --> SJW=3、BRP=0;
BYTE4=0x7F --> TSEG1=15 且 TSEG2=7。
如果 CAN 时钟为 25MHz、则波特率将为 25MHz /(25)= 1mbps