class Pin – שליטה בפיני קלט/פלט#

אובייקט Pin מייצג GPIO בודד ב-STM32. הוא מספק מתודות להגדרת מצב הפין (קלט, פלט, פונקציה חלופית, אנלוגי) ונגדי משיכה (pull), ולקריאה או נהיגה של הרמה הדיגיטלית שלו. לדגימה אנלוגית ראו pyb.ADC; לרשימת הפונקציות החלופיות ראו PinAF.

כל פיני המחבר מוגדרים מראש כ-pyb.Pin.board.<name>. רוב מצלמות OpenMV Cam מבוססות STM32 חושפות את פיני מחבר הקלט/פלט P0P9; ה-OpenMV Cam N6 חושפת פינים נוספים עד P18

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

ניתן גם לפנות ישירות לפורט/פין של ה-STM32 הבסיסי דרך pyb.Pin.cpu.<name>, הקרוי על שם אות הפורט ואחריה מספר הפין (לדוגמה pyb.Pin.cpu.A0). מיפוי כל פין מחבר של OpenMV לפין CPU קבוע על ידי הלוח.

ניתן לבחור פינים גם לפי שם מחרוזת:

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

ניתן להוסיף שמות מותאמים אישית באמצעות Pin.dict()

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

ולשלוף אותם בחזרה:

pin = pyb.Pin("LeftMotorDir")

לחלופין, ניתן להתקין פונקציית מיפוי מותאמת אישית באמצעות Pin.mapper()

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

pyb.Pin.mapper(MyMapper)

כך שקריאה ל-pyb.Pin("LeftMotorDir", pyb.Pin.OUT_PP) מעבירה את "LeftMotorDir" ישירות לפונקציית המיפוי.

הסדר הבא קובע כיצד שם ממופה לפין פיזי:

  1. אובייקט Pin מועבר ישירות.

  2. פונקציית המיפוי שסיפק המשתמש מחזירה פין.

  3. המילון שסיפק המשתמש מכיל מפתח תואם.

  4. המחרוזת תואמת לשם פין של הלוח (P0, P1, …).

  5. המחרוזת תואמת לשם פורט/פין של ה-CPU (A0, B7, …).

קראו ל-pyb.Pin.debug(True) כדי להדפיס מידע אבחוני על אופן מיפוי כל אובייקט לפין.

בנאים#

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

יוצר אובייקט Pin חדש המשויך ל-id הנתון. אם ניתנים ארגומנטים נוספים הם מועברים ל-Pin.init() כדי להגדיר את הפין.

מתודות מחלקה#

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

מקבל או מגדיר את מצב הניפוי (True או False להפעלה או כיבוי).

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

מקבל או מגדיר את מילון פונקציית מיפוי הפינים.

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

מקבל או מגדיר את פונקציית מיפוי הפינים.

מתודות#

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

אתחול הפין:

  • mode יכול להיות אחד מהבאים:

    • Pin.IN - הגדרת הפין לקלט;

    • Pin.OUT_PP - הגדרת הפין לפלט, עם בקרת push-pull;

    • Pin.OUT_OD - הגדרת הפין לפלט, עם בקרת open-drain;

    • Pin.ALT - הגדרת הפין לפונקציה חלופית, קלט או פלט;

    • Pin.AF_PP - הגדרת הפין לפונקציה חלופית, push-pull;

    • Pin.AF_OD - הגדרת הפין לפונקציה חלופית, open-drain;

    • Pin.ANALOG - הגדרת הפין למצב אנלוגי.

  • pull יכול להיות אחד מהבאים:

    • Pin.PULL_NONE - ללא נגדי משיכה למעלה או למטה;

    • Pin.PULL_UP - הפעלת נגד המשיכה למעלה (pull-up);

    • Pin.PULL_DOWN - הפעלת נגד המשיכה למטה (pull-down).

    כאשר לפין מופעל מצב המשיכה Pin.PULL_UP או Pin.PULL_DOWN, הפין נמשך ל-3V3 או ל-GND בהתאמה דרך נגד פנימי (בדרך כלל עשרות kOhm – ראו את המאפיינים החשמליים בגיליון הנתונים של ה-STM32 עבור ה-OpenMV Cam שבשימוש).

  • value, אם אינו None, יגדיר את ערך פלט הפורט לפני הפעלת הפין.

  • alt ניתן לשימוש כאשר המצב הוא Pin.ALT, Pin.AF_PP או Pin.AF_OD כדי להגדיר את האינדקס או השם של אחת מהפונקציות החלופיות המשויכות לפין. ארגומנט זה נקרא בעבר af וניתן עדיין להשתמש בו במידת הצורך.

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

מקבל או מגדיר את רמת הלוגיקה הדיגיטלית של הפין:

  • ללא ארגומנט, מחזיר 0 או 1 בהתאם לרמת הלוגיקה של הפין.

  • כאשר ניתן value, מגדיר את רמת הלוגיקה של הפין. value יכול להיות כל דבר הניתן להמרה לערך בוליאני. אם הוא מומר ל-True, הפין מוגדר לרמה גבוהה, אחרת הוא מוגדר לרמה נמוכה.

__str__() str#

מחזיר מחרוזת המתארת את אובייקט הפין.

af() int#

מחזיר את הפונקציה החלופית המוגדרת כעת של הפין. המספר השלם המוחזר יתאים לאחד הקבועים המותרים לארגומנט af של פונקציית האתחול.

af_list() List[PinAF]#

מחזיר מערך של הפונקציות החלופיות הזמינות עבור פין זה.

gpio() int#

מחזיר את כתובת הבסיס של בלוק ה-GPIO המשויך לפין זה.

mode() int#

מחזיר את המצב המוגדר כעת של הפין. המספר השלם המוחזר יתאים לאחד הקבועים המותרים לארגומנט mode של פונקציית האתחול.

name() str#

מקבל את שם הפין.

names() List[str]#

מחזיר את שמות ה-cpu וה-board עבור פין זה.

pin() int#

מקבל את מספר הפין.

port() int#

מקבל את פורט הפין.

pull() int#

מחזיר את מצב המשיכה (pull) המוגדר כעת של הפין. המספר השלם המוחזר יתאים לאחד הקבועים המותרים לארגומנט pull של פונקציית האתחול.

קבועים#

IN: int#

הגדרת הפין כקלט דיגיטלי (עכבה גבוהה).

OUT_PP: int#

הגדרת הפין כפלט דיגיטלי עם נהג push-pull.

OUT_OD: int#

הגדרת הפין כפלט דיגיטלי עם נהג open-drain.

ANALOG: int#

הגדרת הפין כקלט אנלוגי (לדוגמה לשימוש עם ADC).

ALT: int#

הגדרת הפין כפונקציה חלופית (קלט או פלט).

AF_PP: int#

הגדרת הפין כפונקציה חלופית עם נהג push-pull.

AF_OD: int#

הגדרת הפין כפונקציה חלופית עם נהג open-drain.

PULL_NONE: int#

השבתת נגדי המשיכה למעלה ולמטה כאחד בפין.

PULL_UP: int#

הפעלת נגד המשיכה הפנימי למעלה (pull-up) בפין.

PULL_DOWN: int#

הפעלת נגד המשיכה הפנימי למטה (pull-down) בפין.