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.

[参考译文] TMS320F28388D:如何在 CM 项目中使用 SysConfig GPIO 名称?

Guru**** 2538955 points
Other Parts Discussed in Thread: SYSCONFIG, C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1396353/tms320f28388d-how-to-use-sysconfig-gpio-name-in-cm-project

器件型号:TMS320F28388D
主题中讨论的其他器件:SysConfigC2000WARE

工具与软件:

您好!

我 从事 多核 编程工作。 我想同时使用 c28和 cm 磁芯。

我在 c28工程的 SysConfig 中为 CM 的 GPIO 和 C28的 GPIO 进行了核心配置、如下图所示:

CM 的 GPIO 配置:

C28的 GPIO 配置:

如果我要在 c28工程中使用 c28_led 名称、可以轻松编写"gpio_togglePin (c28_led);";但如果我要在 CM 工程中使用 cm_led 名称、则无法编写"gpio_togglePin (cm_led);"。

C28代码:

#include "driverlib.h"
#include "device.h"
#include "board.h"
#include "c2000ware_libraries.h"

//
// Main
//
void main(void)
{
    Device_init();

    Device_bootCM(BOOTMODE_BOOT_TO_FLASH_SECTOR0);

    Device_initGPIO();

    Interrupt_initModule();

    Interrupt_initVectorTable();

    Board_init();

    C2000Ware_libraries_init();

    EINT;
    ERTM;

    while(1)
    {
        GPIO_togglePin(c28_led);
        DEVICE_DELAY_US(5000000);
    }


}

CM 代码:

#include "driverlib_cm.h"
#include "cm.h"

//
// Main
//
void main(void)
{
    CM_init();

    while(1)
    {
        GPIO_togglePin(31);
        DEVICE_DELAY_US(1000000);
    }
}

如何使用我在 cm 项目的 c28的 SysConfig 文件中指定的名称(cm_led)?

此外、我 使用的是 System.xml。

system.xml 的 ss:

谢谢你。

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

    尊敬的 Furkan:  

    您能否分享 board.h 和 board、c 文件?

    我也不认为调用  cm_led 名称以切换 GPIO 的问题,你能分享你得到的构建错误吗?

    请在 C2000Ware_5_02_00_00\driverlib\f2838x\examples\c28x_dual\led 位置查看 f2838x 器件的 C28x 双核示例(SysConfig LED Blinky  示例)。

    此示例适用于 CPU1和 CPU2、但您可以将第二个内核配置为 CM 并在 SysConfig 中进行更改。 请告诉 我这是否可以解决您的问题。

    谢谢

    Aswin

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

    您好!

    有更新吗?

    此外、我在 CPU1 SysConfig 中指定的 CM 工程中没有有关"cm_led"的建议或声明。

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

    尊敬的 Furkan:

    您是否尝试过我建议的双核示例?

    [报价 userid="542961" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1396353/tms320f28388d-how-to-use-sysconfig-gpio-name-in-cm-project/5347127 #5347127"]请查看位于以下位置的 f2838x 器件的 C28x 双核示例(SysConfig LED Blinky 示例) - C2000Ware_5_02_00_00\driverlib\f2838x\examples\c28x_dual\le  

    如前所述、以 CPU1和 CPU2为例、可以将 CPU2配置更新为 CM 并进行检查。

    是否可以共享.syscfg 文件、我将亲自试用此示例、并让您知道。

    谢谢

    Aswin

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

    您好、Aswin、

    我尝试将 CPU2转换为 cm、但未成功。 老实说,我不能完全确定我应该采取的步骤。 附件是我实施的修改的图像和说明。

    最初、我访问了您提到的示例。 随后、我打开了 CM 示例工程、并将该 CM 工程合并到 system.xml 内的 CM 内核中。

    接下来、我将选定的 LED2内核切换到 CM。随后我编译 board.c 和 board.h 文件。

    您可以看到、我无法使用名称 CM_LED。

    除了所做的更改外、我没有进行任何其他更改;SysConfig 或 CPU2 SysConfig 中没有其他更改。 可能需要调整 SysConfig 中的某些设置。 但我未找到有关如何将 CM 内核与 SysConfig 配合使用的详细资源。

    SysConfig 文件:

    /**
     * These arguments were used when this file was generated. They will be automatically applied on subsequent loads
     * via the GUI or CLI. Run CLI with '--help' for additional information on how to override these arguments.
     * @cliArgs --device "F2838x" --package "176pin" --part "F2838x_176pin" --context "CPU1" --product "C2000WARE@5.03.00.00"
     * @versions {"tool":"1.20.0+3587"}
     */
    
    /**
     * Import the modules used in this configuration.
     */
    const gpio  = scripting.addModule("/driverlib/gpio.js", {}, false);
    const gpio1 = gpio.addInstance();
    const gpio2 = gpio.addInstance();
    const ipc   = scripting.addModule("/driverlib/ipc.js");
    
    /**
     * Write custom configuration values to the imported modules.
     */
    gpio1.direction       = "GPIO_DIR_MODE_OUT";
    gpio1.$name           = "CPU1_LED";
    gpio1.gpioPin.$assign = "GPIO31";
    
    gpio2.direction       = "GPIO_DIR_MODE_OUT";
    gpio2.controllerCore  = "GPIO_CORE_CM";
    gpio2.$name           = "CM_LED";
    gpio2.gpioPin.$assign = "GPIO34";
    
    ipc.ipcRegisterFlag = ["IPC_FLAG31"];
    ipc.flagHandler31   = "IPC_SYNC";

    谢谢。

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

    尊敬的 Furkan:

    我已与我们的专家交叉核实了 CM 内核中的 SysConfig 支持、目前 CM 内核中没有 SysConfig 支持。 您需要修改该示例以用作非基于 SysConfig 示例的实现。

    我们已经在 CPU1和 CM 内核的 SDK 中存在一个 LED 闪烁示例、请看一下、它 位于 C2000Ware_5_03_00_00\driverlib\f2838x\examples\c28x_cm\led 位置。

    谢谢

    Aswin

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

    尊敬的 Aswin:

    感谢您的答复。 我可以使用 cm 磁芯控制 LED。

    我的主要问题是如何在 CPU1的 SysConfig 中分配的 CM 工程中使用 CM_LED 名称、因为我可以在 CPU2文件中 CPU1的 syconfig 中使用名称。

    谢谢。

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

    尊敬的 Furkan:

    您提供的 CM_LED 名称将位于 board.h CPU1示例中 flash/syscfig/CPU1文件中生成的文件中。 您将无法为 CM 内核使用从生成的文件中生成的 CM_LED 名称、因为它位于不同的示例(CPU1)中。 您可以在 cm.h 文件中使用预定义的 GPIO 名称

    (#define DEVICE_GPIO_PIN_LED2     34u // LD3的 GPIO 编号)

    您将能够在 CPU2中使用宏、但不能在 CM 内核中使用、因为仅为 CPU1和 CPU2生成 syscfg 文件

    谢谢

    Aswin

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

    您好、Aswin、

    感谢您提供这些信息。

    此致。