クラス PIO -- 高度な PIO インタフェース

PIO クラスは RP2040 の PIO (プログラム可能な I/O)インタフェースのインスタンスへのアクセスを提供します。

PIO とやりとりするための好ましい方法は rp2.StateMachine を使うことです。PIO クラスは高度な利用を目的としています。

PIO プログラムのアセンブルについては rp2.asm_pio() を参照してください。

コンストラクタ

class rp2.PIO(id)

id で指定した番号の PIO インスタンスを取得します。RP2040 には 0 と 1 の番号の付いた2つの PIO インスタンスがあります。

他の番号の引数が指定されている場合は ValueError が発生します。

メソッド

PIO.add_program(program)

この PIO インスタンスの命令メモリにプログラム program を追加します。

各 PIO インスタンスのプログラムで使用できるメモリの量は制限されています。PIOのプログラムメモリに十分なスペースが残っていない場合、このメソッドは OSError(ENOMEM) を発生します。

PIO.remove_program([program])

この PIO インスタンスの命令メモリからプログラム program を削除します。

プログラムを指定しない場合は、すべてのプログラムを削除します。

すでに削除されているプログラムを削除してもエラーにはなりません。

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

id で指定した番号のステートマシンを取得します。RP2040 には各 PIO インスタンスに 0 から 3 までの番号が付けられた4つのステートマシンがあります。

引数 program を指定すると、指定のプログラムでステートマシンを初期化します。 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 インスタンスで IRQ0 のみを使います。IRQ1 は使えません。

IRQ インスタンスは指定の引数で構成されます。

定数

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

これらの定数は asm_pio の引数 out_init, set_init, sideset_init で使います。

PIO.SHIFT_LEFT
PIO.SHIFT_RIGHT

これらの定数は asm_pio または StateMachine.init の引数 in_shiftdirout_shiftdir で使います。

PIO.JOIN_NONE
PIO.JOIN_TX
PIO.JOIN_RX

これらの定数は asm_pio の引数 fifo_join で使います。

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

これらの定数は PIO.irq の引数 trigger で使います。