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.

[参考译文] TMS320F28379D:将 XCLKOUT 从 GPIO73路由到 Launchpad28379D 上的 GPIO 输出 XBAR1

Guru**** 2539810 points
Other Parts Discussed in Thread: TMS320F28379D, SYSCONFIG

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1404988/tms320f28379d-routing-xclkout-from-gpio73-to-gpio-output-xbar1-on-launchpad28379d

器件型号:TMS320F28379D
主题中讨论的其他器件: SysConfig

工具与软件:

我将通过 Launchpad28379D 评估 TMS320F28379D 处理器、并根据提供的示例使用位字段头文件创建我自己的项目。 我可以设置 GPIO 和中断并使其正常工作、然后想检查系统的时钟。 通读技术手册、我发现 XCLKOUT 可用于在 GPIO73上输出时钟。 但是、该引脚仅路由至 LaunchPad 背面的高密度连接器。 我找到了一篇相关的论坛帖子、其中的解决方案是使用 XBAR 将时钟信号从 GPIO73路由到 GPIO 输出 XBAR。 目标是将 GPIO73上的时钟信号路由到 InputXBAR1、然后再路由到示波器上的 GPIO 输出 XBAR1 (GPIO24)。 我遇到了麻烦、到目前为止、我只能在引脚上看到200mV 60Hz 的信号、无论时钟源如何都是如此。 根据技术手册中的信息、我使用以下命令设置了以下规则:  

 //要使 GPIO73输出 XCLK、但写操作之间需要69个时钟周期、所以先写这个
ClkCfgRegs.CLKSRCCTL3.bit.XCLKOUTSEL = 6;//立即选择 INTOSC2

 /*在 GPIO73上输出系统时钟以监视范围*/

GpioCtrlRegs.GPCMUX1.bit.GPIO73 = 3;//将多路复用设置为 XCLK
GpioCtrlRegs.GPCDIR.bit.GPIO73 = 1;  //设置为输出
GpioCtrlRegs.GPAPUD.bit.GPIO24 = 0;// Enable PULLUP on GPIO24 (在 GPIO24上启用上拉)
GpioCtrlRegs.GPADIR.bit.GPIO24 = 1;//设置为输出
GpioCtrlRegs.GPAMUX2.bit.GPIO24 = 1;//设置多路复用器、因此引脚24是 XBAROUT0
//需要将该引脚路由到输入 XBAR、然后路由到 OUTPUTXBAR、因为
//此引脚73未从 Launchpad 的封装上引出!!
OutputXbarRegs.OUTPUTLOCK.bit.lock = 0;
InputXbarRegs.INPUTSELECTLOCK.bit.INPUT1SELECT = 0;
InputXbarRegs。 INPUT1SELECT = 73;
OutputXbarRegs.OUTPUT1MUX0TO15CFG.bit.MUX1 = 0x1;
OutputXbarRegs.OUTPUT1MUXENABLE.bit.MUX1 = 1;
OutputXbarRegs.OUTPUTLATCHENABLE.bit.Output1 = 0;
OutputXbarRegs.OUTPUTINV.bit.Output1 = 0;

请说明我是否忽略了设置特定的寄存器、或者为什么我无法看到 GPIO24上的时钟输出。  

感谢你能抽出时间

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

    尊敬的 Mike:

    我已在 F28379D LaunchPad 上成功地在 GPIO25上进行了测试、似乎 LaunchPad 上没有 GPIO24。 您能发送有关如何连接 GPIO24的快照吗?

    谢谢!

    Luke

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

    尊敬的 Luke:

    从 LaunchPad 概述文档中可以看到 GPIO24连接到扩展接头 J4的引脚4

    此外、在 GPIO 多路复用器设置的技术手册中、可以通过将 mux 设置为1将 GPIO24设置为 OUTPUTXBAR1

    对于我的代码、我为 GPIO 引脚24进行了以下设置:

    GpioCtrlRegs.GPAPUD.bit.GPIO24 = 0;// Enable PULLUP on GPIO24 (在 GPIO24上启用上拉)
    GpioCtrlRegs.GPADIR.bit.GPIO24 = 1;//设置为输出
    GpioCtrlRegs.GPAMUX2.bit.GPIO24 = 1;//设置多路复用器、因此引脚24是 XBAROUT1

    我只使用示波器探头通过 J2引脚10连接到外部接头 J4引脚4并接地。

    我会尝试 让 GPIO25上的 OUTPUTXBAR2 像您提到的那样正常工作。

    此致、

    -Mike

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

    尊敬的 Mike:

    我的错、现在我也在 LaunchPad 上看到了 GPIO24、但我不确定最初是如何漏掉它的。

    我也在 GPIO25上对其进行了测试并且它可以正常工作、但我在配置中使用了 SysConfig。 我注意到的配置与配置的唯一区别是我没有在 GPIO24上启用内部上拉。 您是否可以尝试禁用此功能?

    谢谢!

    Luke

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

    嗨、Luke、

    我曾尝试在 GPIO24上注释掉该行设置内部上拉、但 仍然不走运。 我 想知道我是否需要更改时钟配置寄存器中的任何其他内容。 到目前为止、我只对该寄存器使用以下命令:  

    ClkCfgRegs.CLKSRCCTL3.bit.XCLKOUTSEL = 2;// Select the CPU1.sysclock of now (立即选择 CPU1.sysclock)

    我从此处设置 GPIO 引脚的多路复用器(两个均设置为输出、将 GPIO73设置为输入不会有任何区别 ATM)。  

    GpioCtrlRegs.GPCDIR.bit.GPIO73 = 1;//设置为输入还是保留为输出?
    GpioCtrlRegs.GPCMUX1.bit.GPIO73 = 3;//将多路复用设置为 XCLK

    // GpioCtrlRegs.GPAPUD.bit.GPIO24 = 0;// Enable PULLUP on GPIO24 (在 GPIO24上启用上拉)
    GpioCtrlRegs.GPADIR.bit.GPIO24 = 1;//设置为输出
    GpioCtrlRegs.GPAMUX2.bit.GPIO24 = 1;//设置多路复用器、因此引脚24是 XBAROUT1

    最后、我按如下方式设置输入和输出 XBAR:  

    InputXbarRegs。 INPUT1SELECT = 73;
    OutputXbarRegs.OUTPUT1MUX0TO15CFG.bit.MUX1 = 0x1;
    OutputXbarRegs.OUTPUT1MUXENABLE.bit.MUX1 = 1;
    OutputXbarRegs.OUTPUTLATCHENABLE.bit.Output1 = 0;
    OutputXbarRegs.OUTPUTINV.bit.Output1 = 0;

    在这里、我将尝试按照您以前的方式切换到 GIO25和 OUTPUTXBAR2、看看这是否起作用。 如果不是这样、那么我们可以确定的是、我们在时钟寄存器、GPIO 寄存器和输入输出 XBAR 寄存器的设置中忽略了一些问题。  

    感谢您的观看和帮助、

    此致!

    -Mike

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

    尊敬的 Mike:

    我建议从一个空项目开始、然后使用 SysConfig 来完成此操作、这应该会得到与我自己所用的完全相同的配置。

    这是我的.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 "F2837xD" --part "F2837xD_337ZWT" --package "F2837xD_337ZWT" --context "CPU1" --product "C2000WARE@5.03.00.00"
     * @v2CliArgs --device "TMS320F28379D" --package "337ZWT" --context "CPU1" --product "C2000WARE@5.03.00.00"
     * @versions {"tool":"1.21.0+3687"}
     */
    
    /**
     * Import the modules used in this configuration.
     */
    const inputxbar_input  = scripting.addModule("/driverlib/inputxbar_input.js", {}, false);
    const inputxbar_input1 = inputxbar_input.addInstance();
    const other            = scripting.addModule("/driverlib/other.js", {}, false);
    const other1           = other.addInstance();
    const outputxbar       = scripting.addModule("/driverlib/outputxbar.js", {}, false);
    const outputxbar1      = outputxbar.addInstance();
    
    /**
     * Write custom configuration values to the imported modules.
     */
    inputxbar_input1.$name         = "myINPUTXBARINPUT0";
    inputxbar_input1.inputxbarGpio = "GPIO73";
    
    other1.$name                    = "myOTHER0";
    other1.useCase                  = "CUSTOM";
    other1.useInterfacePins         = ["XCLKOUT"];
    other1.other.$assign            = "OTHER";
    other1.other.xclkoutPin.$assign = "GPIO73";
    
    outputxbar1.$name                            = "myOUTPUTXBAR0";
    outputxbar1.useSourceSelect                  = true;
    outputxbar1.sourceSignals                    = ["INPUTXBAR1"];
    outputxbar1.outputxbar.outputxbarPin.$assign = "GPIO24";
    
    /**
     * 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.
     */
    outputxbar1.outputxbar.$suggestSolution = "OUTPUTXBAR1";
    

    如果您有任何其他问题、请告诉我。

    谢谢!

    Luke。