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.