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.

[参考译文] AM2632:使用 PRU 实例进行扩展 IO 操作

Guru**** 2528160 points
Other Parts Discussed in Thread: AM2632, LP-AM263

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1250677/am2632-use-of-pru-instance-for-extended-io-operation

器件型号:AM2632
主题中讨论的其他器件: LP-AM263

您好!

目前、我们将使用 AM263x (Launchpad)、但在我们的最终布局中、我们将使用 AM2632。

有一个关于 AM263x 的 PRU-Unit 的问题。 是否可以访问 PRU 的其他 GPIO、而不是 R30/R31的映射 GPIO?
我们如何配置 GPIO、以从 PRU 进行操作?

我们现在做了什么?
我们为 PRU0设置了一个小示例固件、该固件在运行时从 R5F 开始加载并启动。 PRU 的小型固件目前仅增加一个变量、我们可以从 R5F 控制器(从存储器)读取该变量。
我们的想法是由 PRU 处理大量输入/输出(超过20个寄存器映射 IO)。 R5F 应将输出值写入存储器、并仅从存储器读取输入值。

我们如何配置这样的系统(尤其是 GPIO 映射)。

感谢您的回答。

此致
乔·肖

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

    您好 Jo Scho:

    PRU 将有权访问 AM263x 的所有 GPIO 以进行读取或写入(与每个 R5F 一样)。 但是、应注意、PRU GPIO 与 AM263x GPIO 的其余部分不同。 来自 PRU 的20个 GPIO 增强型 PRU GPIO 这将在延迟和抖动方面具有更好的性能。 有关增强型 PRU  GP 模块的更多信息、请参阅第7.2.5.2.3章:增强型 PRU GPIO 模块及其各小节。  

    因此、如果您的应用对时序有严格要求、那么由于抖动和延迟增加、使用另一个 AM263x GPIO 可能并不理想。  

    要配置非 PRU GPIO、请执行以下操作:

    • 查找 GPIO 驱动程序的地址、相应的组和位、
    • 通过写入相应的 MSS_GPIO_DIR 来设置 GPIO 的方向 存储体中寄存器的位。 0 =输出、1 =输入。 默认情况下、所有 DIR 设置为输入。
    • 通过写入 MSS_GPIO_SET_DATA 来配置输出 存储体中寄存器的位。 每个 GPIO 的输出驱动状态默认设置为0。 输出数据 如果 GPIO 配置为输入、则不会产生影响。  
    • 通过读取 MSS_GPIO_OUT_DATA 来读取输出驱动状态 寄存器
    • 通过向 MSS_GPIO_CLR_DATA 中相应的位写入1来清除输出驱动状态 寄存器
    • 对于配置为输入的 GPIO、请通过读取 MSS_GPIO_IN_DATA 中相应的位来读取输入 寄存器。

    指所需 GPIO 的组。 每个组为16位、因此一个寄存器将具有两个组、例如 MSS_GPIO_DIR01、表示组0和1中每个 GPIO 的方向模式。  

    此致、

    埃里克

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

    尊敬的 Erik:

    非常感谢您的回答、但我还有一些问题。

    您说:PRU 将能够访问 AM263x 的所有 GPIO。
    PRU 能否同时访问20多个 GPIO、还是仅限于映射到 R30/R31的20个 GPIO?
    还是仅限于 PRU 上的20GPIO?

    如何配置 PRI-GPIO 的 GPIO 映射? 是否需要在 AM263x 侧进行此操作?

    通常、PRU-GPIO 在抖动/延迟方面具有更好的性能、这是正确吗?

    此致

    乔·肖


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

    您好 Jo Scho:

    您可以 使用 R30/R31寄存器在同一周期内为基于 PRU 内核的 GPIO 配置多个 GPIO。  配置 R30和 R31不受 AM263x GPIO 组的 GPIO 配置的影响、AM263x GPIO 组的配置使用我在上一个响应中概述的过程进行配置。 如果要为 PRU 和 AM263x GPIO 组配置 GPIO、则无法在 PRU 内核的单个周期内完成。  

    如何配置 PRI-GPIO 的 GPIO 映射? 是否要在 AM263x 侧完成此操作?

    您能否对此问题提供更多详细信息? 要配置输出信号、应使用 R30寄存器。 设置与 PR0_PRU0_GPIO 相关的相应位 R30中的枚举会将 GPIO 配置为逻辑高电平输出、而清除相应的位会将输出信号驱动为低电平。

    通常情况下,PRU-GPIO 在抖动/延迟方面具有更好的性能,这是正确的吗?

    相对于 AM263x GPIO 的性能而言、正确。  

    此致、

    埃里克  

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

    Eric、您好!

    感谢您的回答。

    如何配置 PRI-GPIO 的 GPIO 映射? 是否需要在 AM263x 侧进行此操作?

    您能否对此问题提供更多详细信息? 要配置输出信号、应使用 R30寄存器。 设置与 PR0_PRU0_GPIO 相关的相应位 R30中的枚举会将 GPIO 配置为逻辑高电平输出、而清除相应的位会将输出信号驱动为低电平。

    [/报价]

    我们目前详细使用的是评估板 AM263x_LP。
    在该设计中、我们使用引脚 B7/GPIO26作为输出(LED)、并使用 D14/GPIO123作为输入(按钮)、全部可从 R5F-Core0完成。
    现在的问题是、我们是否也可以通过 R30/R311 (使用 XBAR?)从 PRU0控制器对这两个引脚进行 IO 操作?还是将来自 PRU 的 IO 操作限制为 PRU-GPIO 引脚?  

    第二个问题:
    PRU 的 IO 操作限制为20个 GPIO (在一个周期内)、或者我们是否可以处理20个以上的 GPIO

    此致
    乔·肖

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

    您好、Jo:  

    现在的问题是,我们是否可以对这两个引脚也使用 R30/R311 (使用 XBAR?)从 PRU 进行 IO 操作?还是将 IO 操作限制为 PRU-GPIO 引脚?  [/报价]

    您问题的答案是、您可以为每个 GPIO 配置寄存器、从而切换输出逻辑或读取 PRU 内核上的输入逻辑、就像在 R5内核上一样。 但是、您将无法通过使用 PRU 的 R30和 R31寄存器来配置这些 GPIO、因为这些寄存器特定于 PRU 内核的20个增强型 GPIO。  

    是 PRU 的 IO 操作限制为20个 GPIO (在一个周期内),还是我们可以处理超过20个 GPIO [/报价]

    PRU 的增强 GPIO 的输入(R31)和输出(R30)操作能够在一个周期内进行配置。 对于要切换 GPIO26的上述应用、这必须是一个单独的操作、与使用 R30或 R31完成的任何操作不同、其中 MSS_GPIO_SET_DATA 会针对相应的位进行置位。  

    此致、

    埃里克

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

    尊敬的 Erik:

    您能否提供一些代码示例、用于从 PRU0切换 GPIO26? 此致、Jo Scho


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

    您好 Jo Scho:  

    我将会为您提供一个代码示例。 请允许我直至星期四、今天结束时再提供示例。  

    此致、

    埃里克  

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

    Erik、您好、

    您能为我们提供一些代码示例/项目吗?

    此致
    乔·肖

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

    您好 Jo Scho:

    很抱歉、随附的 zip 文件包含两个 CCS 工程、其中将展示 PRU 内核如何切换 GPIO。

    PRU 项目将通过切换 GPIO26的逻辑状态使板载用户 LED 闪烁。

    e2e.ti.com/.../PRU_5F00_GPIO_5F00_LED_5F00_BLINK.zip

    若要使用这些工程、请遵循以下流程:

    • 打开 CCS 工作区
    • 导入两个 CCS 工程
    • 打开 LP-AM263的目标配置
    • 连接到 R5_0和 PRU0
    • 将"Hello World"工程加载到 R5_0中并运行
    • 红色 LED DS2现将亮起、
    • 加载"GPIO_LED_BLINK _ASM"程序  
    • 红色 LED DS2现将闪烁、

    此致、

    埃里克