3.18. יסודות UART

ממשק UART (Universal Asynchronous Receiver-Transmitter) הוא הדרך הוותיקה והפשוטה ביותר להעביר בתים בין שני מיקרו-בקרים, או בין מיקרו-בקר למחשב מארח. שני חוטים נושאים את הנתונים – אחד לכל כיוון – ואדמה משותפת מחזירה את האות. אף צד אינו מריץ שעון משותף; הם מסכימים מראש על baud rate ומשחזרים את תזמון הביטים מקו הנתונים עצמו.

3.18.1. הפריים

כל תו על הקו עטוף בפריים: ביט התחלה, ביטי הנתונים, ביט זוגיות אופציונלי, וביט עצירה אחד או שניים.

A UART frame waveform. The signal sits idle high on the left, falls low for one bit time (the start bit), then carries eight data bits in sequence, then returns high for one bit time (the stop bit) before returning to idle.

פריים UART אחד: ביט התחלה, שמונה ביטי נתונים, וביט עצירה, כל אחד ברוחב של זמן ביט אחד (1 / baudrate שניות).

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

3.18.2. ה-baud rate

זמן הביט – ומהירות הקישור – נקבעים על ידי ה-baud rate, מספר הביטים בשנייה. 9600, 19200, 38400, 57600, 115200, 230400, 460800 ו-921600 הם הערכים הסטנדרטיים; 115200 הוא ברירת המחדל הנפוצה ביותר. שני הקצוות חייבים להסכים על ה-baud rate בדיוק של אחוזים בודדים, אחרת המקלט דוגם את הביטים בנקודות הלא נכונות והנתונים חוזרים משובשים.

קצבי baud גבוהים יותר מעבירים יותר נתונים בשנייה אך רגישים יותר לאורך הכבל, לקיבוליות, ולדיוק של השעונים בכל קצה. עבור קישורים קצרים בין שני לוחות על אותו שולחן עבודה, 115200 עד 921600 עובד בנוחות.

3.18.3. חיווט

קישור UART משתמש בשלושה חוטים:

Two boards labelled A and B, connected by three wires. Board A's TX pin connects to board B's RX pin; board B's TX pin connects to board A's RX pin; and both boards' ground pins are tied together.

חיווט UART: TX בלוח אחד הולך ל-RX בשני, ושתי האדמות קשורות.

  • TX → RX, בשני הכיוונים. פין השידור של כל לוח הוא פין הקליטה של הלוח האחר. טעות נפוצה אצל מתחילים היא לחווט TX → TX – שני פלטים נאבקים זה בזה, ללא נתונים באף מקלט.

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

3.18.4. רמות מתח ושכבות פיזיות

רמות האות בפיני ה-UART של המצלמה הן 3.3 V CMOS: אדמה עבור אפס לוגי, 3.3 V עבור אחד לוגי. כל דבר שמדבר 3.3 V CMOS UART – מיקרו-בקר אחר, מתאם USB-לסיריאלי שמוגדר ל-3.3 V, מודול GPS של 3.3 V – ניתן לחווט ישירות.

הערה

התקני 5 V CMOS UART (מיקרו-בקרים ישנים יותר, מודולי GPS מסוימים, חלק מהפריצות חיישן הישנות) מדברים את אותו מסגור UART ברמות לוגיות של 5 V. חיווטם ישירות למצלמה אינו בטוח: TX של 5 V המניע את ה-RX של המצלמה חורג ממתח הכניסה המרבי המוחלט במצלמות שאינן עמידות ל-5 V, וייתכן שה-TX של 3.3 V של המצלמה לא יגיע לסף הגבוה של התקן ה-5 V עבור אחד לוגי נקי.

תרגום בין שני המתחים דורש מנהל קו פעיל – שבב מסיט-רמה דו-כיווני ייעודי עם טרנזיסטורי הנעה משלו בשני צדי כל קו. מסיטי ה-MOSFET-ועם-pull-up הפסיביים מ-התאמת מתח (Level shifting) אינם מספיקים כאן: הקצוות העולים שלהם מסתמכים על טעינת הקו דרך נגד, מה שנכון במהירויות מיתוג אך איטי בהרבה מדי עבור UART. ב-115200 baud כל ביט נמשך כ-8 µs, וההתכווצות RC של המסיט הפסיבי מטשטשת ביט אחד אל הבא.

מנהל קו פעיל מפיק קצוות נקיים בשני הכיוונים בקצבי UART מלאים. בחר רכיב המדורג עבור ה-baud rate שבו הקישור יפעל, חווט את ה-TX וה-RX של המצלמה לצד 3.3 V של המסיט, וחווט את ה-TX וה-RX של התקן ה-5 V לצד 5 V של המסיט.

שלוש שכבות פיזיות ישנות יותר משתמשות באותו מסגור אך במתחים שונים, ודורשות ממיר רמה ביניהן לבין מיקרו-בקר של 3.3 V:

  • RS-232. משמש על ידי יציאות סיריאליות במחשבי שולחן וחלק מהציוד התעשייתי. הקו נע בין בערך ±5 V ל-±15 V, עם מצב סרק במסילה השלילית. קוטביות הפוכה ומתח גבוה בהשוואה ל-CMOS; שבב ממשפחת MAX232 / MAX3232 (או דומה) מטפל בהמרה.

  • RS-422. תקן איתות דיפרנציאלי עבור קישורים מנקודה לנקודה (מנהל אחד, עד עשרה מקלטים). המנהל שולח על זוג חוטים מאוזן; המקלט רואה את ה-הפרש ביניהם ומתעלם מרעש מצב-משותף לאורך הדרך. קישורים דו-כיווניים מלאים משתמשים בשני זוגות – אחד לכל כיוון. RS-422 מגיע לעשרות מטרים עד קילומטר בהתאם ל-baud rate, ושבב משדר-מקלט RS-422 יושב בין ה-TX / RX של המצלמה לבין הזוג המאוזן.

  • RS-485. בן הדוד מרובה-הנקודות של RS-422 – אותו איתות דיפרנציאלי, אך תוכנן להעמיד עד 32 מנהלים ומקלטים על אפיק אחד. רוב הקישורים הם חצי-דו-כיווניים על זוג יחיד, כאשר המנהל והמקלט של כל צומת חולקים את אותם חוטים והתוכנה מבררת מי מדבר. משמש באפיקי אוטומציה תעשייתית (Modbus, DMX512, Profibus) שבהם החוטים נמתחים למרחק והרעש גרוע; שבב משדר-מקלט RS-485 יושב בין ה-TX / RX של המצלמה לבין הזוג הדיפרנציאלי.

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