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:有关 CLB 的文档缺失

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1184756/tms320f28379d-missing-documentation-on-the-clb

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

你(们)好

我正在为公司详细说明在 TMS320F28379D 器件上运行双核的可能性/限制。

有关 CLB 内部工作原理的文档很多、但我发现很难找到有关如何在37xD 器件中连接 CLB 的合适文档。

第一个示例是如何为 CLB 计时、通过搜索这些论坛、我发现 CLB 显然与 epwm1共享时钟。

但是、不清楚是否所有四个 CLB 都按[1]所暗示的 epwm1计时

或者、如果是与 epwm1共享的 CLB1、以及与 epwm2 a.s.o 共享的 CLB2、如[3]所暗示的那样

或者、如果我位于完全错误的页面上、因为[2]中引用的函数在此器件的 c2000Ware 中不存在?

我只能通过搜索论坛、而不能在参考手册或数据表中找到这些重要信息。

-第二个相关示例,来自[3],我发现 CPU 对 CLB 寄存器的访问权限也遵循 ePWM 寄存器,同样不能确定映射,您[]提示可能是 CLB1<->epwm1、CLB2<->epwm2 a.s.o。 但我仍然没有找到任何文档。

我感觉 CLB 在最后一分钟被投入到37xD 设计中、有人忘记勾选"更新文档"任务。

[1] https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1093256/tms320f28379d-clb-clock-and-epwm/4050802

[2] e2e.ti.com/.../4020620

[3] e2e.ti.com/.../3199001

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

    尊敬的 Martin:

    感谢您就此问题与我们取得联系。 F28379D 是第一个具有此 CLB 外设的系列、直到几年前、我们才启用 CLB 的客户配置、而以前、它仅限于我们已建立的一组 API 调用。 F28379D 具有1类 CLB、因此对其有一些其他器件不存在的限制。  

    一个这样的示例是 CLB 的 CPU 所有权、就像您提到的那样。 CLB 所有权必须与相应的 ePWM 模块协同工作、因此、如果要在 CPU2上使用 CLB2、还需要为 EPWM2提供对 CPU2的访问。 同样、如果您需要 CPU2上的 CLB3、则需要将 EPWM3的控制权交给 CPU2。  

    在双核 F2838X 器件上、您只需将所需的 CLB 所有权分配给 CPU2即可、而无需分配相应编号的 ePWM 模块。  

    对于时钟、有一个类似的要求、其中 CLB1时钟来自 EPWM1、CLB2时钟来自 EPWM2、CLB3时钟来自 EPWM3、CLB4时钟来自 EPWM4、如(https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/963432/tms320f28388d-the-clock-source-of-clb/3560100)所示。 其他器件不符合此要求

    我们积压的工作之一实际上是为我们各自的 F28379D 和 F2838x 器件的 CLB 外设创建更广泛的 CPU2支持文档、因此很高兴您提出了这一要求。 对于时钟、我们将在 SysConfig 工具中发布时钟支持、该工具还可用作 CLB 的另一个参考。 我确实认为我们缺少一些文档、至少对于在 F28379D 上使用 CLB 的要求是如此、因此如果您注意到任何其他内容、请随时联系我们、我将尝试将这些想法添加到我们的文档中

    此致、

    Peter

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

    你(们)好

    感谢您的回答、

    虽然它没有真正解决这个问题,但完成这一积压项目可能会解决,因此我将把它标记为已解决。

    很高兴看到、这个积压项目是否获得 了 Jira 编号、我可以按照该编号获取进度的更新信息?

    另外、当您到达那里时、请随时发送草稿供审核。

    建议:在 C200Ware driverlib 函数中的文档中添加一些注释。

    示例1.

    //*****************************************************************************
    //
    //! Set global enable.
    //!
    //! \param base is the base address of a CLB tile's logic config register.
    //!
    //! This function enables the CLB via global enable register.
    //!
    //! \note CLBx shares the clock with EPWMx. So to enmable CLB1, do enable EPWM1 clock.
    //!
    //! \return None.
    //
    //*****************************************************************************
    static inline void CLB_enableCLB(uint32_t base)
    

    示例2.

    //*****************************************************************************
    //
    //! Enables a peripheral.
    //!
    //! \param peripheral is the peripheral to enable.
    //!
    //! Peripherals are enabled with this function.  At power-up, all peripherals
    //! are disabled; they must be enabled in order to operate or respond to
    //! register reads/writes.
    //!
    //! \note Note that there should be atleast 5 cycles delay between enabling the
    //! peripheral clock and accessing the peripheral registers. The delay should be
    //! added by the user if the peripheral is accessed immediately after this
    //! function call.
    //! Use asm(" RPT #5 || NOP"); to add 5 cycle delay post this function call.
    //!
    //! \note CLB and EPWM shares the same clock, to enable a CLB use the coresponding EPWM.
    //!       so a call with SYSCTL_PERIPH_CLK_EPWM1 will also enable CLB1, SYSCTL_PERIPH_CLK_EPWM2 will also enable CLB2 and so forth.
    //! \return None.
    //
    //*****************************************************************************
    static inline void
    SysCtl_enablePeripheral(SysCtl_PeripheralPCLOCKCR peripheral)

    您可能希望短语、但只要在此处提及 CLB 和 ePWM、就可以提高认识并让我寻求更多信息。

    它不会取代对正确文档的需求、但仍然比完全不了解更好。

    我认为这些注释也应该出现在 SysConfig 工具中的 CLB 章节中。

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

    提出后续问题。

    参考手册 SPRUHM8I–2013年12月–2019年9月修订

    在图26-5 (p2786)中,是名为 CLBx_OUT0至 CLBx_OUT15的输出,但在下表中,它们被命名 为 CLBx_OUT7_0,然后将 CLBx_OUT1_0更改为 CLBx_OUT1_7,我假设它们映射为 CLBx_OUT9 =CLBx_1?

    CLB_OUT_EN 寄存器是一个32位寄存器、文本指示每个位启用输出、但它如何映射到26.3章中提到的16个输出。

    在 driverlib 函数 CLB_setOutputMask 中、也为所有32位提供了定义(CLB_OUTP_xx)?

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

    尊敬的 Martin:

    您完全正确、输出信号通过两种不同的方式写入、但思路是  CLBx_OUT9 = CLBx_OUT1_1、CLBx_OUT10 = CLBx_OUT2_1等 我们实际上正在重命名这些信号并澄清这些信号、以便在下一次文档更新中发布。

    关于 CLB_OUT_EN、我认为这32个寄存器中只有16位可用于访问 CLB 输出、其中每个位前16位对应于每个(复制的) CLB 输出。

    在我们较新的器件中、CLB 实际上总共有32个输出、因此使用了整个 CLB_OUT_EN 寄存器。 我将检查我们的问题板并查看是否已经记录在案、但这将帮助我们在寄存器表和 DriverLib 软件中澄清这一点、以消除混淆

    此致、

    Peter