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.

[参考译文] TMS320F28P650DK:其中恰好是 CLB 输出交叉开关连接到 GPIO

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1319781/tms320f28p650dk-where-exactly-clb-output-xbar-connected-to-the-gpio

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

TRM 如下图所示、但使用具有 CLB5.0输出的 GPIO32时、无论 GPyDIR 位的状态如何、I 都似乎观察到 CLB 输出。

GPIO 输出在更改 GPTMUX1和 GPTMUX1时会发生变化、因此 CLB-output-Xbar 将转到多路复用器、但显示的 TIR 状态缓冲器似乎被忽略。

此外、我似乎无法将逻辑块输出 CLB5.0路由到任何其他 GPIO、例如 GPIO 41不会产生输出(保持零) 、当我路由到 GPIO32时我会观察到该输出、但确实会对 XBAR_invertOutputSignal (...)做出反应 相当令人困惑……

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

    尊敬的 Alexy:

    将 GPIO32配置为输入时、多路复用器选项中是否选择了标准 GPIO 设置?

    您能否共享您正在写入的代码以将 CLB 输出发送到 GPIO41?

    谢谢!

    卢克

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

    您好 Luke、我只是更改了 GPBDIR 寄存器、我怀疑从多路复用器到 GPBDIR 的额外线路会覆盖我的设置? 看起来我无法将 SysConfig 附加到该消息、但我会尝试将其作为代码发布-其中包含我尝试进行的用于正常运行的完整配置。

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    /**
    * 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 --board "/boards/LAUNCHXL_F28P65X" --context "CPU1" --product "C2000WARE@5.01.00.00"
    * @versions {"tool":"1.19.0+3426"}
    */
    /**
    * Import the modules used in this configuration.
    */
    const adc = scripting.addModule("/driverlib/adc.js", {}, false);
    const adc1 = adc.addInstance();
    const adc2 = adc.addInstance();
    const adc3 = adc.addInstance();
    const analog = scripting.addModule("/driverlib/analog.js", {}, false);
    const analog1 = analog.addInstance();
    const asysctl = scripting.addModule("/driverlib/asysctl.js");
    const led = scripting.addModule("/driverlib/board_components/led", {}, false);
    const led1 = led.addInstance();
    const clb = scripting.addModule("/driverlib/clb.js", {}, false);
    const clb1 = clb.addInstance();
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

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

    尊敬的 Alexy:

    SysConfig 配置看起来正常。 将此 GPIO 更改为输入时是否启用了上拉电阻器? 如果没有、您能否尝试启用上拉以查看此问题是否仍然存在?

    如果多路复用器选择是 CLB 输出 XBAR、为什么要将 GPIO 配置为输入?

    谢谢!

    卢克

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

    我没有将 GPIO 配置为输入、我尝试使用三态输出。 试图限制问题并理解 GPIO 图、因为我未能将相同的 CLB 输出路由到 GPIO41、无论我将什么设置放入 GPIO 控制寄存器都是如此。 我的实验 显示、GPIO32和 GPIO41之间有很大不同的行为、所以一些基本的东西要么从文档中缺失、要么不是很明显。 谢谢你。

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

    尊敬的 Alexey:

    我懂了。 我将在自行开发的 F28P65x Launchpad 上测试此问题。 我明天会回到你身边。

    谢谢!

    卢克

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

    尊敬的 Alexey:

    我能够在我身边重复这个问题。 虽然无法将 CLB 输出发送到 GPIO41、但可以直接写入 GPIO41。 我将联系设计团队、确定 CLBOUTPUTXBAR2是否连接到 GPIO41。

    谢谢!

    卢克

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

    尊敬的 Alexey:

    设计团队确认 CLBOUTPUTXBAR2已连接到 GPIO41、但是我们意识到 CLBOUTPUTXBAR2未连接到 GPIO32、实际上已连接到 GPIO33。 CLBOUTPUTXBAR1连接到 GPIO32。 只是一个供参考的人,如果你不知道这一点。

    我认为这是 driverlib 中的问题。 调用 XBAR_setOutputMuxConfig 函数时、它会将 XBAR_OutputNum struct 作为输入参数。 此结构本质上是一个偏移地址、用于确定要写入的寄存器、其中 CLBOUTPUTXBAR1MUX0TO15的地址与所有 CLBOUTPUTXBAR 寄存器的基址相同:

    偏移地址应该都是两个的倍数、因为每个 CLBOUTPUXBAR 实例有两个寄存器。 此函数在 CLB OUTPUTXBAR 和 OUTPUTXBAR 模块之间共享。

    不过、在 F28P65x 上、我们更新了 OUTPUTXBAR 模块、以便为每个 OUTPUTXBAR 实例提供64个输入多路复用器和4个寄存器、从而更新了 XBAR_setOutputMuxConfig 函数。 然而、CLBOUTPUTXBAR 的格式保持不变(每个 CLBOUTPUTXBAR 实例2个寄存器)。 因此、如果您尝试为 CLBOUTPUTXBAR 调用此函数(SysConfig 会调用此函数)并使用除 CLBOUTPUTXBAR1之外的任何 CLBOUTPUTXBAR 实例、则使用的偏移地址将是其应有值的两倍。 当您尝试通过 SysConfig 配置 CLBOUTPUTXBAR2时、实际上是从寄存器角度配置 CLBOUTPUTXBAR3。 CLBOUTPUTXBAR1上不会发生该问题、因为偏移地址为0、因此将偏移地址加倍不会产生影响。

    我将与软件团队合作来修复此问题、并将其包含在4月5日发布的下一个 C2000Ware 中。 如果您需要尽快更新此文件、我可以帮助您在本地纠正此问题。 对于给您带来的不便、我们深表歉意。

    谢谢!

    卢克

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

    Luke、感谢您的调查、现在很有意义。  短期内、我可以用 Xbar 偏移量除以2来调用 driverlib、它似乎起作用:

    Fullscreen
    1
    XBAR_setOutputMuxConfig1(CLBOUTPUTXBAR_BASE, myCLB_OUTPUTXBAR1/2, XBAR_OUT_MUX00_CLB5_OUT0);
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

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

    尊敬的 Alexey:

    很高兴听到此变通办法解决了问题。 如果您有任何其他问题、请告诉我。

    Luke