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-F28379D:内核2上的 CAN

Guru**** 1456330 points
Other Parts Discussed in Thread: SYSCONFIG, C2000WARE
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1357041/launchxl-f28379d-can-on-core-2

器件型号:LAUNCHXL-F28379D
主题中讨论的其他器件:SysConfigC2000WARE

您好!

我在双核应用上遇到了一个大问题。

我从 TI 提供的 LED 闪烁应用程序开始。

我尝试使用 SysConfig 在第二个内核上添加 CAN 功能。 我将该示例放在随附的文件中。

当我在调试会话中运行项目时,我注意到 Core 2上的程序从未从 Board_init()函数中退出。

更确切地说、程序在 CAN_initRAM 函数中停止:

有人能帮我吗?

e2e.ti.com/.../2024_5F00_05_5F00_02_5F00_CANSupport_5F00_v2.zip

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

    Vincent、

             我们不能在 e2e 上支持对代码进行调试。 希望以下指针对您有所帮助。

    您可以从非常简单的开始、比如两个 CPU 上的 LED 闪烁代码。 例如、请参阅随附的测试案例。 运行该代码后、您可以将 CPU2上的代码替换为 CAN 代码。

    e2e.ti.com/.../5554.led_5F00_ex1_5F00_blinky_5F00_cpu1.ce2e.ti.com/.../5554.led_5F00_ex1_5F00_blinky_5F00_cpu2.c

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

    是否在 CPU2中启用 CAN 时钟? 如果在调用 CAN_InitRAM ()之前未启用 CAN 时钟,代码可能会卡在 while 循环中。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    调试您的代码不是我们在 e2e 上可以支持的内容

    你好。 我理解、这正是我在下面所做的:

    1-将 TI 提供的示例加载到新的 CCS 会话中

    2 -检查 LE LED 是否在闪烁(对于该示例、调试会话中的闪存配置)-->确定

    在 CPU2的 SysConfig 文件中添加 CAN 外设。 我没有输入任何代码。 我甚至没有要求在 SysConfig 中进行邮箱配置

    4-再次启动调试会话-->否。

    您可以尝试这样做、并将看到您永远不会退出  CAN_initRAM 函数

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

    你好。

    这似乎很有趣。 正如你在上面看到的、我回复了 Hareesh:我只需加载 TI 网站上提供的示例并在 SysConfig 中添加了 CAN 功能、此示例不再起作用。

    我应该如何在 CPU2上启用时钟 RAM?

    在 TI 提供的示例中:

    -在 Device_init()中(在代码的开头调用)我发现了这一点,这让我认为时钟已启用:*

    -在 SysConfig 中,我选中了"启动 CAN"框

    这会引起 CAN_CTL_init 和 CAN_CTL_CCE 寄存器的初始化。

    你还有什么建议吗?

    非常感谢。

    文森特

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

    您好、 Vincent:

    代码对我来说很好。 您是否在 CPU 内核1上尝试过相同的代码?  

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

    您好!

    您是否尝试在 LAUNCHXL 上运行该代码?

    我在 CPU2上使用 CAN 加入 TI 示例。 您是否可以对其进行测试并告诉我您是否重现此行为?

    (该代码不能在独立模式下使用、请在调试会话中运行)

    -没有 CAN (完全按照 TI 网站上的下载方式):2个 LED 闪烁

    -我打开 SysConfig 文件并在 CPU2上添加一个 CAN ,只是初始化外设

    如之前所述、代码会停止到初始化阶段、

    -回答你的问题,我做了同样的事情 CPU1 :

    一切都好。

    e2e.ti.com/.../2024_5F00_05_5F00_13_5F00_CANInitCPU2TI.zip

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

    您好 QJ:

    你看到我的第一个答案了吗? 我没有新的消息,你是我唯一的希望。 此问题对于我的项目非常严重。

    请提前告知您。

    文森特

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

    很抱歉给您带来这个问题。

    我不知道您是否看到了我的第一次回复:在 TI 示例上添加 CAN 外设就是我所做的(如下所示)。 不管用。 我的项目处于待机状态。 我确实需要对 CPU2上的 CAN 堆栈进行编码。

    您是否可以尝试仅使用 sysconfig 在 leed_ex2_sysconfig TI 示例中添加 CAN?

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

    您好、Vincent:

    我不熟悉 C2000器件、尚未获得用于测试的 LaunchPad。 如果注释掉 CAN_initRAM (base)、可以发送和接收 CAN 消息吗?

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

    您好!

    不、我没有尝试、因为我想完全按照 TI 的建议进行。

    此外,我想知道如何能够工作,没有这个功能(如果它存在,它必须是有用的)。 我会尝试,但请,你可以得到一个 launchpad 并做测试吗? (即使注释 CAN_initRAM 允许我发送消息、该解决方案也无法在项目中实现、因为我们不会确定将来不会发生任何错误)

    同样、我也按照 TI 的要求做了:下载一个示例、添加功能、无需任何用户代码。 我希望 TI 能为我提供支持  

    我非常希望您能很快回来找我。 我必须告诉团队、在本周结束时、CAN 功能在第二核心方面是否可行。

    编辑:我只是尝试注释命令  can_initRAM()。 由于它属于 DriverLib 库、这个注释似乎未被考虑在内;在下面:代码进入 CAN_InitRAM

    无论如何、改变 DriverLib 的内容是不可接受的

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

    您好、Vincent:

    您是否为代码中使用的 CAN 模块(CAN_A 或 CAN_B)选择了 CPU2? CAN 模块可以连接到 CPU1或 CPU2、但不能同时被两个内核使用 。  

    通过向 CPUUSEL8寄存器写入0x1以将 CAN_A 连接到 CPU2、可以在 CPU1中完成内核选择。 默认情况下、CAN_A 和 CAN_B 连接到 CPU1。

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

    您好!

    1)在 SysConfig 的 CPU2部分声明 CAN,我预计 BoardInint ()函数中有一些东西配置 CPUSEL8寄存器中的此位。

    2) 2)由于 TI 示例不包含位字段、因此我被迫使用其中一个代码、其中包括位字段(我在 TI 示例中添加了位字段文件)

    在 CPU1工程中、我添加了此行:

    我唯一能说的就是代码实际上没有被阻止进入 RAM 初始化。 我要等到明天才能测试罐、我会让 oy 知道我是否可以接收和发送消息

    3) 3)再说一次、TI 再次命令使用 DriverLib、而不是 bitfield。 什么是允许设置 CPUSEL8位的 DriverLib 函数? 为什么 SysConfig 不生成相应行?

    恐怕、如果我将来有问题(我会遇到问题)、我无法在 TI 示例上重现问题、因为 TI 示例不再涉及位域。 然后、TI 将回答"以我们的示例为例、我们无法调试您的代码"

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

    在 DriverLib 中有一个 API 可以为 CAN 选择 CPU:

    API 位于以下文件中:C:\ti\c2000\C2000Ware_5_02_00_00\driverlib\f2837xd\driverlib\sysctl.h、行:2984  

    静态内联空 SYSCTL_selectCPUForPeripheral (SYSCTL_CPUSelPeripheral 外设、uint16_t peripheralInst、SYSCTL_CPUSel cpuInst)

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

    您好 QJ。

    我要感谢你的支持。 我的问题得到了解决。

    我希望我们再讨论一次。

    美好的一天