ZHCACT4 june 2023 AM2431 , AM2432 , AM2434 , AM2631 , AM2631-Q1 , AM2632 , AM2632-Q1 , AM2634 , AM2634-Q1 , AM263P4 , AM263P4-Q1 , AM3351 , AM3352 , AM3354 , AM3356 , AM3357 , AM3358 , AM3358-EP , AM3359 , AM4372 , AM4376 , AM4377 , AM4378 , AM4379 , AM5706 , AM5708 , AM5716 , AM5718 , AM5718-HIREL , AM5726 , AM5728 , AM5729 , AM5746 , AM5748 , AM5749 , AM6411 , AM6412 , AM6421 , AM6422 , AM6441 , AM6442 , AM6526 , AM6528 , AM6546 , AM6548
PRU 增强型通用输出 (EGPO) 可配置为以移出模式进行数据传输,数据在 PRU GPO1 (CLOCKOUT) 的每个上升沿移出 PRU GPO0 (DATAOUT)。移位速率由应用于 PRU 内核时钟的两个级联分频器的有效除数控制。为了通过 8b-10b 编码实现 100Mbit 数据速率,必须将 125MHz 时钟与除以 2 的 250MHz 内核时钟结合使用。移出模式支持两种时钟子模式:自由运行时钟模式(默认)和固定时钟计数模式。对于固定模式,数据包长度最多可配置为 255 位,并且在 ICSSG_GPECFG<n>_REG 寄存器的位 17 中设置了一个额外的 PRU_GPO_SHIFT_CLK_DONE 标志。
两个 16 位影子寄存器(GPO_SH0 和 GPO_SH1)用于支持乒乓缓冲器。每个影子寄存器都有独立的负载控制,这些负载控制可通过 PRU R30 寄存器的位 29 和 30 进行编程。请注意,GP_SH0 寄存器需要加载 0x8000 作为起始帧,因为移入 GPI 检测到起始位为第一个 1 或 0,而该起始位不包含在数据帧中。加载起始帧后,可以将更新的数据不受任何限制地加载到 GP_SH0 中。图 2-4 显示了 PRU 移出模式的方框图。
图 2-5 显示了 PRU GPO 移出模式的编程模型。
可为数据接收配置 GPI 移入模式。在 28 位移入模式下,对通用输入引脚 PRU<n>_DATAIN 进行采样,并根据内部时钟脉冲移入一个 28 位移位寄存器。该寄存器填充最低有效位 (LSB) 顺序(从位 0 到位 27),然后溢出到一个位桶中。28 位寄存器映射到 pru<n>_r31_status [0:27]。移位速率由应用于 PRU 内核时钟的两个级联分频器的有效除数控制。与移出模式类似,选择具有 250MHz 内核时钟的 125MHz 采样时钟。由于移位计数器,CNT_16 在接收到起始位后每 16 个移位时钟样片设置并自清零一次,因此只能将 28 位移位寄存器中的 16 位大小用作接收缓冲器。
图 2-6 显示了 PRU GPI 移入模式的方框图,图 2-7 显示了编程模型。
为了验证使用 PRU_GPIO 移位模式发送数据的准确性,由 PRU1 内核的移出 GPO 使用前 16 位 0x8000(数据帧在第一个 1 之后)发送 64 位宽编码数据 (0x8000 0012 0034 0056),并由 PRU0 内核的移入 GPI 接收。然后,数据从 PRU0 寄存器文件移动到从地址 0x00000000 开始的 PRU0 RAM。移出和移入时钟都是 125MHz。图 2-8 显示 PRU1 内核收到正确数据,没有错误。