class Pin – contrôle des broches d’E/S

Un objet Pin représente une seule broche GPIO du STM32. Il fournit des méthodes pour configurer le mode de la broche (entrée, sortie, fonction alternée, analogique) et les résistances de tirage, ainsi que pour lire ou imposer son niveau logique. Pour l’échantillonnage analogique, voir pyb.ADC ; pour l’énumération des fonctions alternées, voir PinAF.

Toutes les broches du connecteur sont prédéfinies sous la forme pyb.Pin.board.<name>. La plupart des OpenMV Cam STM32 exposent les broches d’E/S du connecteur P0P9 ; l’OpenMV Cam N6 expose des broches supplémentaires jusqu’à P18

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

La broche/port STM32 sous-jacente peut aussi être adressée directement via pyb.Pin.cpu.<name>, nommée par la lettre du port suivie du numéro de broche (par exemple pyb.Pin.cpu.A0). La correspondance entre chaque broche du connecteur OpenMV et une broche du CPU est fixée par la carte.

Les broches peuvent également être sélectionnées par leur nom sous forme de chaîne

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

Des noms définis par l’utilisateur peuvent être ajoutés avec Pin.dict()

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

et interrogés en retour

pin = pyb.Pin("LeftMotorDir")

Une fonction de correspondance personnalisée peut également être installée avec Pin.mapper()

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

pyb.Pin.mapper(MyMapper)

ainsi un appel à pyb.Pin("LeftMotorDir", pyb.Pin.OUT_PP) transmet "LeftMotorDir" directement à la fonction de correspondance.

L’ordre suivant détermine comment un nom est associé à une broche physique :

  1. Un objet Pin est passé directement.

  2. La fonction de correspondance fournie par l’utilisateur retourne une broche.

  3. Le dictionnaire fourni par l’utilisateur contient une clé correspondante.

  4. La chaîne correspond à un nom de broche de carte (P0, P1, …).

  5. La chaîne correspond à un nom de port/broche du CPU (A0, B7, …).

Appelez pyb.Pin.debug(True) pour afficher des informations de diagnostic sur la manière dont chaque objet est associé à une broche.

Constructeurs

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

Crée un nouvel objet Pin associé à l”id donné. Si des arguments supplémentaires sont fournis, ils sont transmis à Pin.init() pour configurer la broche.

Méthodes de classe

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

Obtient ou définit l’état de débogage (True ou False pour activé ou désactivé).

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

Obtient ou définit le dictionnaire de correspondance des broches.

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

Obtient ou définit la fonction de correspondance des broches.

Méthodes

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

Initialise la broche :

  • mode peut être l’une des valeurs suivantes :

    • Pin.IN - configure la broche en entrée ;

    • Pin.OUT_PP - configure la broche en sortie, avec commande push-pull ;

    • Pin.OUT_OD - configure la broche en sortie, avec commande à drain ouvert ;

    • Pin.ALT - configure la broche en fonction alternée, entrée ou sortie ;

    • Pin.AF_PP - configure la broche en fonction alternée, push-pull ;

    • Pin.AF_OD - configure la broche en fonction alternée, à drain ouvert ;

    • Pin.ANALOG - configure la broche en analogique.

  • pull peut être l’une des valeurs suivantes :

    • Pin.PULL_NONE - aucune résistance de tirage haut ou bas ;

    • Pin.PULL_UP - active la résistance de tirage haut ;

    • Pin.PULL_DOWN - active la résistance de tirage bas.

    Lorsqu’une broche a le mode de tirage Pin.PULL_UP ou Pin.PULL_DOWN activé, cette broche est tirée respectivement vers 3V3 ou GND par une résistance interne (typiquement de quelques dizaines de kOhm – voir les caractéristiques électriques dans la fiche technique du STM32 de l’OpenMV Cam utilisée).

  • value, s’il n’est pas None, définira la valeur de sortie du port avant d’activer la broche.

  • alt peut être utilisé lorsque le mode est Pin.ALT, Pin.AF_PP ou Pin.AF_OD pour définir l’index ou le nom de l’une des fonctions alternées associées à une broche. Cet argument s’appelait auparavant af, qui peut encore être utilisé si nécessaire.

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

Obtient ou définit le niveau logique numérique de la broche :

  • Sans argument, retourne 0 ou 1 selon le niveau logique de la broche.

  • Avec value fourni, définit le niveau logique de la broche. value peut être tout ce qui se convertit en booléen. S’il se convertit en True, la broche est mise à l’état haut, sinon elle est mise à l’état bas.

__str__() str

Retourne une chaîne décrivant l’objet broche.

af() int

Retourne la fonction alternée actuellement configurée de la broche. L’entier retourné correspondra à l’une des constantes autorisées pour l’argument af de la fonction init.

af_list() List[PinAF]

Retourne un tableau des fonctions alternées disponibles pour cette broche.

gpio() int

Retourne l’adresse de base du bloc GPIO associé à cette broche.

mode() int

Retourne le mode actuellement configuré de la broche. L’entier retourné correspondra à l’une des constantes autorisées pour l’argument mode de la fonction init.

name() str

Obtient le nom de la broche.

names() List[str]

Retourne les noms cpu et board de cette broche.

pin() int

Obtient le numéro de la broche.

port() int

Obtient le port de la broche.

pull() int

Retourne le tirage actuellement configuré de la broche. L’entier retourné correspondra à l’une des constantes autorisées pour l’argument pull de la fonction init.

Constantes

IN: int

Configure la broche en entrée numérique (haute impédance).

OUT_PP: int

Configure la broche en sortie numérique avec un pilote push-pull.

OUT_OD: int

Configure la broche en sortie numérique avec un pilote à drain ouvert.

ANALOG: int

Configure la broche en entrée analogique (par exemple pour une utilisation avec ADC).

ALT: int

Configure la broche en fonction alternée (entrée ou sortie).

AF_PP: int

Configure la broche en fonction alternée avec un pilote push-pull.

AF_OD: int

Configure la broche en fonction alternée avec un pilote à drain ouvert.

PULL_NONE: int

Désactive à la fois les résistances de tirage haut et bas sur la broche.

PULL_UP: int

Active la résistance interne de tirage haut sur la broche.

PULL_DOWN: int

Active la résistance interne de tirage bas sur la broche.