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.

[参考译文] RTOS/AMIC110:Profinet 中的 PTCP 补偿方法

Guru**** 2952510 points

Other Parts Discussed in Thread: AMIC110

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/665723/rtos-amic110-ptcp-compensation-method-in-profinet

器件型号:AMIC110

工具/软件:TI-RTOS

您好!

我正在使用 AMIC110和 PRU-ICSS-PROFINET_Slave_01.00.02.02 + ti-processor-SDK-RTOS-AM335x-EVM-04.02.00.09调查 Profinet  

我不太清楚 eCAP 是如何与 PTCP 同步使用的。

在 PTCP 处理函数中、我看到了两种同步补偿方法。 它依赖 ptcpEnableSlowCompensation。

如果它使用慢速补偿、它会调整 PRU 中 IEP 的补偿寄存器。 同步 SYNC0输出信号是合理的。

但是、如果 ptcpEnableSlowCompensation = 0 (默认值)、它会调整 eCAP 寄存器。 我不知道 eCAP 如何影响同步。

是否有人可以提供更多详细信息? 如果我能够更好地了解 PTCP 同步算法的概念、那将是很棒的。

谢谢!  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    RTOS 团队已收到通知。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢你 Biser。
    我认为还有另一个问题需要澄清。
    根据数据表、AMIC110不支持 eCAP。
    我不确定 eCAP 和 EDMA 是否仅用于"快速"补偿。
    但 ptcpEnableSlowCompensation 设置为0、这意味着在 Profinet 项目中使用 eCAP。 我不知道它是否可以正常工作。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Nathan、

    我们在 AMIC110 EVM 的上一个版本中验证了 IRT 模式。 尝试阐明 AMIC110上的 eCAP 支持、并将在近期向您介绍 PTCP 实施的详细信息。

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

    Nathan、

    AMIC110不支持 SoC 级 eCAP、但仍然支持 PRU-ICSS eCAP 子模块、请参阅数据表中的第1.1节:

    PRU-ICSS 内的外设:

    –一个具有流控制引脚的 UART 端口、

    支持高达12Mbps 的速率

    –一个增强型捕捉(eCAP)模块

    关于 PTCP 时钟补偿方法:

    PRU 固件从专用缓冲器接收和转发同步和后续帧。 SYNC ISR 触发时钟同步。 适用于 AM335x 和 AM437x 等 SoC 平台的 PTCP 设计使用 ECAP、EDMA 和 IEP 链实现时钟同步。

            MasterT = Torg + LINE_DELAY
            LocalT =接收到的 SYNC 帧的 RXSFD

    deltaT 的计算公式为
            deltaT=MasterT-LocalT

    对 deltaT 应用滤波以获得时钟漂移

            adjDeltaT = deltaT 值的简单移动平均值
    在一个同步间隔内、IEP 计数器由 adjDeltaT 进行补偿。

    此致、

    Garrett

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

    您好、Garrett、

    感谢您对 PTCP 补偿的解释、它非常有用且清晰。

    我很困惑、因为重新配置 eCAP 的目标寄存器看起来是 SoC 级别的、而不是 PRU-ICSS。

    项目中的源代码:

    void PN_PTCP_reconfigEcap (PN_Handle pnHandle、Int32_t PERIOD)
    
    {
    
    uint32_t pwmssBaseAddr =(pnHandle->pnPtcpConfig)->ecapPwmsBaseAddr;
    
    //停止计数器*/
    
    HW_WR_FIRELD16 (pwPtCPAP + CCP2 BaseAddr)
    
    CSL_ECAP_ECCTL2_TSCTRSTOP、CSL_ECAP_ECCTL2_TSCTRSTOP_STOP_STOP_STOPPED);
    
    //将 TSCTR 设置为0 */
    
    HW_WR_FIELD32 (pwmsBaseAddr + CSL_ECAP_TSCTR、
    
    CSL_ECAP_TSCTR_TSCTR、CSL_ECAP_TSCTR_TSCTR_RESETVAL);
    
    //加密:检查是否可以使用影子寄存器?
    
    设置周期*/
    
    HW_WR_FILD32 (pwmsBaseAddr + CSL_ECAP_CAP1、
    
    CSL_ECAP_CAP1_CAP1、(((周期/ 5)/ 2)- 1);
    
    //清除周期事件标志 0x00c1*/
    
    HW_WR_FIELD16 (pwmssBaseAddr + CSL_ECAP_ECCLR、
    
    CSL_ECAP_ECCLR_INT、CSL_ECAP_ECCLR_INT_CLEAR);
    
    HW_WR_FILD16 (pwmsBaseAddr + CSL_ECAP_ECCLR、
    
    CSL_ECAP_ECCLR_PRDEQ、CSL_ECAP_ECCLR_PRDEQ_CLEAR);
    
    HW_WR_FILD16 (pwmsBaseAddr + CSL_ECAP_ECCLR、
    
    CSL_ECAP_ECCLR_CMPEQ、CSL_ECAP_ECCLR_CMPEQ_CLEAR);
    
    //启动计数器*/
    
    HW_WR_FIELD16 (pwmsBaseAddr + CSL_ECAP_ECCTL2、
    
    CSL_ECAP_ECCTL2_TSCTRSTOP、CSL_ECAP_ECCTL2_TSCTRSTOP_FREE_RUNNING);
    
    } 

    此致、

    Nathan

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

    >>重新配置 eCAP 的目标寄存器显示在 SoC 级别,而不是 PRU-ICSS
    重新配置 eCAP 的目标寄存器确实处于 SoC 级别。

    目前没有计划在 AMIC110上支持 SOC eCAP 功能。 但是、您的查询已发起讨论以审查此决定、我们将在讨论完成后更新此帖子。

    此致、
    Garrett
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    TI 已决定在 AMIC110中支持 SoC 级 eCAP 功能。 此功能将在 AMIC110数据手册的下一修订版中更新。

    此致、
    Paul