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.

[参考译文] TMS320F280037C:通用电机控制 SDK c2000.syscfg 在从100PZ 更改为64PM 时赢得#39;t 编译

Guru**** 2524690 points
Other Parts Discussed in Thread: TMS320F280037C, SYSCONFIG, TMS320F280039C

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1254544/tms320f280037c-universal-motor-control-sdk-c2000-syscfg-won-t-compile-on-change-from-package-100pz-to-64pm

器件型号:TMS320F280037C
主题中讨论的其他器件:C2000WARESysConfigTMS320F280039C

您好!

我有采用64引脚 F280037C 的定制硬件、并且我正在使用系统配置工具来设置工程。

最终、我还计划实施 TI MotorControl SDK 设置。

我已在 MotorControl SDK 中使用以下路径来启动 c2000.syscfg:

\c2000_SDK_4_02_01_00\solutions\universal_motorcontrol_syscfg\f28003x\" Ware_Motor

调试配置成功地连接至处理器并进行测试、因此我的硬件似乎在工作。

我尝试使用以下内容来编译该项目:

     完全配置的 c2000sys.cfg 文件

     一个"空白" c2000sys.cfg 文件。

下面针对每个都会弹出相同的错误。

我已经附上了"空白" c2000.syscfg 文件

此代码是自动生成的、并且与自身发生冲突。

有什么想法吗?  

(编辑:排印错误)

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

    TMS320F280037C.ccxml

    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <configurations XML_version="1.2" id="configurations_0">
        
        <configuration XML_version="1.2" id="Texas Instruments XDS2xx USB Debug Probe_0">
            <instance XML_version="1.2" desc="Texas Instruments XDS2xx USB Debug Probe_0" href="connections/TIXDS2XXUSB_Connection.xml" id="Texas Instruments XDS2xx USB Debug Probe_0" xml="TIXDS2XXUSB_Connection.xml" xmlpath="connections"/>
            <connection XML_version="1.2" id="Texas Instruments XDS2xx USB Debug Probe_0">
                <instance XML_version="1.2" href="drivers/tixds560icepick_c.xml" id="drivers" xml="tixds560icepick_c.xml" xmlpath="drivers"/>
                <instance XML_version="1.2" href="drivers/tixds560c28x.xml" id="drivers" xml="tixds560c28x.xml" xmlpath="drivers"/>
                <instance XML_version="1.2" href="drivers/tixds560cla2.xml" id="drivers" xml="tixds560cla2.xml" xmlpath="drivers"/>
                <instance XML_version="1.2" href="drivers/tixds560cs_child.xml" id="drivers" xml="tixds560cs_child.xml" xmlpath="drivers"/>
                <instance XML_version="1.2" href="drivers/tixds560ajsm.xml" id="drivers" xml="tixds560ajsm.xml" xmlpath="drivers"/>
                <platform XML_version="1.2" id="platform_0">
                    <instance XML_version="1.2" desc="TMS320F280037C_0" href="devices/f280037c.xml" id="TMS320F280037C_0" xml="f280037c.xml" xmlpath="devices"/>
                </platform>
            </connection>
        </configuration>
    </configurations>
    

    c2000.syscfg

    /**
     * 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 "F28003x" --package "64PM" --part "F28003x_64PM" --product "C2000MCSDK@1.00.00.00"
     * @versions {"tool":"1.16.1+2960"}
     */
    
    /**
     * Import the modules used in this configuration.
     */
    const analog           = scripting.addModule("/driverlib/analog.js", {}, false);
    const analog1          = analog.addInstance();
    const asysctl          = scripting.addModule("/driverlib/asysctl.js");
    const can              = scripting.addModule("/driverlib/can.js", {}, false);
    const can1             = can.addInstance();
    const dac              = scripting.addModule("/driverlib/dac.js", {}, false);
    const dac1             = dac.addInstance();
    const device_support   = scripting.addModule("/driverlib/device_support.js");
    const epwm             = scripting.addModule("/driverlib/epwm.js", {}, false);
    const epwm1            = epwm.addInstance();
    const epwm2            = epwm.addInstance();
    const gpio             = scripting.addModule("/driverlib/gpio.js", {}, false);
    const gpio1            = gpio.addInstance();
    const gpio2            = gpio.addInstance();
    const gpio3            = gpio.addInstance();
    const gpio4            = gpio.addInstance();
    const gpio5            = gpio.addInstance();
    const gpio6            = gpio.addInstance();
    const gpio7            = gpio.addInstance();
    const inputxbar_input  = scripting.addModule("/driverlib/inputxbar_input.js", {}, false);
    const inputxbar_input1 = inputxbar_input.addInstance();
    const inputxbar_input2 = inputxbar_input.addInstance();
    const sci              = scripting.addModule("/driverlib/sci.js", {}, false);
    const sci1             = sci.addInstance();
    const sync             = scripting.addModule("/driverlib/sync.js");
    
    /**
     * Write custom configuration values to the imported modules.
     */
    asysctl.enableTemperatureSensor = true;
    asysctl.analogReferenceVoltage  = "1P65";
    asysctl.analogReference         = "INTERNAL";
    
    can1.$name                 = "myCAN0";
    can1.can.$assign           = "CANA";
    can1.can.can_rxPin.$assign = "GPIO3";
    can1.can.can_txPin.$assign = "GPIO2";
    
    dac1.$name        = "DACA_OUT";
    dac1.enableOutput = true;
    
    analog1.$name                                    = "myANALOGPinMux0";
    dac1.analog                                      = analog1;
    analog1.useCase                                  = "CUSTOM";
    analog1.useInterfacePins                         = ["A0/B15/C15/DACA_OUT","A1/B7/DACB_OUT","A10/B1/C10","A11/B10/C0","A12, C1","A14/B14/C4","A15, C7/B9","A2/B6/C9","A3, B3/VDAC, C5","A4/B8, C14","A5, C2/B12","A8, B0/C11","A9, B4/C8","B2/C6","C3/A7"];
    analog1.analog.$assign                           = "ANALOG";
    analog1.analog["a0/b15/c15/daca_outPin"].$assign = "A0/B15/C15/DACA_OUT";
    analog1.analog["a1/b7/dacb_outPin"].$assign      = "A1/B7/DACB_OUT";
    analog1.analog["a10/b1/c10Pin"].$assign          = "A10/B1/C10";
    analog1.analog["a11/b10/c0Pin"].$assign          = "A11/B10/C0";
    analog1.analog["a12, c1Pin"].$assign             = "A12, C1";
    analog1.analog["a14/b14/c4Pin"].$assign          = "A14/B14/C4";
    analog1.analog["a15, c7/b9Pin"].$assign          = "A15, C7/B9";
    analog1.analog["a2/b6/c9Pin"].$assign            = "A2/B6/C9";
    analog1.analog["a3, b3/vdac, c5Pin"].$assign     = "A3, B3/VDAC, C5";
    analog1.analog["a4/b8, c14Pin"].$assign          = "A4/B8, C14";
    analog1.analog["a5, c2/b12Pin"].$assign          = "A5, C2/B12";
    analog1.analog["a8, b0/c11Pin"].$assign          = "A8, B0/C11";
    analog1.analog["a9, b4/c8Pin"].$assign           = "A9, B4/C8";
    analog1.analog["b2/c6Pin"].$assign               = "B2/C6";
    analog1.analog["c3/a7Pin"].$assign               = "C3/A7";
    
    device_support.useStandardCodeStartBranch = false;
    
    epwm1.useCase                = "CUSTOM";
    epwm1.$name                  = "WPWMrev";
    epwm1.useInterfacePins       = ["EPWM#_B"];
    epwm1.epwm.$assign           = "EPWM1";
    epwm1.epwm.epwm_bPin.$assign = "GPIO1";
    
    epwm2.$name                  = "WPWM";
    epwm2.useCase                = "CUSTOM";
    epwm2.useInterfacePins       = ["EPWM#_A"];
    epwm2.epwm.$assign           = "EPWM5";
    epwm2.epwm.epwm_aPin.$assign = "GPIO16";
    
    gpio1.$name           = "LED1_GPIO";
    gpio1.direction       = "GPIO_DIR_MODE_OUT";
    gpio1.gpioPin.$assign = "GPIO12";
    
    gpio2.$name           = "REnable_GPIO";
    gpio2.direction       = "GPIO_DIR_MODE_OUT";
    gpio2.gpioPin.$assign = "GPIO11";
    
    gpio3.$name           = "LED2_GPIO";
    gpio3.direction       = "GPIO_DIR_MODE_OUT";
    gpio3.gpioPin.$assign = "GPIO13";
    
    gpio4.$name           = "Lights_GPIO";
    gpio4.direction       = "GPIO_DIR_MODE_OUT";
    gpio4.gpioPin.$assign = "GPIO0";
    
    gpio5.useInterrupt    = true;
    gpio5.$name           = "ACCELINT_GPIO";
    gpio5.gpioPin.$assign = "GPIO10";
    gpio5.xint.enableInt  = true;
    
    gpio6.direction       = "GPIO_DIR_MODE_OUT";
    gpio6.$name           = "TStart_GPIO";
    gpio6.gpioPin.$assign = "GPIO6";
    
    gpio7.$name = "BladeStart";
    
    inputxbar_input1.$name         = "myINPUTXBARINPUT1";
    gpio5.xint.inputxbar           = inputxbar_input1;
    inputxbar_input1.inputxbarGpio = "GPIO10";
    
    inputxbar_input2.$name          = "myINPUTXBARINPUT0";
    inputxbar_input2.inputxbarInput = "XBAR_INPUT2";
    inputxbar_input2.inputxbarGpio  = "GPIO23";
    
    sci1.$name                 = "mySCI0";
    sci1.sci.$assign           = "SCIA";
    sci1.sci.sci_rxPin.$assign = "GPIO28";
    sci1.sci.sci_txPin.$assign = "GPIO29";
    
    sync.syncOutSource = "SYSCTL_SYNC_OUT_SRC_EPWM4SYNCOUT";
    
    /**
     * Pinmux solution for unlocked pins/peripherals. This ensures that minor changes to the automatic solver in a future
     * version of the tool will not impact the pinmux you originally saw.  These lines can be completely deleted in order to
     * re-solve from scratch.
     */
    gpio7.gpioPin.$suggestSolution = "GPIO33";

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

    您好 ARIC:

    完整配置的 c2000sys.cfg 文件

    这可能只是一个重复的拼写错误、但您能否确认文件扩展名是.syscfg?

    当我在我身边导入/编译工程(使用相同的 MCSDK 版本)时、我没有看到创建了 syscfg 文件夹、您是否修改了工程的任何默认配置? 如果转到 Project Properties > Build > SysConfig > Basic Options、会看到列出了什么(还会将鼠标悬停在此处列出的项目的三个圆点上、如果看到显示的项目、会告诉我)?

    此致、

    阿米尔·奥马尔

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

    奇怪的是、我看到 c2000.syscfg 文件夹非常清晰地放在项目文件夹中。

    首先、以下是 SysConfig > Basic Options 中列出的内容:

    我在目录(\universal_motorcontrol_syscfg\f28003x\")中重新导入工程后看到此问题

    以下是我在要导入的文件夹中看到的内容供参考:

    我按照一些额外的步骤来设置.syscfg、挖掘我现在执行的确切操作。

    我自己的注释:

    F28003x FIRMWARE
    
    A)Install CCS and all the latest Motor Control SDK
    B) import project from following directory: 
    ...\C2000Ware_MotorControl_SDK_4_02_01_00\solutions\universal_motorcontrol_syscfg\f28003x\
    C) perform SYSCFG update (see following...)
    
    SYSCFG UPDATE
    
    1) DOWNLOAD LATEST VERSION OF SYSCONFIG (minimum sysconfig_1.15.0)
    
    2) INSTALL IT HERE
    
    	...\(ccsVERSION NUMBER)\ccs\utils\
      
      example (my directoy as of 4/26/23)
      
    	C:\ti\ccs1210\ccs\utils\	
    	
    	
    3) ADD THE SYSCFG IN CCS PREFERENCES
    
    Window -> Preferences -> Code Composer Studio -> Products (select, NOT drop down) -> Install -> (select sysconfig folder, example: C:\ti\ccs1210\ccs\utils\sysconfig_1.16.1)
    
    4) ADD THE SYSCFG TO THE CCS PROJECT
    
    (right click 'universal_motorcontrol_syscfg_f28003x') -> Properties -> General -> 'Products' Tab -> SysConfig -> Edit -> (select version, example: 1.16.1) -> Apply and Close
    
    5) Restart CCS
    
    6) Double click 'c2000.syscfg' under the 'universal_motorcontrol_syscfg_f28003x'

    有关配置电机控制 SDK 的指南全都介绍了此处。

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

    您好 ARIC:

    奇怪,我看到 c2000.syscfg 文件夹非常清晰地放置在项目文件夹中。

    为了澄清一下、我不是在谈论 c2000.syscfg 文件、而是讨论错误指向的 syscfg 目录(./syscfg/...)。

    是否可以从基本属性中删除"${SysConfig_tool_SysConfig_manifest}"行? 如果这样不起作用、我将查看您提到的步骤。

    此致、

    阿米尔·奥马尔

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

    我删除了该行、并得到相同的错误。 尝试删除 syscfg 文件夹并已重新生成。

    我希望能够找到说明如何为新工程设置 syscfg 的页面。

    在文档中根本没有提到它( https://www.ti.com/lit/an/spracx3/spracx3.pdf?ts = 1690753058034&ref_url=https%253A%252F%252Fwww.ti.com%252Ftool%252FSYSCONFIG )

    编辑:

     对工程"universal_motorcontrol_syscfg_f28003x"进行新的导入会生成两个文件夹"device"和"syscfg"。

    这些文件 进行编译 最初、但初始目标器件是 TMS320F280039C 的100Pz、我将使用 F280037C。

    下面是我如何从100PZ 切换到器件64PM/F280037C:

    现在、编译会产生错误:

    浏览设置时、我发现这不是配置中唯一设置的位置:

    将此位置1会产生新错误:

    到目前为止、这些错误会阻止生成任何输出文件(不过、syscfg 和设备文件夹会生成)。

    我决定删除 c2000.syscfg 中的所有分配:

    实际上会生成输出文件、然后在编译时给出以下错误。 这是我能得到的最接近的结果。

    如果此时您将 c2000.syscfg 文件夹替换为"黑色"(排印错误、意味着"空白") c2000.syscfg 文件、您会在原始帖子的最顶部看到错误:

    下面针对每个都会弹出相同的错误。

    我已经附加了"black" c2000sys.cfg 文件

    此代码是自动生成的、并且与自身发生冲突。

    有什么想法吗?  

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

    这可能只是一个重复的拼写错误、但您能否确认文件扩展名是.syscfg?

    当我在我身边导入/编译工程(使用相同的 MCSDK 版本)时、我没有看到创建了 syscfg 文件夹、

    [/报价]

    该文件夹在 CPU1_FLASH 下生成:

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

    我想我已经将问题缩小为从100PZ 到64PM。 在 通用电机控制 c2000.syscfg 中从100引脚切换到64引脚、引发一系列错误。 最后有什么运气?

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

    获取 motorcontrol c2000.syscfg 以通过该更改进行编译。  

    接下来、我将尝试实施硬件的完整配置。

    我怀疑在 syscfg 中更改引脚配置会严重扰乱引脚多路复用分配、并不是所有更改都立即实现。

    我打赌完全配置的文件中的许多设置实际上都没有设置。 最好一次设置一个项目并进行编译、以捕捉这样的问题。

    以下是我遵循的步骤,对于任何感兴趣:

    1) 1)获取工程"universal_motorcontrol_syscfg_f28003x"的新导入  

    2) 2)在此处更改软件包设置:

    而此处为:

    [/报价]

    3) 更改后无法编译设置。 一些模拟引脚多路复用设置旁边有一个红色的 X:

    将"用例" 从"全部"切换为"自定义"、然后返回"全部"、这将清除错误并编译项目!

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

    已获得要编译的代码的完整配置。

    我认为我发现了真正的问题:

    已在此处选中"设备支持"。 取消选中它将允许我完全配置的原始 c2000.syscfg 进行编译。

    这可能是添加与 syscfg 已添加的文件发生冲突的 driverlib 文件吗?

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

    尊敬的 ARIC:

    感谢您提供有关您的解决方案的详细信息。 是的,我相信这是问题的主要罪魁祸首。 工程和 SysConfig 都在拉取器件支持文件、因此您会在工程构建中看到重新定义的错误。  您可以选择在 SysConfig 中禁用该功能(正如您所做的那样)或从 CCS 工程中排除 device_support 文件夹、要么就可以了


    此致、

    彼得