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.

[参考译文] AM3358:专用 PRU GPIO 切换的最大可实现速度是多少

Guru**** 2562120 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1572391/am3358-what-is-the-maximum-achievable-speed-of-dedicated-pru-gpio-toggling

部件号:AM3358


工具/软件:

您好、

想知道 专用 PRU GPIO 切换的最大可实现速度。

我已经尝试使用 PRU C 代码和内核 5.10 切换专用 PRU GPIO(寄存器 r30)、但无法在 24MHz 进行切换。 我可以将 GPIO 设置为 42ns 时的高电平、并将 GPIO 设置为低电平 120ns  

我也尝试了 GPIO ASM、但结果仍然是相同的。 任何 PRU 编译器标记或硬件本身的任何限制?

这是 PRU GPIO 切换代码  

volatile register uint32_t __R30;

#define PRU0_PIN (1<<0)   // R30 bit0

    while (1) {
        __R30 |= PRU0_PIN;   // set high
        __delay_cycles(4);  // 5ns (200MHz PRU speed) * 4 => 20ns
        __R30 &= ~PRU0_PIN;  // set low
        __delay_cycles(4);  // 5ns (200MHz PRU speed) * 4 => 20ns
    }

我提到了以下文档、没有帮助。

https://software-dl.ti.com/processor-sdk-linux/esd/AM335X/08_02_00_24/exports/docs/common/PRU-ICSS/PRU-Hands-on-Labs.html


你能提供任何建议吗?

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

    您好 Titus、

    嗯。 您发布的代码片段没有看到任何明显错误(假设循环在 main 函数内)。

    我首先看一下编译器生成的 asm 代码。 在编译代码时、请传递编译器标志 keep_asm、以便检查生成的汇编代码。 请参阅 PRU 入门实验>实验 3(如何编译 PRU 固件)、了解更多信息: https://software-dl.ti.com/processor-sdk-linux/esd/AM335X/09_03_05_02/exports/docs/common/PRU-ICSS/PRU-Getting-Started-Labs_Lab3.html 

    此致、

    Nick

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

    为了回答有关切换硬件限制的问题、我没有观察到硬件测试中的任何限制。 根据数据表、只要输入和输出信号的脉冲宽度至少为 10ns(2 个 PRU 时钟周期)、您的代码就应该正常。 更多详细信息、请参阅数据表。