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.

[参考译文] AM2434:AM243x-LP

Guru**** 2392635 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1472656/am2434-am243x-lp

器件型号:AM2434

工具与软件:

你(们)好、

在 OSAL_Sched_sleep()中、参数的单位是什么?
是否有可能获取该函数的实现代码?

此致、

Jinlong

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

    此外、 我想取代  OSAL_Sched_yield ();和 OSAL_Sched_Sleep ()。

    您是否认为这是一个普遍的问题?  


    (;;)

    EC_API_SLV_mainLoopCyclic ();
    EC_API_SLV_getState (pApplicationInstance->ptEcSlvApi、&state、&alErrorCode);
    如果(EC_API_SLV_eESM_init <状态)

    OSAL_Sched_yield ();
    }
    设计

    /*开瓶给一些空气*/
    OSAL_Sched_Sleep (10);
    }
    }

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

    您好、沈金龙

    API OSAL_SCHED_SLEEP() 该参数以毫秒为单位、该 API 实现位于 OSAL 库中。

    调用 API OSAL_Sched_yield ()  将使线程处于就绪状态、下一个高/相同优先级线程可以运行并调用 API OSAL_SCHED_SLEEP() 将在指定的时间内阻止该线程。
    如果您更换  OSAL_Sched_yield () 或者会与  OSAL_SCHED_SLEEP()  在您提到的代码部分中、 它会影响的执行周期时间  EC_API_SLV_mainLoopCyclic () 对于低于1ms 的周期时间、它具有很大的影响。  

    此致、

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

    我已更换该行2或3个小时。 我没有观察到任何不良影响。 EtherCAT 周期小于1毫秒。  

    周期时间的测量似乎完全没问题(不共享数据)。

    您能否详细说明 EC_API_SLV_mainLoopCyclic ()到底做了什么?

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

    您好、沈金龙

    "0"的参数、就会跳过该行   OSAL_SCHED_SLEEP()  与具有相同的行为  OSAL_Sched_yield ()。  

    API  EC_API_SLV_mainLoopCyclic ()  包含 EtherCAT 子器件固件的主周期。 它处理 EtherCAT 状态机、CoE 邮箱服务、过程数据等。 如果避免此 API 的 执行频率高于较小的 EtherCAT 周期、则会对与应用程序之间的过程数据交换产生很大影响。 由于 EtherCAT 帧由 PRU-ICSS 块处理、因此会延迟的执行  EC_API_SLV_mainLoopCyclic ()  电缆长度  对丢失的 EtherCAT 帧不会产生任何影响。  

    此致、

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

    已更新:mainLoopCyclic 似乎调用 Beckhoff SSC 的 MainLoop ()。 请确认一下吗?

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

    您好、沈金龙

    有。 API EC_API_SLV_mainLoopCyclic ()调用 Beckhoff SSC 的 MainLoop ()。

    此致、

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

    是的、 Beckhoff 建议执行 mainLoopCyclic ()的方法与本文档第14页上的 chrome-extension://efaidnbmnnnibpcajpcglclefindmkaj/download.beckhoff.com/.../an_et9300_v1i8.pdf.相同


    然而,仍然有可能以较慢的频率(如1kHz)执行 mainLoopCyclic ()。 为什么? 由于我们使用的是 dc 同步,根据 Bechhoff 代码中的文档,MainLoop ()不负责 ESC 和用户应用程序之间的交换。 相反、PDI_ISR()正在获取它。  由于 TI 也在使用 Beckhoff 代码、PDI_ISR()将是相同的。  

    是否在任何 EtherCAT 演示项目中启用了 PDI_ISR()?

    此致!
    Jinlong

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

    您好、沈金龙

    是的、在自由运行模式下、在与 EtherCAT 周期没有任何同步的情况下、 以较低的速率执行 mainLoopCyclic ()会影响进程数据和邮箱数据交换。 但是,如果你使用同步,如 DC 同步模式,那么 PDI_ISR()将处理过程数据。  
    有。 在 EtherCAT 演示项目中启用 PDI_ISR()。

    此致、

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

    嗨、Harsha、
    我想推送一个位-我可以看看 PDI_ISR()是否在 CCS 中或通过任何方法处于活动状态吗?
    此致、
    Jinlong

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

    您好、沈金龙

    用户应用 API  EC_SLV_APP_SS_applicationRun () 与 DC SYNC0事件同步。  您可以在此应用程序 API 中添加 GPIO 切换代码、并对照 TwinCAT 中配置的 DC 周期时间检查切换周期(请参阅  DC --> Advanced Settings... -->分布式时钟-->同步0周期时间)。 这样、您就可以确认 PDI_ISR()处于活动状态。

    当 应用程序 API  EC_SLV_APP_SS_applicationRun ()调用和测量 GPIO 引脚切换周期时、会切换 GPIO 引脚(更改引脚状态)。 请参阅下面的屏幕截图-直流周期时间配置为50us。


    此致、

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

    请期待我明天的答复-我刚刚找到了我可以用于此目的的针脚。  

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

    是-我确认 run 函数以 EtherCAT 周期的频率被调用。  

    如何查看 snyc1事件以及是否可以注册将在每个 sync1事件上调用的另一个函数?

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

    您好、沈金龙

    目前、不可能注册将在 SYNC1事件上调用的函数。
    SYNC0和 SYNC1信号暴露在 AM243x LP 板上。 探测 AM243x-LP 上的 J7.3引脚(对于 SYNC0 OUT)和  AM243x-LP 上的 J7.5引脚(对于 SYNC1 OUT)。

    此致、

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

    非常感谢-我将在一些测量后更新。

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

    我支持的 sync0显示了与通过切换一个 GPIO 引脚所测得的模式相同的模式、即1个 EtherCAT 周期时间。
    但是、J7.5上的 sync1显示了2倍于 EtherCAT 周期的频率(未显示数据)。
    我认为 sync1信号频率不正确。 你怎么看?

    请参考:我可以通过其他工具实时看到以下值。  
    SM 输出参数为0x1C32:01为0x02、0x1C32:02为250000、和
    SM 输入参数为0x1C33:01为0x03、0x1C33:02为250000。

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

    您好、Jinlong:

    您能否使用此查询创建新 TT?
    我们将关闭此票证。

    此致、

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

    停止更新的。