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.

[参考译文] LAUNCHXL-F2800157:CAN 闪存编程问题- bitrate、sleep_time 和 EntryAddr 配置-峰值 PCAN USB pro 错误状态(红色 LED)

Guru**** 2473270 points
Other Parts Discussed in Thread: LAUNCHXL-F2800157, C2000WARE, TMS320F2800157

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1470172/launchxl-f2800157-can-flash-programming-issues---bitrate-sleep_time-and-entryaddr-configuration---peak-pcan-usb-pro-error-status-red-led

器件型号:LAUNCHXL-F2800157
主题中讨论的其他器件: C2000WARETMS320F2800157

工具与软件:

您好!

我们 尝试 使用 C2000Ware 的 DCAN 闪存编程器实用程序通过 CAN 刷写 LAUNCHXL-F2800157 LaunchPad、但遇到通信问题。 以下是详细信息:
设置:

MCU:TMS320F2800157
CAN 接口:PEAK PCAN USB Pro
工程路径:C:\ti\c2000\C2000Ware_5_04_00_00\utilities\flash_programmers\dcan_flash_programmer\dcan_flash_programmer

问题:

尝试传输时、峰值 USB Pro 的状态 LED 呈红色闪烁、表示出现通信错误。 我们已查看配置、但不确定最佳设置。


中的电流配置 dcan_flash_programr.cpp


//比特率配置
bitrate ="f_clock_MHz = 20、nom_BRP = 40、nom_tseg1 = 16、nom_tseg2 = 3、nom_sjw = 2"; // 100kbps

//初始化
gStatus = CAN_Initialize (PCAN_USBBUS1、PCAN_BAUD_100K);  

// F280015x 的睡眠时序
SLEEP_TIME = 10;//以毫秒为单位


问题:

  1. 这些位时序参数是否适用于 F2800157?
  2. 10ms 的当前 SLEEP_TIME 是否适合 F2800157、或者应该对其进行调整?
  3. 我还遇到了以下函数flash_kernel_ex5_dcan_flash_kernel.c:
EntryAddr = DCAN_Boot(CAN_BOOT_SENDTEST, 0, 1, 20, WE_Protection_A_Mask, WE_Protection_B_Mask, WE_Protection_UO_Mask);
    我想澄清一下的正确参数 EntryAddr 括号中。

非常感谢为解决这些沟通问题提供任何指导。


其他信息:

已验证物理连接和端接是否正确

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Taif、

    感谢您就此问题提出问题。 我们的 DCAN 专家目前是 OOO、但我将开始研究这个问题。

    同时、

    1) 1) TI 提供了一个CAN 位时序参数计算器 、用于根据 CAN 总线要求确定最佳位时序。 请查看此工具并验证您的特定要求、以确定最佳的位时序参数配置。

    此处还有关于 DCAN 示例的专用应用手册:DCAN 模块的编程示例(修订版 A)

    这些位时序值 在很大程度上取决于您的收发器功能和系统/硬件层实施。

    是否可以尝试使用 Transmit_Recieve CAN 示例5 (链接至下面的参考部分)以确保独立于 DCAN 闪存编程器工具的 CAN 总线正常运行?

    can_ex5_transmit_receive

    对于2人和3人、我需要与内部团队跟进。

    感谢您的耐心等待、我们将继续解决这个问题。

    此致、

    Zackary Fleenor

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的  Zackary:  

    我们非常感谢您的答复。 正如您建议的、我们已经确保您引用的示例5适用于我们的硬件设置。 我们已成功验证发送模式和接收模式。  

    查看 TRM (TMS320F280015x 实时微控制器)后、我们注意到 采用 CAN 引导模式的微控制器的默认 TX/RX CAN 引脚为 GPIO7和 GPIO5 (分别为表5-36)。 但是、请参阅 LaunchPad 的文档(C2000 F280015x 系列 LaunchPad 开发套件第3.1.5节)。 GPIO4和5 路由到收发器。  

    您是否认为这可能导致数据传输(在应用程序和内核传输期间)期间红光指示的 CAN 通信问题? 为了解决该问题、我们尝试通过更改寄存器值以仿真模式运行 MCU、如下所示:

    0xD00:0xFFFF
    0xD01:0x5AFF
    0xD04:0x0082

    并使用 Run->Reset->CPU Reset (在 CCS 中)复位 CPU。

    请注意、我们的实现方式是:首先在调试模式下运行随机闪烁 LED 程序以访问 CCS 中的存储器浏览器、如上所述更改寄存器值、按照所述复位 CPU、点击"恢复"、然后再次尝试运行"主机"闪存编程器。

    请您验证这是否是正确的步骤。

    期待您的回复。

    此致、
    Taif

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Taif、

    我已向团队确认这是 F280015x Launchpad 的一个已知问题。 我正在创建一个 TT、以便在用户指南中添加清晰的陈述。 这是由于您提到的确切原因造成的。 GPIO4/5被路由到收发器、而 GPIO7/5由引导加载程序使用。

    否则、您所遵循的过程是正确的。

    两个注意事项:

    -确保 LP 上的 CAN 路由开关(S4)设置为使用 CAN 收发器而不是 Boosterpack

    -确保 链接器命令文件中的闪存段对齐,它们需要在512位边界上(align (32))

    是否可以使用 CAN-FD 引导? (已正确映射到 GPIO4/5)

    此致、

    Zackary Fleenor

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的  Zackary:

    非常感谢您向团队确认、这会澄清一些与此相关的混淆。  

    在尝试 CAN-FD 引导之前、我们还有两个问题。

    1.当您提到 CAN-FD 引导时、您指的是 MCAN 闪存内核 文档中给出的实现(应用手册:C2000微控制器的 CAN 闪存编程)? 在这种情况下、如果您参考第5节、则"TMS320F2800157" 不会 被称为支持的器件。  

    此外、C2000Ware 中也未提供上述闪存内核、您可以对此进行一些说明。 (不过、请注意、名为"flash_kernel_ex5_dcan_flash_kernel.c"  的文件在注释中的标题为"title:MCAN Flash Kernel example for F280015x"、这可能是个错误)。
     
    2.附加了 dCAN 闪存内核的链接器文件、但无法识别闪存段、因此 将 ALIGN (32)指令添加到链接器文件的"ties"区域中的所有行中。 您能不能看一下、告诉我们这样做是否正确? (注意:文件扩展名从.cmd 更改为.txt、这样就可以附加它了)。

    再次感谢、期待您的回复。

    /cfs-file/__key/communityserver-discussions-components-files/171/280015x_5F00_generic_5F00_ram_5F00_lnk.txt

    此致、
    Taif

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Taif:

    1. 当您参考 CAN-FD 引导时、您是指 MCAN 闪存内核 文档中给出的实现(应用手册:C2000微控制器的 CAN 闪存编程)? 在这种情况下、如果您参考第5节、则"TMS320F2800157" 不会 被称为支持的器件。  [报价]

    是的、CAN-FD 和 MCAN 在该应用手册中可互换使用。

    C2000Ware 中的 can_flash_programmer 用于 MCAN 引导、dcan_flash_programmer 用于 CAN 引导。

    此外、上述闪存内核在 C2000Ware 中也不可用、请对此进行一些澄清。 (不过、请注意、名为"flash_kernel_ex5_dcan_flash_kernel.c"  的文件在注释中的标题为"title:适用于 F280015x 的 MCAN 闪存内核示例"、这可能是错误的)。

    遗憾的是、我们不提供 F280015x 器件的 MCAN 闪存内核示例、只有 CAN/DCAN 闪存内核。

    如果您希望使用 CAN 或 CAN-FD 引导、您有两种可能的选项(需要进行物理或软件修改) 和非线性控制器

    1. 您可以将 GPIO7 (CANTXA)和 GPIO5 (CANRXA)直接短接至板载 CAN 收发器和连接器、然后使用 CAN 引导。 CAN 专家在下周不在办公室、但如果您对这种方法感兴趣、我可以提供更多详细信息。 根据原理图
    2. 您可以使用 can_flash_programmer 以及"-d f28p55x"标志来尝试 CAN-FD 引导、并修改 F280015x DCAN 闪存内核以使用 CAN-FD 外设通信。 无需对 LaunchPad 进行物理修改。
    2. 附加了 dCAN 闪存内核的链接器文件、但无法识别闪存段、因此 将 ALIGN (32)指令添加到链接器文件"选项"区域中的所有行中。 您能不能看一下、告诉我们这样做是否正确? (注意:文件扩展名已从.cmd 更改为.txt、因此可以附加它)。[/QUOT]

    您只需将512位边界对齐指令添加到 闪存 部分中)。 DCAN 闪存内核在 RAM 中执行、因此无需添加 ALIGN 指令。 在应用链接器命令文件(在 RAM 中执行的闪存内核将加载到闪存)中、您需要为所有已初始化的闪存段添加 align 指令。

    如有任何疑问、请告知我!

    此致!

    Matt

    [/quote]
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Matt:  

    非常感谢您再次来到我们的网站。  

    我们 将通过您建议的 CAN-FD 方法尝试引导。 同时、如果您可以提供有关硬件修改方法的更多详细信息、那将会很有帮助。 谢谢!

    此致、
    Taif

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Taif:

    来自 F280015x LaunchPad 原理图

    在到 CAN 收发器的路由中、您必须与 GPIO7的 S4建立以下连接以替换 GPIO4:

    1. 将 GPIO5 (J8_71)焊接到 GPIO5_CANRX
    2. 将 GPIO7 (J8_77)焊接到 GPIO4_CANTX
    3. 保留原理图中设置的 CAN 路由开关(至 BP)
      1. 这将确保 GPIO4断开连接

    此致!
    Matt

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Matt:

    感谢您以前的帮助。 在实施您建议的硬件修改后、我们可以使用 dcan_flash_programmer 在闪存内核下载期间确认 PCAN-USB Pro 的 LED 现在呈绿色闪烁。

    但是、我们仍需要澄清 flash_kernel_ex5_dcan_flash_kernel 中 DCAN_Boot 函数的正确参数值(由于在应用程序固件下载阶段、LED 仍会呈红色闪烁):

    EntryAddr = DCAN_Boot (CAN_BOOT_SENDTEST、0、1、20、
    WE_Protection_A_Mask、WE_Protection_B_Mask、WE_Protection_UO_Mask);

    具体而言:

    1. 使用 GPIO 引脚5和7时、CAN_BOOT_SENDTEST 的值应该是多少?
    2. F2800157器件的频率值是否为"20"?

    此致、
    Taif

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Taif:

    [报价 userid="638591" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1470172/launchxl-f2800157-can-flash-programming-issues---bitrate-sleep_time-and-entryaddr-configuration---peak-pcan-usb-pro-error-status-red-led/5656788 #5656788"]使用 GPIO 引脚5和7时、CAN_BOOT_SENDTEST 的值应该是什么?[/QUOT]

    您可以将 DCAN_Boot () bootmode 参数保留为 CAN_BOOT_SENDTEST、 但确保您使用 BOOTDEF 0x82 .

    SENDTEST 引导模式不会具有等待 CAN 帧的10秒超时、但会使用与正常(0x02、0x22、0x42、0x62)引导选项相同的 GPIO 分配。

    您可以在 DCAN_Boot.c 中验证 CAN_BOOT_SENDTEST 是否将 GPIO7/GPIO5配置为正确使用 CAN TX/RX (忽略注释):

    是 F2800157器件正确频率值"20"?

    在"device.h"中、取消注释并使用第241行上的#define USE_PLL_SRC_INTOSC。 注释掉#define USE_PLL_SRC_XTAL

    此外、在 DCAN_Boot ()中将 switchToXTAL 参数设置为"0"以确保使用 INTOSC。

    上电时、器件引导 ROM 由片上10MHz 振荡器(INTOSC2)提供时钟。 该值需要设置为闪存内核中的主要内部时钟源、并且是复位时的默认时钟。

    最后、生成闪存内核 txt 文件后、在文本编辑器中将其打开并将字节3-4更改为"C0 7A"。 这些字节包含用于配置 CAN 总线比特率的元数据。

    下面是一个示例:

    根据 CAN 闪存编程指南

    为什么选择"C0 7A"? 这些值对应于 bootloader_can_timing.h 中的以下 CAN_CALC 设置:

    此致!
    Matt