class Pin – control de pines de E/S#

Un objeto Pin representa un único GPIO del STM32. Proporciona métodos para configurar el modo del pin (entrada, salida, función alternativa, analógico) y las resistencias de pull, así como para leer o establecer su nivel digital. Para el muestreo analógico, consulte pyb.ADC; para la enumeración de funciones alternativas, consulte PinAF.

Todos los pines del conector están predefinidos como pyb.Pin.board.<name>. La mayoría de las OpenMV Cam basadas en STM32 exponen los pines del conector de E/S P0P9; la OpenMV Cam N6 expone pines adicionales hasta P18:

p0 = pyb.Pin.board.P0
g = pyb.Pin(pyb.Pin.board.P0, pyb.Pin.IN)

El puerto/pin subyacente del STM32 también puede direccionarse directamente a través de pyb.Pin.cpu.<name>, nombrado con la letra del puerto seguida del número de pin (por ejemplo, pyb.Pin.cpu.A0). La asignación de cada pin del conector OpenMV a un pin de la CPU es fija y la determina la placa.

Los pines también pueden seleccionarse por nombre de cadena:

g = pyb.Pin("P0", pyb.Pin.OUT_PP)

Se pueden añadir nombres definidos por el usuario con Pin.dict():

MyMapperDict = {"LeftMotorDir": pyb.Pin.cpu.A0}
pyb.Pin.dict(MyMapperDict)
g = pyb.Pin("LeftMotorDir", pyb.Pin.OUT_OD)

y consultarse de vuelta:

pin = pyb.Pin("LeftMotorDir")

Alternativamente, se puede instalar una función de asignación personalizada con Pin.mapper():

def MyMapper(pin_name):
    if pin_name == "LeftMotorDir":
        return pyb.Pin.cpu.A0

pyb.Pin.mapper(MyMapper)

de modo que una llamada a pyb.Pin("LeftMotorDir", pyb.Pin.OUT_PP) pasa "LeftMotorDir" directamente a la función de asignación.

El siguiente orden determina cómo se asigna un nombre a un pin físico:

  1. Se pasa directamente un objeto Pin.

  2. La función de asignación proporcionada por el usuario devuelve un pin.

  3. El diccionario proporcionado por el usuario contiene una clave coincidente.

  4. La cadena coincide con un nombre de pin de placa (P0, P1, …).

  5. La cadena coincide con un nombre de puerto/pin de la CPU (A0, B7, …).

Llame a pyb.Pin.debug(True) para imprimir información de diagnóstico sobre cómo se asigna cada objeto a un pin.

Constructores#

class pyb.Pin(id: str | Pin, *args, **kwargs)#

Crea un nuevo objeto Pin asociado al id dado. Si se proporcionan argumentos adicionales, se reenvían a Pin.init() para configurar el pin.

Métodos de clase#

classmethod debug(state: bool | None = None) bool | None#

Obtiene o establece el estado de depuración (True o False para activado o desactivado).

classmethod dict(dict: dict | None = None) dict | None#

Obtiene o establece el diccionario de la función de asignación de pines.

classmethod mapper(fun: Callable[[str], Pin] | None = None) Callable[[str], Pin] | None#

Obtiene o establece la función de asignación de pines.

Métodos#

init(mode: int, pull: int = Pin.PULL_NONE, *, value: int | None = None, alt: int | str = -1) None#

Inicializa el pin:

  • mode puede ser uno de:

    • Pin.IN - configura el pin como entrada;

    • Pin.OUT_PP - configura el pin como salida, con control push-pull;

    • Pin.OUT_OD - configura el pin como salida, con control de drenaje abierto;

    • Pin.ALT - configura el pin como función alternativa, entrada o salida;

    • Pin.AF_PP - configura el pin como función alternativa, push-pull;

    • Pin.AF_OD - configura el pin como función alternativa, drenaje abierto;

    • Pin.ANALOG - configura el pin como analógico.

  • pull puede ser uno de:

    • Pin.PULL_NONE - sin resistencias de pull-up ni pull-down;

    • Pin.PULL_UP - habilita la resistencia de pull-up;

    • Pin.PULL_DOWN - habilita la resistencia de pull-down.

    Cuando un pin tiene habilitado el modo de pull Pin.PULL_UP o Pin.PULL_DOWN, ese pin se conecta a 3V3 o GND respectivamente a través de una resistencia interna (típicamente decenas de kOhm – consulte las características eléctricas en la hoja de datos del STM32 de la OpenMV Cam en uso).

  • value, si no es None, establecerá el valor de salida del puerto antes de habilitar el pin.

  • alt puede utilizarse cuando el modo es Pin.ALT, Pin.AF_PP o Pin.AF_OD para establecer el índice o el nombre de una de las funciones alternativas asociadas a un pin. Este argumento se llamaba anteriormente af, que aún puede utilizarse si es necesario.

value(value: Any | None = None) int | None#

Obtiene o establece el nivel lógico digital del pin:

  • Sin argumentos, devuelve 0 o 1 según el nivel lógico del pin.

  • Con value dado, establece el nivel lógico del pin. value puede ser cualquier cosa que se convierta en un booleano. Si se convierte en True, el pin se pone a nivel alto; de lo contrario, se pone a nivel bajo.

__str__() str#

Devuelve una cadena que describe el objeto pin.

af() int#

Devuelve la función alternativa configurada actualmente para el pin. El entero devuelto coincidirá con una de las constantes permitidas para el argumento af de la función init.

af_list() List[PinAF]#

Devuelve una matriz de las funciones alternativas disponibles para este pin.

gpio() int#

Devuelve la dirección base del bloque GPIO asociado a este pin.

mode() int#

Devuelve el modo configurado actualmente para el pin. El entero devuelto coincidirá con una de las constantes permitidas para el argumento mode de la función init.

name() str#

Obtiene el nombre del pin.

names() List[str]#

Devuelve los nombres de cpu y de placa de este pin.

pin() int#

Obtiene el número del pin.

port() int#

Obtiene el puerto del pin.

pull() int#

Devuelve el pull configurado actualmente para el pin. El entero devuelto coincidirá con una de las constantes permitidas para el argumento pull de la función init.

Constantes#

IN: int#

Configura el pin como entrada digital (alta impedancia).

OUT_PP: int#

Configura el pin como salida digital con controlador push-pull.

OUT_OD: int#

Configura el pin como salida digital con controlador de drenaje abierto.

ANALOG: int#

Configura el pin como entrada analógica (p. ej., para usar con ADC).

ALT: int#

Configura el pin como función alternativa (entrada o salida).

AF_PP: int#

Configura el pin como función alternativa con controlador push-pull.

AF_OD: int#

Configura el pin como función alternativa con controlador de drenaje abierto.

PULL_NONE: int#

Deshabilita las resistencias de pull-up y pull-down del pin.

PULL_UP: int#

Habilita la resistencia interna de pull-up del pin.

PULL_DOWN: int#

Habilita la resistencia interna de pull-down del pin.