summaryrefslogtreecommitdiff
path: root/docs/library/rp2.rst
diff options
context:
space:
mode:
Diffstat (limited to 'docs/library/rp2.rst')
-rw-r--r--docs/library/rp2.rst83
1 files changed, 83 insertions, 0 deletions
diff --git a/docs/library/rp2.rst b/docs/library/rp2.rst
new file mode 100644
index 000000000..b6e7fcf42
--- /dev/null
+++ b/docs/library/rp2.rst
@@ -0,0 +1,83 @@
+.. 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.
+
+ The following parameters are used by default, but can be overriden in
+ `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