2021-04-16 12:18:04 +01:00
|
|
|
.. currentmodule:: rp2
|
|
|
|
|
|
|
|
:mod:`rp2` --- functionality specific to the RP2040
|
|
|
|
===================================================
|
|
|
|
|
|
|
|
.. module:: rp2
|
|
|
|
:synopsis: functionality specific to the RP2
|
|
|
|
|
|
|
|
The ``rp2`` module contains functions and classes specific to the RP2040, as
|
|
|
|
used in the Raspberry Pi Pico.
|
|
|
|
|
|
|
|
See the `RP2040 Python datasheet
|
|
|
|
<https://datasheets.raspberrypi.org/pico/raspberry-pi-pico-python-sdk.pdf>`_
|
|
|
|
for more information, and `pico-micropython-examples
|
|
|
|
<https://github.com/raspberrypi/pico-micropython-examples/tree/master/pio>`_
|
|
|
|
for example code.
|
|
|
|
|
|
|
|
|
|
|
|
PIO related functions
|
|
|
|
---------------------
|
|
|
|
|
|
|
|
The ``rp2`` module includes functions for assembling PIO programs.
|
|
|
|
|
|
|
|
For running PIO programs, see :class:`rp2.StateMachine`.
|
|
|
|
|
|
|
|
.. function:: asm_pio(*, out_init=None, set_init=None, sideset_init=None, in_shiftdir=0, out_shiftdir=0, autopush=False, autopull=False, push_thresh=32, pull_thresh=32, fifo_join=PIO.JOIN_NONE)
|
|
|
|
|
|
|
|
Assemble a PIO program.
|
|
|
|
|
|
|
|
The following parameters control the initial state of the GPIO pins, as one
|
|
|
|
of `PIO.IN_LOW`, `PIO.IN_HIGH`, `PIO.OUT_LOW` or `PIO.OUT_HIGH`. If the
|
|
|
|
program uses more than one pin, provide a tuple, e.g.
|
|
|
|
``out_init=(PIO.OUT_LOW, PIO.OUT_LOW)``.
|
|
|
|
|
|
|
|
- *out_init* configures the pins used for ``out()`` instructions.
|
|
|
|
- *set_init* configures the pins used for ``set()`` instructions. There can
|
|
|
|
be at most 5.
|
|
|
|
- *sideset_init* configures the pins used side-setting. There can be at
|
|
|
|
most 5.
|
|
|
|
|
2021-05-11 15:05:55 +01:00
|
|
|
The following parameters are used by default, but can be overridden in
|
2021-04-16 12:18:04 +01:00
|
|
|
`StateMachine.init()`:
|
|
|
|
|
|
|
|
- *in_shiftdir* is the default direction the ISR will shift, either
|
|
|
|
`PIO.SHIFT_LEFT` or `PIO.SHIFT_RIGHT`.
|
|
|
|
- *out_shiftdir* is the default direction the OSR will shift, either
|
|
|
|
`PIO.SHIFT_LEFT` or `PIO.SHIFT_RIGHT`.
|
|
|
|
- *push_thresh* is the threshold in bits before auto-push or conditional
|
|
|
|
re-pushing is triggered.
|
|
|
|
- *pull_thresh* is the threshold in bits before auto-push or conditional
|
|
|
|
re-pushing is triggered.
|
|
|
|
|
|
|
|
The remaining parameters are:
|
|
|
|
|
|
|
|
- *autopush* configures whether auto-push is enabled.
|
|
|
|
- *autopull* configures whether auto-pull is enabled.
|
|
|
|
- *fifo_join* configures whether the 4-word TX and RX FIFOs should be
|
|
|
|
combined into a single 8-word FIFO for one direction only. The options
|
|
|
|
are `PIO.JOIN_NONE`, `PIO.JOIN_RX` and `PIO.JOIN_TX`.
|
|
|
|
|
|
|
|
.. function:: asm_pio_encode(instr, sideset_count)
|
|
|
|
|
|
|
|
Assemble a single PIO instruction. You usually want to use `asm_pio()`
|
|
|
|
instead.
|
|
|
|
|
|
|
|
>>> rp2.asm_pio_encode("set(0, 1)", 0)
|
|
|
|
57345
|
|
|
|
|
|
|
|
.. class:: PIOASMError
|
|
|
|
|
|
|
|
This exception is raised from `asm_pio()` or `asm_pio_encode()` if there is
|
|
|
|
an error assembling a PIO program.
|
|
|
|
|
|
|
|
|
|
|
|
Classes
|
|
|
|
-------
|
|
|
|
|
|
|
|
.. toctree::
|
|
|
|
:maxdepth: 1
|
|
|
|
|
|
|
|
rp2.Flash.rst
|
|
|
|
rp2.PIO.rst
|
|
|
|
rp2.StateMachine.rst
|