PIO 类 – 高级 PIO 使用

PIO 类提供访问RP2040的PIO(可编程I / O)接口的一个实例。

与 PIO 交互的首选方式是使用rp2.StateMachine,PIO 类用于高级用途。

有关汇编 PIO 程序的信息,请参阅rp2.asm_pio()

构造函数

class rp2.PIO(id)

获取编号为id的 PIO 实例。RP2040 有两个 PIO 实例,编号为 0 和 1。

ValueError 如果提供任何其他参数,则引发 。

方法

PIO.add_program(program)

将程序添加到该 PIO 实例的指令存储器中。

每个 PIO 实例上可供程序使用的内存量是有限的。如果 PIO 的程序存储器中没有足够的空间,此方法将引发OSError(ENOMEM).

PIO.remove_program([program])

从此 PIO 实例的指令存储器中删除程序。

如果没有提供程序,它会删除所有程序。

删除已经删除的程序不是错误。

PIO.state_machine(id[, program, ...])

获取编号为id的状态机。在 RP2040 上,每个 PIO 实例有四个状态机,编号为 0 到 3。

任选一个初始化程序:见StateMachine.init.

>>> rp2.PIO(1).state_machine(3)
StateMachine(7)
PIO.irq(handler=None, trigger=IRQ_SM0 | IRQ_SM1 | IRQ_SM2 | IRQ_SM3, hard=False)

返回此 PIO 实例的 IRQ 对象。

MicroPython 仅在每个 PIO 实例上使用 IRQ 0。IRQ 1 不可用。

可选地配置它。

常数

PIO.IN_LOW
PIO.IN_HIGH
PIO.OUT_LOW
PIO.OUT_HIGH

这些常量用于out_init、set_init和sideset_init 参数 asm_pio

PIO.SHIFT_LEFT
PIO.SHIFT_RIGHT

这些常量用于in_shiftdir和out_shiftdir参数asm_pioStateMachine.init

PIO.JOIN_NONE
PIO.JOIN_TX
PIO.JOIN_RX

这些常量用于fifo_join参数asm_pio

PIO.IRQ_SM0
PIO.IRQ_SM1
PIO.IRQ_SM2
PIO.IRQ_SM3

这些常量用于 的触发器参数 PIO.irq