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:具有和不具有&quot 的 SysConfig;软件产品"

Guru**** 2619495 points

Other Parts Discussed in Thread: SYSCONFIG, C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/993813/tms320f28388d-sysconfig-with-and-without-a-software-product

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

大家好、我有一个新的.syscfg 文件、该文件是从 PinMux 文件转换而来的。 引脚多路复用功能、用于规划新 PCB 的引脚 IO、这非常有用。 现在、我要开始为这个新电路板配置软件项目、我要尝试使用 SysConfig 来帮助设置 GPIO 引脚多路复用、我已经意识到、当从头开始创建一个新的 SysConfig 自拍时、会出现一个"软件产品"下拉菜单。 此下拉列表最初为空、但从 该帖子中、我可以添加 C2000Ware 目录(C:\ti\c2000\C2000Ware_3_02_00_00)、然后显示名为 C2000 SysConfig 的软件产品

然后指定软件产品会显示不同的 SysConfig 接口。 这些差异如下所述。

这是指定了软件产品的 SysConfig

这是未指定软件产品的 SysConfig:

我的问题是:

  1. 是否有用户指南解释了这两个用例之间的差异(有无软件包、专门针对 C2000/f28388D)? 如果有、则可能忽略以下问题:
  2. 为什么一个生成 board.h/.c、另一个 f2838x_pinmux.h/.c 和 pinmux.h/.c?
  3. 我能否在两个用例之间迁移 SysConfig? 具体而言、事后我可以使用用于 PinMux 和_add_软件产品的.syscfg 文件吗?
  4. 如果我选择仅使用 f2838x_pinmux/pinmux 而不是 board.h/board.c、我会缺少什么?

谢谢你

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

    没有软件产品是传统产品、不推荐使用。

    一定要使用软件产品。 它的功能要多得多。

    board.c 和 board.h 文件不仅初始化引脚多路复用器、还可以初始化外设模式。

    是的、您应该能够将旧的 syscfg pinmux 旧文件加载到格式中。

    最新的 C2000Ware 3.04中还提供了 C2000 SysConfig 版本3.0。 使用最新版本。

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

    你好、Nima、感谢你的回答。

    我无法将 SW 产品添加到原始.syscfg 文件中、我还尝试使用文本编辑器手动编辑.syscfg 文件、但收到一些错误并放弃。 最后,我手动复制了 pinmux 配置(!)。 这是非常令人 TI 的事情、因为我必须抓取 pinmux 配置的屏幕截图、并在具有软件产品的新配置中重新生成它们。

    我位于 SysConfig 1.8.0+1863上、并且使用 C2000Ware 3.0.2。  如何在不从头开始重新创建 pinmux 配置的情况下更改为3.0.4?

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

    您可以轻松移植它。 只需使用 SYSCFG 打开文件。 一切都将自动发生。   

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

    是的、我可以将其打开、但效果很好。 问题是打开软件产品后无法设置软件产品。 支持吗?

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

    您能告诉我们如何加载到 syscfg pinmux 传统文件 中并将其添加到 独立 GUI 中的软件产品中吗?

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

    能否帮助您更改独立工具中的软件产品?

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

    您可以在命令行上将产品和脚本传递给 UI。 命令行将覆盖脚本上一次使用的设置、当您保存脚本时、脚本将具有更新的设置。 假设已将 SysConfig 安装到默认位置、请运行以下命令:

    C:\ti\sysconfig/1.8.0\nw\nw.exe C:\ti\sysconfig/1.8.0 --product --script

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

    你好 、感谢你的反馈。  

    以下是我尝试该命令时遇到的错误:

    以下是.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 "F2838x" --package "337bga" --part "F2838x_337bga"
     * @versions {"data":"2021010520","timestamp":"2021010520","tool":"1.7.0+1746","templates":"2021010520"}
     */
    
    /**
     * These are the peripherals and settings in this configuration
     */
    const iCAN1                         = scripting.addPeripheral("CAN");
    iCAN1.$name                         = "MyCANInterface";
    iCAN1["CAN@_RX"].$assign            = "GPIO17";
    iCAN1["CAN@_TX"].$assign            = "GPIO12";
    const iCM_I2C1                      = scripting.addPeripheral("CM-I2C");
    iCM_I2C1.$name                      = "MyCM-I2C1";
    iCM_I2C1["CM-I2C@_SDA"].$assign     = "GPIO31";
    iCM_I2C1["CM-I2C@_SCL"].$assign     = "GPIO105";
    const iECAT1                        = scripting.addPeripheral("ECAT");
    iECAT1.$name                        = "ECAT";
    iECAT1.ESC_LED_LINK0_ACTIVE.$assign = "GPIO143";
    iECAT1.ESC_LED_LINK1_ACTIVE.$assign = "GPIO144";
    iECAT1.ESC_LED_RUN.$assign          = "GPIO146";
    iECAT1.ESC_LED_ERR.$assign          = "GPIO145";
    iECAT1.ESC_LED_STATE_RUN.$used      = false;
    iECAT1.ESC_I2C_SDA.$assign          = "GPIO150";
    iECAT1.ESC_I2C_SCL.$assign          = "GPIO151";
    iECAT1.ESC_TX1_DATA3.$assign        = "GPIO135";
    iECAT1.ESC_TX1_DATA2.$assign        = "GPIO134";
    iECAT1.ESC_TX1_DATA1.$assign        = "GPIO132";
    iECAT1.ESC_TX1_DATA0.$assign        = "GPIO131";
    iECAT1.ESC_SYNC0.$assign            = "GPIO127";
    iECAT1.ESC_SYNC1.$used              = false;
    iECAT1.ESC_MDIO_CLK.$assign         = "GPIO26";
    iECAT1.ESC_MDIO_DATA.$assign        = "GPIO27";
    iECAT1.ESC_PHY_CLK.$used            = false;
    iECAT1.ESC_TX1_ENA.$assign          = "GPIO129";
    iECAT1.ESC_RX1_CLK.$assign          = "GPIO137";
    iECAT1.ESC_RX1_DV.$assign           = "GPIO136";
    iECAT1.ESC_RX1_ERR.$assign          = "GPIO138";
    iECAT1.ESC_RX1_DATA0.$assign        = "GPIO139";
    iECAT1.ESC_RX1_DATA1.$assign        = "GPIO140";
    iECAT1.ESC_RX1_DATA2.$assign        = "GPIO141";
    iECAT1.ESC_RX1_DATA3.$assign        = "GPIO142";
    iECAT1.ESC_PHY_RESETn.$used         = false;
    iECAT1.ESC_RX0_CLK.$assign          = "GPIO163";
    iECAT1.ESC_RX0_DV.$assign           = "GPIO162";
    iECAT1.ESC_RX0_ERR.$assign          = "GPIO164";
    iECAT1.ESC_RX0_DATA0.$assign        = "GPIO165";
    iECAT1.ESC_RX0_DATA1.$assign        = "GPIO166";
    iECAT1.ESC_RX0_DATA2.$assign        = "GPIO167";
    iECAT1.ESC_RX0_DATA3.$assign        = "GPIO168";
    iECAT1.ESC_TX0_CLK.$assign          = "GPIO157";
    iECAT1.ESC_TX0_DATA0.$assign        = "GPIO158";
    iECAT1.ESC_TX0_DATA1.$assign        = "GPIO88";
    iECAT1.ESC_TX0_DATA2.$assign        = "GPIO89";
    iECAT1.ESC_TX0_DATA3.$assign        = "GPIO90";
    iECAT1.ESC_TX0_ENA.$assign          = "GPIO84";
    iECAT1.ESC_TX1_CLK.$assign          = "GPIO130";
    iECAT1.ESC_LATCH0.$assign           = "GPIO29";
    iECAT1.ESC_LATCH1.$used             = false;
    iECAT1.ESC_PHY0_LINKSTATUS.$assign  = "GPIO86";
    iECAT1.ESC_PHY1_LINKSTATUS.$assign  = "GPIO149";
    const iEPWM1                        = scripting.addPeripheral("EPWM");
    iEPWM1.$name                        = "PWM1";
    iEPWM1["EPWM#A"].$assign            = "GPIO28";
    iEPWM1["EPWM#B"].$used              = false;
    const iEPWM2                        = scripting.addPeripheral("EPWM");
    iEPWM2.$name                        = "PWM2";
    iEPWM2["EPWM#A"].$assign            = "GPIO147";
    iEPWM2["EPWM#B"].$assign            = "GPIO148";
    const iEPWM3                        = scripting.addPeripheral("EPWM");
    iEPWM3.$name                        = "PWM3";
    iEPWM3["EPWM#A"].$assign            = "GPIO24";
    iEPWM3["EPWM#B"].$used              = false;
    const iEPWM4                        = scripting.addPeripheral("EPWM");
    iEPWM4.$name                        = "MotorU";
    iEPWM4["EPWM#A"].$assign            = "GPIO22";
    iEPWM4["EPWM#B"].$assign            = "GPIO23";
    const iEPWM5                        = scripting.addPeripheral("EPWM");
    iEPWM5.$name                        = "MotorV";
    iEPWM5["EPWM#A"].$assign            = "GPIO20";
    iEPWM5["EPWM#B"].$assign            = "GPIO21";
    const iEPWM6                        = scripting.addPeripheral("EPWM");
    iEPWM6.$name                        = "MotorW";
    iEPWM6["EPWM#A"].$assign            = "GPIO18";
    iEPWM6["EPWM#B"].$assign            = "GPIO19";
    const iEQEP1                        = scripting.addPeripheral("EQEP");
    iEQEP1.$name                        = "QuadEncoder1";
    iEQEP1["EQEP#_A"].$assign           = "GPIO54";
    iEQEP1["EQEP#_B"].$assign           = "GPIO55";
    iEQEP1["EQEP#_STROBE"].$used        = false;
    iEQEP1["EQEP#_INDEX"].$assign       = "GPIO57";
    const iEQEP2                        = scripting.addPeripheral("EQEP");
    iEQEP2.$name                        = "QuadEncoder2";
    iEQEP2["EQEP#_A"].$assign           = "GPIO62";
    iEQEP2["EQEP#_B"].$assign           = "GPIO63";
    iEQEP2["EQEP#_STROBE"].$assign      = "GPIO64";
    iEQEP2["EQEP#_STROBE"].$used        = false;
    iEQEP2["EQEP#_INDEX"].$assign       = "GPIO65";
    const iGPIO1                        = scripting.addPeripheral("GPIO");
    iGPIO1.$numPins                     = 35;
    iGPIO1["0"].$assign                 = "GPIO106";
    iGPIO1["1"].$assign                 = "GPIO107";
    iGPIO1["2"].$assign                 = "GPIO108";
    iGPIO1["3"].$assign                 = "GPIO109";
    iGPIO1["4"].$assign                 = "GPIO11";
    iGPIO1["5"].$assign                 = "GPIO110";
    iGPIO1["6"].$assign                 = "GPIO111";
    iGPIO1["7"].$assign                 = "GPIO112";
    iGPIO1["8"].$assign                 = "GPIO113";
    iGPIO1["9"].$assign                 = "GPIO114";
    iGPIO1["10"].$assign                = "GPIO115";
    iGPIO1["11"].$assign                = "GPIO116";
    iGPIO1["12"].$assign                = "GPIO117";
    iGPIO1["13"].$assign                = "GPIO118";
    iGPIO1["14"].$assign                = "GPIO119";
    iGPIO1["15"].$assign                = "GPIO120";
    iGPIO1["16"].$assign                = "GPIO121";
    iGPIO1["17"].$assign                = "GPIO126";
    iGPIO1["18"].$assign                = "GPIO128";
    iGPIO1["19"].$assign                = "GPIO133";
    iGPIO1["20"].$assign                = "GPIO14";
    iGPIO1["21"].$assign                = "GPIO15";
    iGPIO1["22"].$assign                = "GPIO152";
    iGPIO1["23"].$assign                = "GPIO153";
    iGPIO1["24"].$assign                = "GPIO154";
    iGPIO1["25"].$assign                = "GPIO155";
    iGPIO1["26"].$assign                = "GPIO156";
    iGPIO1["27"].$assign                = "GPIO159";
    iGPIO1["28"].$assign                = "GPIO16";
    iGPIO1["29"].$assign                = "GPIO160";
    iGPIO1["30"].$assign                = "GPIO161";
    iGPIO1["31"].$assign                = "GPIO2";
    iGPIO1["32"].$assign                = "GPIO25";
    iGPIO1["33"].$assign                = "GPIO3";
    iGPIO1["34"].$assign                = "GPIO49";
    iGPIO1.$name                        = "GPIO";
    const iI2C1                         = scripting.addPeripheral("I2C");
    iI2C1.$name                         = "I2C1";
    iI2C1["I2C@_SDA"].$assign           = "GPIO56";
    iI2C1["I2C@_SCL"].$assign           = "GPIO43";
    const iI2C2                         = scripting.addPeripheral("I2C");
    iI2C2.$name                         = "I2C2";
    iI2C2["I2C@_SDA"].$assign           = "GPIO66";
    iI2C2["I2C@_SCL"].$assign           = "GPIO69";
    const iINPUTXBAR1                   = scripting.addPeripheral("INPUTXBAR");
    iINPUTXBAR1.$name                   = "MyINPUTXBAR2";
    iINPUTXBAR1.INPUTXBAR1.$used        = true;
    iINPUTXBAR1.INPUTXBAR2.$used        = true;
    iINPUTXBAR1.INPUTXBAR3.$used        = true;
    const iSD1                          = scripting.addPeripheral("SD");
    iSD1.$name                          = "SigmaDelta";
    iSD1["SD#_C1"].$assign              = "GPIO123";
    iSD1["SD#_D1"].$assign              = "GPIO122";
    iSD1["SD#_C2"].$assign              = "GPIO125";
    iSD1["SD#_D2"].$assign              = "GPIO124";
    iSD1["SD#_C3"].$used                = false;
    iSD1["SD#_D3"].$used                = false;
    iSD1["SD#_C4"].$used                = false;
    iSD1["SD#_D4"].$used                = false;
    const iSPI1                         = scripting.addPeripheral("SPI");
    iSPI1.$useCase                      = "STANDARD";
    iSPI1.$name                         = "SPI1";
    iSPI1["SPI@_SIMO"].$assign          = "GPIO91";
    iSPI1["SPI@_SOMI"].$assign          = "GPIO92";
    iSPI1["SPI@_CLK"].$assign           = "GPIO93";
    iSPI1["SPI@_STEn"].$assign          = "GPIO94";
    const iSPI2                         = scripting.addPeripheral("SPI");
    iSPI2.$useCase                      = "STANDARD";
    iSPI2.$name                         = "SPI2";
    iSPI2["SPI@_SIMO"].$assign          = "GPIO32";
    iSPI2["SPI@_SOMI"].$assign          = "GPIO33";
    iSPI2["SPI@_CLK"].$assign           = "GPIO34";
    iSPI2["SPI@_STEn"].$assign          = "GPIO35";
    const iSPI3                         = scripting.addPeripheral("SPI");
    iSPI3.$useCase                      = "STANDARD";
    iSPI3.$name                         = "SPI3";
    iSPI3["SPI@_SIMO"].$assign          = "GPIO60";
    iSPI3["SPI@_SOMI"].$assign          = "GPIO61";
    iSPI3["SPI@_CLK"].$assign           = "GPIO58";
    iSPI3["SPI@_STEn"].$assign          = "GPIO59";
    const iSPI4                         = scripting.addPeripheral("SPI");
    iSPI4.$useCase                      = "STANDARD";
    iSPI4.$name                         = "SPI4";
    iSPI4["SPI@_SIMO"].$assign          = "GPIO50";
    iSPI4["SPI@_SOMI"].$assign          = "GPIO51";
    iSPI4["SPI@_CLK"].$assign           = "GPIO52";
    iSPI4["SPI@_STEn"].$assign          = "GPIO53";
    const iUART1                        = scripting.addPeripheral("UART");
    iUART1.$name                        = "USBUART";
    iUART1["UART@_TX"].$assign          = "GPIO42";
    iUART1["UART@_RX"].$assign          = "GPIO85";
    
    /**
     * 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.
     */
    iCAN1.$suggestSolution                  = "CANB";
    iCM_I2C1.$suggestSolution               = "CM-I2CA";
    iECAT1.$suggestSolution                 = "ECAT";
    iEPWM1.$suggestSolution                 = "EPWM15";
    iEPWM2.$suggestSolution                 = "EPWM2";
    iEPWM3.$suggestSolution                 = "EPWM13";
    iEPWM4.$suggestSolution                 = "EPWM12";
    iEPWM5.$suggestSolution                 = "EPWM11";
    iEPWM6.$suggestSolution                 = "EPWM10";
    iEQEP1.$suggestSolution                 = "EQEP2";
    iEQEP2.$suggestSolution                 = "EQEP3";
    iI2C1.$suggestSolution                  = "I2CA";
    iI2C2.$suggestSolution                  = "I2CB";
    iINPUTXBAR1.$suggestSolution            = "INPUTXBAR";
    iINPUTXBAR1.INPUTXBAR1.$suggestSolution = "GPIO10";
    iINPUTXBAR1.INPUTXBAR2.$suggestSolution = "GPIO1";
    iINPUTXBAR1.INPUTXBAR3.$suggestSolution = "GPIO0";
    iSD1.$suggestSolution                   = "SD1";
    iSPI1.$suggestSolution                  = "SPID";
    iSPI2.$suggestSolution                  = "SPIA";
    iSPI3.$suggestSolution                  = "SPIB";
    iSPI4.$suggestSolution                  = "***";
    iUART1.$suggestSolution                 = "UARTA";
    

    请注意、 SysConfig 的"关于"菜单显示版本为1.8.0、但 C:\驱动器中的目录名为"1.7.0"、这一点很奇怪。  不过、可能与此错误没有任何关系。

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

    我想您将其添加到脚本中并尝试一下。

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

    我的注释是将 syscfg 脚本从早期版本的 C2000Ware 迁移到较新版本。  查看您的脚本、它使用 传统的非产品(仅适用于 pinmux)方法。  遗憾的是、不支持从该脚本迁移到产品-您必须重新创建脚本。  话虽如此、您可以使用 Web 版本(https://dev.ti.com/sysconfig)一次打开两个版本的 SysConfig

     为供将来参考、异常中的错误堆栈确实会列出导致问题的脚本中的行号。  堆栈的第二个帧是 "LogicBoard.syscfg"第163行。  因此、您可以使用该信息编辑脚本、以修复出现的任何次要中断语句 。  但是、在这种情况下、我认为您需要使用产品而不是传统的非产品方法来重新创建脚本。

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

    再次感谢您的澄清。 是的、从我下面的原始问题来看、我想知道如何软件产品添加到从 PinMux 迁移的 syscfg 文件中。 听起来似乎最终答案是否定的-必须重新创建。  

    [引用 userid="70593" URL"~/support/microcontrollers/c2000/f/c2000-microcontrollers-forum/993813/tms320f28388d-sysconfig-with-and-without-a-software-product、具体而言、我能否在事后使用用于 PinMux 和_add_软件产品的.syscfg 文件?