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.

[参考译文] AM6442:需要通过 A53 Linux(或 R5F 裸机)测量 GPIO 频率

Guru**** 2815985 points

Other Parts Discussed in Thread: AM6442, SYSCONFIG

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1616267/am6442-need-to-measure-the-gpio-frequency-from-a53-linux-or-r5f-baremetal

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

尊敬的团队:

SDK - TI-PROCESSOR-SDK-LINUX-RT-am64xx-EVM-09.02.01.10

处理器- AM6442

使用 RT-Linux SDK、我们能够 以 25MHz 的频率读取输入 GPIO 引脚。

正常 GPIO 将驱动高达 400Hz 至 1MHz 的频率。

读取 GPIO 的过程有何机制?

提供一些示例代码。

此致、

Ravilla Dinesh。

 

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

    尊敬的 Ravilla:  

    有关查找测量 GPIO 信号的频率、请查看以下主题: (+) AM623:ECAP 用户空间应用程序代码 — 处理器论坛-处理器 — TI E2E 支持论坛 和 (+) AM625:ECAP — 处理器论坛-处理器 — TI E2E 支持论坛。 这些线程用于 使用 ECAP 测量输入信号、我认为它是一种可用于测量频率的工具。 以下是用于将 GPIO 引脚配置为 ECAP 输入信号的关联模板代码: k3-am625-sk-capa-capture.dtso。  

    此致、

    Shriya

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

    尊敬的 Ravilla:

    标准 eCAP 模块可能会遇到中断延迟问题。

    我建议使用  此任务的 PRU 内核。 PRU 专为高速、确定性 I/O 而设计、可以直接对引脚采样、因此更适合 25MHz 信号。 请参阅以下资源以开始使用:

    常见问题解答:什么是 PRU 内核?

    PRU 培训学院

    我们的 PRU 专家目前不在办公室。 如果需要进一步支持、请在下周 Ping 该主题。

    此致、

    Shriya

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

    您好、Surti:

    我建议 在此任务中使用 PRU 内核。 PRU 专为高速、确定性 I/O 而设计、可以直接对引脚采样、因此更适合 25MHz 信号。

    如需使用 PRU 内核、我应该在 Rt-Linux(或)Industrial SDK (FreeRTOS) 中进行构建。

    IF Industrial SDK (FreeRTOS) 提供了一些示例代码及其过程。

    如果 Rt-Linux 提供了一些示例或命令来从 ECAP 输入引脚验证 25MHz 的频率。

    提供一些示例代码来构建和测量 ECAP 输入引脚频率 (25MHz)。

    此致、

    Ravilla Dinesh

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

    尊敬的 Ravilla:  

    一旦 PRU 专家重新上任、我就必须向您回复这些问题。 如果您听不到回复、请在下周中 ping 通该主题。  

    此致、

    Shriya

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

    您好、Surti:

    进行任何更新。

    此致、

    Ravilla Dinesh。

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

    尊敬的 Ravilla:  

    我正在内部讨论此问题、收到更多信息后会尽快回复您。  

    谢谢、

    Shriya

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

    您好、surti:

    进行任何更新。

    此致、

    Ravilla Dinesh。

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

    您好 Ravilla、

    我在 PRU 开发方面进行评论。 我将依靠另一位团队成员来评论 R5F 内核是否非常适合以 25MHz 速率采集时间戳。

    设计问题  

    相对于 Linux 系统时间、您是否需要知道信号的时间戳? 或者、您是否只需要知道输入信号彼此之间的时间戳? 如果不需要在 Linux 和 PRU 内核之间同步时间、该设计会变得更加简单。

    PRU 基本设计  

    如果 PRU 正在检测信号何时变为高电平或低电平、则无需使用 ECAP 外设。 只需将信号路由到 PRU GPI 引脚、并让 PRU 固件在引脚上轮询、直到引脚的值发生变化。 您可以使用 IEP 计数器在 PRU 读取更新值时添加时间戳。

    我的入门资源是什么?  

    如需开始 PRU 开发、请参阅 AM64x PRU Academy。我是作者。 如果您有任何问题或反馈、请将这些问题放在单独的 e2e 主题中、稍后会回复给我。 我建议先从 PRU 入门实验开始。

    OpenPRU 存储库是我们的示例 PRU 项目和培训源、供您参考:
    https://github.com/TexasInstruments/open-pru

    我还没有时间将 IEP 示例从旧的 PRU 软件支持包中的 AM335x 移植到 OpenPRU 中的 AM64x、但 IEP 代码在 AM335x 和 AM64x 上的工作方式几乎相同。 您可以在此处找到较旧的 IEP 示例:
    https://git.ti.com/cgit/pru-software-support-package/pru-software-support-package/tree/examples/am335x/PRU_IEP 

    时钟呢?

     AM64x 时钟树工具中、我看到 ECAP 使用 MAIN_SYSCLK0/4 = 125MHz。 如果您搜索 IEP、您将看到 PRU 的 IEP 计数器也可以将 MAIN_SYSCLK0 作为时钟源(在完整的 500MHz 处)。

    此致、

    Nick

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

    您可能想知道为什么 PRU 能够轮询引脚以查看信号何时到达、但其他内核无法执行此操作。 请参阅页面“PRU GPIO 信号与常规 GPIO 有何不同?“ 在 PRU Academy 中:
    https://dev.ti.com/tirex/explore/node?isTheia=false&node=A__AfYd0P3wI1CDis1g9k1nSQ__AM64-ACADEMY__WI1KRXP__LATEST 

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

    您好、Nick、

    这里不需要任何时间戳、根据您之前提供的信息、可以仅通过 PRU 内核使用工业 SDK 的 ECAP 从 GPIO 引脚读取 25MHz 频率、  

    因此、请为 ECAP 提供示例代码、或介绍如何从工业 SDK 实现和验证 ECAP。  

    此致、

    Ravilla Dinesh。

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

    你好 Ravilla Dinesh、

    无法通过 GPIO 使用 ECAP 测量 25MHz。 以下是分析:

    实施限制

    1.ECAP 时钟约束

    - ECAP 功能时钟:125MHz
    - ECAP 时钟周期:8ns
    -输入信号 (25MHz) 周期:40 ns
    -每个期间的近似可用计数:仅 5 个计数

    由于边沿之间只有 5 个时钟计数、测量分辨率和精度会很低(误差为±20%)。

    2. ECAP 的建议最大频率

    为了以合理的精度(±1%)实现可靠的测量、至少需要 100 个以上的时钟
    每个周期的周期数:

    实际最大值= 125MHz / 100 =~μ V 1.25MHz

    25MHz 测量的替代方案

    使用外部分频器(例如,32 分频)将 25MHz 降低至~781kHz、然后使用 ECAP 进行测量。

    除了这种方法、我们也无法通过 PRU 内核实现这一点。 因为,PRU 时钟 (~200 –333MHz ) 仍然只能提供~8-10 个 25MHz 周期计数,这对于精确测量是不够的。 我们可以从 PRU 专家那里获得更多详细信息。

    如果您有任何其他问题、敬请告知。

    此致、
    Anil

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

    下面我提供了一些有关使用 PRU 内核对输入信号进行采样的更多背景信息。

    AM64x 上的 PRU 内核可以以 333MHz 的速率读入数据、因为这是时钟的最大频率。 您可以看到一个逻辑范围工程、其中 PRU 在此处以 333MHz 的速率读取 8 个通道的数据: https://github.com/TexasInstruments/open-pru/tree/main/examples/logic_scope

    但是、该代码中没有过滤功能。 因此、如果您的信号有噪声、这些噪声可能会进入数据中。 那么问题是、您要测量的信号的清洁度如何、以及您希望对该信号进行多少过采样?

    我们为 PRU Academy > PRU 用例>捕获和控制>高速捕获提供了一个包含~Ω 10MHz 输入信号的棒球场

    我在内部报告中四处查看、看看是否有可以分享的任何高速捕获代码示例。

    此致、

    Nick

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

    您好、nick:

    SoC_FPGA_5 - GPIO1_68(引脚驱动,来自 FPGA 的 25MHz 频率)

    我正在开发 AM6442(AM64x 系列)器件、并将其与外部 FPGA (Artix-7) 连接。 FPGA 生成 25MHz 方波信号、我需要在 AM6442 内部进行测量。

    PRU-ICSS ( GPIO 引脚未列出 PRU 功能 )。

    R5F (FreeRTOS 或非 RTOS) 使用 ECAP。

    若要测量 25MHz 外部信号、如果 PRU 布线不可用、建议在 R5F 上使用 ECAP 吗?

    提供一些示例。

    此致、

    Ravilla Dinesh。

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

    你好 Ravilla Dinesh、

    [报价 userid=“525901" url="“ url="~“~/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1616267/am6442-need-to-measure-the-gpio-frequency-from-a53-linux-or-r5f-baremetal/6247191

    无法通过 GPIO 使用 ECAP 测量 25MHz。 以下是分析:

    实施限制

    1.ECAP 时钟约束

    - ECAP 功能时钟:125MHz
    - ECAP 时钟周期:8ns
    -输入信号 (25MHz) 周期:40 ns
    -每个期间的近似可用计数:仅 5 个计数

    由于边沿之间只有 5 个时钟计数、测量分辨率和精度会很低(误差为±20%)。

    2. ECAP 的建议最大频率

    为了以合理的精度(±1%)实现可靠的测量、至少需要 100 个以上的时钟
    每个周期的周期数:

    实际最大值= 125MHz / 100 =~μ V 1.25MHz

    25MHz 测量的替代方案

    使用外部分频器(例如,32 分频)将 25MHz 降低至~781kHz、然后使用 ECAP 进行测量。

    除了这种方法、我们也无法通过 PRU 内核实现这一点。 因为,PRU 时钟 (~200 –333MHz ) 仍然只能提供~8-10 个 25MHz 周期计数,这对于精确测量是不够的。 我们可以从 PRU 专家那里获得更多详细信息。

    如果您有任何其他问题、敬请告知。

    [/报价]

    你能看上面的答复吗?

    此致、

    Anil.


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

    尊敬的 Anil:

    需要通过 ECAP 以 1MHz 频率测量 GPIO。 请在 R5F 端分享一些 ECAP 示例代码。

    此致、

    Ravilla Dinesh。

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

    你好、Ravi、

    请查看下面的示例。 此示例符合您的要求。

    C:\ti\mcu_plus_sdk_……\examples\drivers\eCAP\ecp_pwm_loopback

    此致、

    Anil.

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

    尊敬的 Anil:

    C:\ti\mcu_plus_sdk_……\examples\drivers\eCAP\eCAP_epwm_loopback\am64x-evm\r5fss0-0_nortos

    我将 AM64x 与 MCU+ SDK 一起使用 (MCU_PLUS_SDK_am64x_11_02_00_24)。
    我希望使用 ECAP 模块捕获来自 FPGA (Artix-7) 的 1MHz 外部信号。
    我不想使用 ePWM 环回示例。

    FPGA (Artix-7)→1MHz 信号→SoC_FPGA_5 GPIO1_68(需要捕获输入)
    您希望 ECAP 捕获该信号。

    此致、
    Ravilla Dinesh。

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

    尊敬的 Anil:

    进行任何更新。

    此致、

    Ravilla Dinesh。

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

    你好 Ravilla Dinesh、

    在 EVM 上、为了测试 ECAP 信号、我们馈送 PWM 信号作为输入、并使用 ECAP 模块测量捕获的信号。

    如果您希望在不使用内部 PWM 的情况下仅测试 ECAP 模块、则只需从工程中删除 PWM 模块配置、并将外部输入信号馈送到 ECAP 引脚。 这样、您可以使用外部生成的信号来监控 ECAP 功能。

    请查看 SDK 中提供的示例代码、了解如何配置和使用 ECAP 模块。 该代码演示了采集功能、可帮助您根据具体用例进行调整。

    此致、

    Anil.

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

    您好  Ravilla、

    我注意到您已从 SysConfig 中删除了 PWM 外设初始化、但您仍在应用程序代码中调用 PWM API。

    这将导致问题、因为不再初始化 PWM 外设。

    请从您的应用程序代码中删除所有 PWM API 调用、它应该能正常工作。

    此致、

    Anil.