LEDs and GPIOs
Functionality overview
Digital I/O commands control Red Pitaya’s LEDs and GPIO pins on the extension connector. These commands allow you to read digital inputs, set digital outputs, and control the onboard LEDs for status indication or custom applications.
Important notes
Zynq 7020 boards have 10-bit wide DIO registers instead of 8-bit wide.
GPIO pins are 3.3V logic level (TTL) - do not apply higher voltages.
Remember to set pin direction (IN/OUT) before use.
Code examples
Here are some examples of how to use the digital I/O commands on Red Pitaya:
Parameters and command table
Parameter options:
<dir> = {OUT,IN}<gpio> = {{DIO0_P...DIO7_P}, {DIO0_N...DIO7_N}}<led> = {LED0...LED7}<pin> = {gpio, led}<state> = {0,1}<reg_state> = {0b00000000}- One LED/DIO per bit. (10 bit DIO register on Zynq 7020 boards)<reg_direction> = {0b00000000}- One DIO per bit. (10 bit DIO register on Zynq 7020 boards)
Available Jupyter and API macros:
States -
RP_LOW, RP_HIGHDirections -
RP_IN, RP_OUTLEDs -
RP_LED0, RP_LED1, ..., RP_LED7DIOx_P -
RP_DIO0_P, RP_DIO1_P, ..., RP_DIO7_PGoes up to 9 on Zynq 7020 boardsDIOx_N -
RP_DIO0_N, RP_DIO1_N, ..., RP_DIO7_NGoes up to 9 on Zynq 7020 boards
SCPI |
API, Jupyter |
DESCRIPTION |
ECOSYSTEM |
|---|---|---|---|
DIG:RSTExamples:
DIG:RST |
C++:
rp_DpinReset()Python:
rp_DpinReset() |
Sets digital pins to default values. Pins DIO1_P - DIO7_P,
RP_DIO0_N - RP_DIO7_N are set all INPUT and to LOW. LEDs are set to LOW/OFF.
|
1.04-18 and up |
DIG:PIN:DIR <dir>,<gpio>Examples:
DIG:PIN:DIR OUT,DIO0_NDIG:PIN:DIR IN,DIO1_P |
C++:
rp_DpinSetDirection(rp_dpin_t pin, rp_pinDirection_t direction)Python:
rp_DpinSetDirection(<pin>, <direction>) |
Set the direction of digital pins to output or input. |
1.04-18 and up |
DIG:PIN:DIR? <gpio>Examples:
DIG:PIN:DIR? DIO0_N > OUTDIG:PIN:DIR? DIO1_P > IN |
C++:
rp_DpinGetDirection(rp_dpin_t pin, rp_pinDirection_t* direction)Python:
rp_DpinGetDirection(<pin>) |
Get digital input output pin direction. |
1.04-18 and up |
DIG:PIN <pin>,<state>Examples:
DIG:PIN DIO0_N,1DIG:PIN LED2,1 |
C++:
rp_DpinSetState(rp_dpin_t pin, rp_pinState_t state)Python:
rp_DpinSetState(<pin>, <state>) |
Set the state of digital outputs to 1 (HIGH) or 0 (LOW).
Returns a 1 (HIGH) if the pin is floating.
|
1.04-18 and up |
DIG:PIN? <pin> > <state>Examples:
DIG:PIN? DIO0_N > 1DIG:PIN? LED2 > 0 |
C++:
rp_DpinGetState(rp_dpin_t pin, rp_pinState_t* state)Python:
rp_DpinGetState(<pin>) |
Get state of digital inputs and outputs. |
1.04-18 and up |
-
|
C++:
rp_LEDSetState(uint32_t reg_state)Python:
rp_LEDSetState(<reg_state>) |
Set the state of the 8-bit LED register. Each bit corresponds to the state
of one LED.
|
1.04-18 and up |
-
|
C++:
rp_LEDGetState(uint32_t *reg_state)Python:
rp_LEDGetState() |
Get the state of the 8-bit LED register. Each bit corresponds to the state
of one LED.
|
1.04-18 and up |
-
|
C++:
rp_GPIOnSetDirection(uint32_t reg_direction)rp_GPIOnSetDirection(uint32_t reg_direction)Python:
rp_GPIOnSetDirection(<reg_direction>)rp_GPIOpSetDirection(<reg_direction>) |
Set the state of the DIO_N or DIO_P direction register. Each bit corresponds
to the direction of one DIO_N or DIO_P pin.
|
1.04-18 and up |
-
|
C++:
rp_GPIOnGetDirection(uint32_t *reg_direction)rp_GPIOpGetDirection(uint32_t *reg_direction)Python:
rp_GPIOnGetDirection()rp_GPIOpGetDirection() |
Get the state of the DIO_N or DIO_P direction register. Each bit corresponds
to the direction of one DIO_N or DIO_P pin.
|
1.04-18 and up |
-
|
C++:
rp_GPIOnSetState(uint32_t reg_state)rp_GPIOpSetState(uint32_t reg_state)Python:
rp_GPIOnSetState(<reg_state>)rp_GPIOpSetState(<reg_state>) |
Set the state of the DIO_N or DIO_P state register. Each bit corresponds
to the state of one DIO_N or DIO_P pin.
|
1.04-18 and up |
-
|
C++:
rp_GPIOnGetState(uint32_t *state)rp_GPIOpGetState(uint32_t *state)Python:
rp_GPIOnGetState()rp_GPIOpGetState() |
Get the state of the DIO_N or DIO_P state register. Each bit corresponds
to the state of one DIO_N or DIO_P pin.
|
1.04-18 and up |