クラス 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.gpio_base([base])¶
この PIO インスタンスの現在の GPIO ベースを照会します。オプションで設定もできます。
引数を指定する場合、それはピン(またはピン番号に対応する整数)でなければならず、GPIO0 または GPIO16 のいずれかに制限されます。その後、GPIO ベースはそのピンに設定されます。GPIO ベースの設定は、プログラムを追加したり、ステートマシンを作成したりする前に行う必要があります。
現在の GPIO ベースピンを返します。
- 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_shiftdir と out_shiftdir で使います。