מיקרובקר הם העורכים השקטים מאחורי אינספור מכשירים אלקטרוניים מודרניים - מן התרמוסטט בביתך למל"ט טס מעל הראש.בלב של כל מערכת משובצת טמונה היכולת של מיקרובקר אינטראקציה עם העולם הפיזי, וכי אינטראקציה מתרחשת דרך התרגול הכללי שלה Input / Output (GP) pins GPIO היא המיומנות החשובה ביותר עבור כל אחד מבניין מיקרו-קלר, כי הם אלה המבוססים על לוח פעולה אופטית או על מערכת ההפעלה הטובה ביותר, בין אם אתה יודע איך אתה יודע איך אתה יודע איך אתה יודע איך אתה יודע איך זה, בין אם אתה יודע, בין אם אתה יודע, בין אם אתה יודע, בין אם אתה יודע איך זה הוא הבזק מערכת GP, בין אם אתה יודע, בין אם אתה יודע, בין אם אתה יודע, בין אם אתה יודע, בין אם אתה יודע, בין אם אתה יודע, בין אם אתה יודע, בין אם אתה יודע, בין אם אתה יודע, בין אם אתה יודע, בין אם אתה יודע, בין אם אתה יודע, בין לוח מודעות, בין אם אתה יודע, בין אם אתה יודע, בין אם אתה יודע, בין אם אתה יודע, בין אם אתה יודע, בין אם אתה יודע, בין אם אתה יודע, בין אם אתה יודע, בין אם אתה יודע, לבין לוח פעולה טובה יותר,

מה הם GPIO Pins?

גלימות GPIO הן ציוני אות דיגיטליים צדדיים על מיקרובקר שניתן להגדיר באופן דינמי כמו קלט או פלטים תחת שליטה בתוכנה.בניגוד ל pins ייעודיים עבור פונקציות ספציפיות (כמו אוסטרטור גבישי או קו איפוס), לוחות GPIO יכולים לשרת תפקידים רבים.הם פועלים במתח הלוגי של מיקרובקר - באופן -3 או 5 V - וניתן לקרוא או לכתוב רק שני מצבים דיגיטליים (כגון: 0 חיישנים דיגיטליים).

לרוב המיקרובקרים המודרניים יש בנק של גלימות GPIO, כל אחד עם רישום השולט בכיוון שלו, כוח כונן והתנגדות פנימית למשוך.לדוגמה, Arduino Uno יש 14 ערכות GPIO דיגיטליות, בעוד Raspberry Pi Pico מציע 26.הגמישות של GPIO היא מה שעושה אותם כל כך חזקים: אתה יכול לשחזר פונקציה באמצע-פרופור ללא rewiring חומרה.

Digital vs. Analog Pins

חשוב להבדיל GPIO מ pins הזנת אנלוגי. GPIO מטפל רק אותות דיגיטליים.אם אתה צריך לקרוא מתח חיישן משתנה (כמו רב-עוצמה), עליך להשתמש במגרן אנלוגי-לדיגיטלי (ADC) עם זאת, כמה מיקרו-בקרים מאפשרים לך להשתמש ב- GPIO עבור פונקציות מיוחדות כגון PWM (כפיל-Widulation) כדי לדמות אנלוגי, אבל הם נשארים לוחות דיגיטליים.

פונקציות ליבה של GPIO בפרויקטים

כל פרויקט מוטבע משתמש ב- GPIO עבור אחת או יותר מארבע משימות בסיסיות: קריאה קלטות, שליטה בתפוקה, תקשורת עם היקפים, ומול מול מודולים חיצוניים.

מידע על חיישן ו-Input

לוחות GPIO מוגדרים כקלטים קורא אותות חיצוניים.דוגמה נפוצה היא דחיפה: כאשר הכפתור הוא לחץ, הוא מחבר את הסימון לקרקע או VleaFLT:0CCCCIRFLT:1, שינוי רמת ההיגיון.המיקרובקר קורא באופן קבוע את הרמה הזאת כדי לזהות את התקשורת באופן דומה, חיישנים דיגיטליים רבים (למשל, גלאי תנועה, הגבלת טמפרטורה דיגיטלית) חיישנים נמוכים (כגון סיכות) עם אותות תקשורת GPC2 (I) באופן ישיר.

פיקוח על Actuators ואינדיקטורים

כאשר נקבע כפלטים, GPIO pins לנהוג מכשירים חיצוניים.התפוקה הפשוטה ביותר היא LED: על ידי הגדרת הציון גבוה, זרמים נוכחיים דרך התנגדות LED תאורה למעלה. יותר תפוקות מורכבות כוללים שליטה על הודעה באמצעות transistor, נהיגה מנוע DC קטן באמצעות עומס H-bridge, או יצירת אות PWM למהירות משתנה. כי סיכות GPIO יכול רק לספק זרם מוגבל (pty-A תמיד שימוש נתונים גבוה עבור מעבדים), או בדיקת נתונים מתאימה עבור מעבדים.

פרוטוקול תקשורת

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

  • (בקיצור:0) (Inter-Integrated Circuit): ההרחבה 1 (FLT:1) משתמשת בשני סיכות GPIO (SDA ו-SCL) כדי לתקשר עם מכשירים מרובים באוטובוס משותף.
  • (FLT:0SPI (Serial Peripheral Interface): ibph:1 בדרך כלל משתמש ארבע סיכות (MOSI, MISO, SCLK, CS) עבור חילופי נתונים במהירות גבוהה עם חיישנים, תצוגות, או שבבי זיכרון.
  • (FLT:0)UART (הקבלן הבלתי-מרואי / טרנסמרסק): אנדרט 1 השתמש בשני סיכות (TX, RX) לתקשורת סדרתית עם מחשב או מיקרו-בקרים אחרים.
  • (FLT:0) One-Wiremia: 1FLT) כמה פרוטוקולים כמו דאלאס 1-Wire משתמשים בציון GPIO יחיד עבור נתונים וכוח, בשימוש נרחב על ידי חיישני טמפרטורה כמו DS18B20.

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

עקבו אחרי Outsideמודולs

ערכות GPIO משמש גם נקודת החיבור עבור לוחות להוסיף (shields / שנאה) תצוגה דמות LCD עשוי לדרוש 6 או 8 GPIO pins במצב במקביל, בעוד מנוע סרבו צריך רק אחד PWM-capable GPIO pin. Easing את הממשק, רבות מופשטת את המניפולציה ברמה נמוכה, אבל להבין מה הסימון עוזר debugging ואופטימיזציה שלך.

GP PinIOs

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

קביעת תוואי פין (Input vs. Output)

ברוב המיקרובקרים, רישום של כיוון נתונים (DDR) שולט אם סיכה היא קלט או פלט.לדוגמה, על Arduinos מבוסס AVR, אתה משתמש ב-FLT:0 או FLT:1 (ב-STM32 מיקרובקר, אתה מגדיר את ה-MODER לרשום ציון כמיקומים במצב גבוה, תוך כדי שימוש במצב של לוגיקה גבוהה או לוגיה לכונן ללוגיקה נמוכה.

משיכת משיכה פנימית או משיכת-דמנה

כאשר תצורת GPIO מוגדרת כקלט, היא צף אם שום דבר לא מניע אותו. pating pins יכול להרים רעש ולתת קריאה בלתי צפויה. משיכת פנימי או משיכת משיכה לפתור את זה. A משיכה עובר מתגים המחבר את הסימון VreaFLT:0CCFLT:1 באמצעות התנגדות גבוהה (למשל, 20-100 k ⁇ ), כך שהסימון אינו מאפשר מעבר חיצוני ל-APT2 חיצוני.

כוח כונן ו-Sew Rate

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

פונקציות חלופיות

רבים גלימות GPIO לשתף סיליקון עם פריפריה אחרת (למשל, ADC קלט, פלט זמן, UART TX) מיפוי הפונקציה חלופי של pin מוגדר בתצורה של microcontroller של הרישום.לדוגמה, על STM32, ייתכן שיהיה עליך להגדיר את הציון "לתקן תפקוד" ולבחור את מספר AF הנכון לשימוש SPI תמיד לאמת את הסימון, כמו פונקציות מסוימות.

דוגמאות ל- Platform-Specific

הנה איך להגדיר GPIO בשלוש פלטפורמות פופולריות:

  • (ב) ויקרא י"ד): "ה' (ב"ד): "ה' (ב"ד): "ה' (ב"ד): "ה')" (במדבר כ"ד)
  • (ב) ויקרא יט): "הרבי" (בתרגום חופשי: לינוקס) באמצעות סינפס או דיסלקציה (Lysfs) או libgpiod): "הספק הראשון" (הראשונה ל-FLT:5,FLT:6), או ספריות כמו RPi.GPIO ב- Python.
  • (ב) [15] [15] ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇

מקור:0 (ב) ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇

Best Practices for Using GPIO

כשל ללכת בעקבות שיטות הטובות ביותר יכול לפגוע מיקרובקר שלך או לייצר התנהגות לא נכונה.כאן הם קווים מנחים שכל מפתח צריך לאמץ.

תמיד קוהינט פין לפני השימוש

סיכות לא מוגדרות עשויות להיות במצב לא ידוע.נהגת סטית פלט שעדיין במצב קלט יכולה לגרום מעגלים קצרים או ל- latch-up. בקוד ההשלמה, להגדיר כל פיתות שאתה מתכוון להשתמש לפני הלולאה העיקרית.

השתמש בנספחים הנוכחיים-Limiting Resistors

תפוקה GPIO המניעה LED ישירות ללא התנגדות ינסו להביא כמה שיותר נוכחי ככל שהעומס מאפשר, במהירות מעל הדירוג המקסימלי של פייתן (לעיתים קרובות 40 מ"א מקסימום מוחלט) להוסיף סדרה התנגדות מחושבת באמצעות חוק הומא (ראה:0R = (VFLT:1OHFLT:2 - VFLT 3LED 3LEDFLT: 4) / IF נוכחית באופן ישיר כמו הנהג הטרנסנדקסואלים (V) או IFthentir)

תוכנה מבוססת על החלפת מכונות

כאשר כפתור מכני הוא לחץ, אנשי הקשר קופצים פעמים רבות לפני התיישבות, מה שגורם לשינויים מהירים רבים בקלט GPIO. Debouncing ניתן לעשות בחומרה (מסנן ה-RC) או תוכנה: לחכות 10-50 מ"מ לאחר הקצה הראשון לפני שתקראו את המצב היציב.

השתמש ב- Level Shifters בעת ערבוב וולטז

אם המיקרובקר שלך פועל ב- 3.3 V אבל אתה מממשק עם חיישן 5 V, המחבר ישירות את GPIO עשוי להזיק מיקרובקר. השתמש משמרת רמה (בי-בימוי עבור I2C, חד-כיווני עבור SPI) או מפיץ מתח פשוט על אותות קלט. עבור פלט, 3.3 V pin עשוי שלא לקרוא באופן אמין על ידי מכשיר 5 Vבדוק את המפרט של הקלט.

המונחים: Level Shifting

למד עוד על ממירי רמת ההיגיון ב-FLT:0 (המדריך של SparkFuneurs)

להימנע מ-High-Frequency Switching on Long Wires

חוטים ארוכים ללא שיומנים פועלים כמו אנטנה.לעבור במהירות את סיכת GPIO יכול לגרום EMI (התערבות אלקטרונית) המשפיעה על רכיבים הסמוכים או קווי תקשורת.המשך עקבות קצרים, להשתמש זוג מעוות לסימנים מהירים, ולהוסיף משככי כאבים ליד המיקרובקר.

הגנה מפני מטען אלקטרוסטטי (ESD)

ערכות GPIO מחובר לחבר חיצוני (למשל, ראשי התיבות של חיישנים) פגיעים ל- ESD. בעוד מיקרובקרים מודרניים רבים בנו דידות הגנה ESD (עד כמה kV), הוספת דידות טלוויזיה חיצוניות או סדרות התנגדות מספק עמידות נוספת, במיוחד בפרויקטים תעשייתיים או בחוץ.

טכניקות GPIO מתקדמות

לאחר שפקדת GPIO הבסיסית, תוכל למנף תכונות מתקדמות יותר לשיפור הביצועים והיכולות.

דופק-Width Modulation (PWM)

PWM היא טכניקה שבה הפלט GPIO מתורג במהירות בין גבוה לנמוך עם מחזור חובה משתנה, ביעילות סימולטור מתח אנלוגי כאשר חלק מסנן נמוך-פס. רוב המיקרובקרים יש חומרת PWM אשר לנהל את ה toggling ללא התערבות CPU. השתמש PWM עבור dimming LEDs, שליטה בזוויתותservo, או יצירת אותות אודיו.

המונחים: foreign

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

פרוטוקולים של Bit-Banging Custom Protocols

bit-Banging פירושו להשתמש GPIO כדי לחקות פרוטוקול תקשורת לחלוטין בתוכנה.בעוד פחות יעיל מאשר חומרי חומרה היקפיים, זה מאפשר לך לנהוג פרוטוקולים יוצאי דופן או שימוש מחדש pins כאשר מודולים ייעודיים כבר תפוסים.לדוגמה, אחד דרוג GPIO יכול ליישם את פרוטוקול הפופולרי WS2812B (NeoPixel) LED עם תזמון מדויק. להיות מודע כי במהירות גבוהה מאוד יכול להפריע זמן אחר רגיש;

בעיות נפוצות GPIO

אפילו מפתחים מנוסים נכנסים לבעיות GPIO.כאן התרחישים הנפוצים ביותר ופתרונות שלהם.

  • (FLT:0)Pin לא משנה מצב: FIRLT:1 עיין ברישום כיוון הסינתן - זה עדיין יכול להיות מוגדר כקלט.בנוסף לוודא כי הסימון אינו נכתב על ידי פריפריה במצב חלופי.
  • (ב) ,0) ניצול קריאה: FLT:1 ניתן למשיכה פנימית או לסגירה לאחור התנגדות.אם זה לא עוזר, למדוד את המתח על הסימון עם רבמטר.
  • (FLT:0Output אינו מניע מכשיר חיצוני: ההרחבה 1) מודד את ההווה.אם העומס שואב יותר מהמקור/ההשרות המקסימלי של ה- pin, המתח ייפול.
  • (FLT:0) לא נחקרו מחדש או glitches:FLT 1:1 חוטים ארוכים יכולים ליצור רעש לתוך קו איפוס או אספקת חשמל. להוסיף 0.1 μF capacitor ליד המיקרובקר וסדרה התנגדות על פלט GPIO אם מניע עומסי קיבול.
  • [ה]התערות: [ה] [ה]] [ה]] [ה]] [ה]]][ה]]]][ה]]]][ה]]]][ה]]]] לא תנהגו [התרש"ל], אך אם הקצאת ה-microcontrol ממשיכה לפעול, ייתכן שסימן מסוים זה ימות.

מסקנה

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

לקריאה נוספת, לחקור את ה-FLT:0 (התיעוד של פי GPIOmia) ו-(FLT:1 ו-FLT:2ESP32 GPIO API ReferenceFLT:3 עם תפיסה מוצקה של GPIO, לפרויקטים המיקרו-בקר שלך לא יהיו גבולות.