工具/软件:
你好
我目前正在 SD 模式下使用 PRU。 要使用 GPIO、我必须依赖通用接口 (GPIO)。 我的问题是、这些外部外设的时序不太精确、并且表现出一些异常行为。
测试程序非常简单并会生成 PWM 信号。 引脚多路复用由 R5F 程序按照相应 常见问题解答文章中所述的配置使用相同的设置进行处理。
LDI R1.w2, 0x60
LDI R1.w0, 0x1000 ;GPIO1 Baseaddress (0x601000)
LDI R2.w0, 0x18 ;GPIO_SET_DATA01 offset
LDI R3.w0, 0x1C ;GPIO_CLR_DATA01 offset
LDI R4.w0, 0x01 ;bit 1 -> output 0
CHECK_PROCESSING_TIMING:
SBBO &R4, R1, R2, 4 ;set General-Purpose Interfaces connected Pin High
SET R30, R30, 1 ;set PRU connected Pin 1 High
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
SBBO &R4, R1, R3, 4 ;set General-Purpose Interfaces connected Pin Low
CLR R30, R30, 1 ;set PRU connected Pin 1 Low
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
JMP CHECK_PROCESSING_TIMING
HALT
当时序正确时、如示例代码所示、来自通用接口的信号显示的延迟约为 27ns、加上一个具有可接受抖动的时钟周期 (3.3ns)。 但是、如果我从环路中仅删除一个操作、并且周期不再与 SoC 的某些内部时序对齐、我会观察到通用接口输出中存在明显抖动。 标准偏差为 2.24ns、延迟可以在 26.3 和 34.4ns 之间变化、加一个时钟周期 (3.3ns)。
将 PRU 与通用接口配合使用时、是否有办法始终实现更好的时序性能?
此致
Niklas
