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.

[FAQ] [参考译文] [常见问题解答] AM6442 (AM64X):如何在 PRU 上切换 GPIO 引脚?

Guru**** 2551780 points
Other Parts Discussed in Thread: SYSCONFIG

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1183939/faq-am6442-am64x-how-to-toggle-gpio-pin-on-pru

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

Sitara 器件具有 PRU 内核、可以完全确定的方式执行指令。

因此、用户可以将 PRU 内核用于实时 I/O 控制应用。

本常见问题解答旨在说明如何在 PRU 上编写简单的 GPIO 切换软件以及如何从 CCS 加载和运行该软件。

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

    AM64X:如何在 PRU 上切换 GPIO 引脚?

    AM64X 具有两个 PRU 内核。 默认情况    下、PRU0和 PRU1内核能够控制所有 GPIO 引脚。 每个 PRU 内核直接连接到20个 GPIO 引脚、可使用  R30   和 R31寄存器进行控制。

    可以使用  R31 寄存器读取引脚值。

    可以使用  R30 寄存器写入引脚值。

    有关 PRU 内核的更多详细信息、请使用以下链接。

    https://software-dl.ti.com/mcu-plus-sdk/esd/AM64X/latest/exports/docs/api_guide_am64x/PRU_IO.html

    驱动 GPIO 引脚需要 PRU CPU 频率和引脚多路复用、因此我们可以将其代码包含在 main.asm 文件中、也可以使用 MCU+SDK 示例中提供的 SysConfig 轻松实现。

    请在 R5F0_0上的任何示例中执行以下步骤。 我选择了以下示例  C:\ti\mcu_plus_sdk_am64x_08_05_00_24\examples\empty\am64x-evm\r5fs0-0_freertos

    R5F0_0:

    1.启用 PRU 外设并在系统配置中选择 PRU CPU 时钟频率。 提供的各种时钟速度选项包括200MHz、225MHz、250MHz、300MHz 和333MHz。 选择所需的频率。

    2. 选择要从20个引脚切换的 GPIO 引脚。 我在我的示例中选择了 GPO1。

     

     3.编译您的 R5F0_0应用程序。


    请在 PRU_0示例中按照以下步骤操作。 我选择了以下示例  C:\ti\mcu_plus_sdk_am64x_08_05_00_24\examples\pru_io\empty\firmware\am64x-evm\icssg0-pru0_fw

    PRU_0:

    如上所述、我们需要 R30寄存器来控制输出引脚。 我使用下面的两条指令在引脚上写入逻辑高电平和低电平、没有任何延迟、并一直执行相同的指令。

    main:
    
    init:
    
    	zero	&r0, 120
    
    ; Configure the Constant Table entry C28 to point to start of shared memory
    ; PRU_ICSSG Shared RAM (local-C28) : 00nn_nn00h, nnnn = c28_pointer[15:0]
    ;	ldi     R5, 0x0100
    ;    sbco    &R5, C11, 0x28, 2
    
    CHECK_FOR_SIGNAL:
    
            LDI                R30, 0x2 ; toggles GPIO pin 1
            LDI                R30, 0x0
            QBA                CHECK_FOR_SIGNAL ; Branch operation
    
        HALT
    

     

    有关 PRU 完整指令集的更多详细信息、请参阅以下链接。

    https://www.ti.com/lit/ug/spruij2/spruij2.pdf

    2. 编译 PRU_0应用程序。

     


    从 CCS 加载并运行 PRU 应用程序:

    1. 构建 R5F 项目、启动目标配置、连接到 Cortex_R5_0_0内核
    2. 重置内核、通过选择 Run -> Load -> Load Program 加载内置示例。
    3. 选择浏览项目。 从 Debug 文件夹中选择.out 文件并恢复内核。
    4. 接下来、右键单击 DMSC 内核并选择 Connect Target。
    5. 连接到相应的 PRU 内核(例如、PRU_0)并加载内置示例。
    6. PRU 固件已加载到 PRU!

     注: 如果 要在外部存储器中加载 PRU 二进制文件,请使用 下面的常见问题 解答。

    https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1183897/faq-am64x-how-to-load-flash-pru-binaries-into-external-memory

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

    示例项目:  

    我已附上 R5F 和 PRU 的示例项目供您参考。

    R5F 项目:  

    e2e.ti.com/.../8688.empty_5F00_am64x_2D00_evm_5F00_r5fss0_2D00_0_5F00_freertos_5F00_ti_2D00_arm_2D00_clang.zip

    PRU 项目:  

    e2e.ti.com/.../0407.empty_5F00_am64x_2D00_evm_5F00_icssg0_2D00_pru0_5F00_fw_5F00_ti_2D00_pru_2D00_cgt.zip