Table of Contents
מבוא
תקשורת יעילה בין מיקרובקרים PIC הוא עמוד השדרה של מערכות משובצות רבות, המאפשר עיבוד מבוזר, היתוך חיישן, ופעולה מתואמת.בין אם אתה בונה צג סביבתי רב-פעמי, מערכת בקרה רובוטית, או בקר תעשייתי רשתי, היכולת להחליף נתונים אמינים בין מכשירים PIC ישירות השפעה מערכת ורמתיות.
תקשורת אווירית באמצעות UART
חומרה והגדרה
ה- Universal Asynchronous Acceptr/Transmitter (UART) הוא השיטה הפשוטה ביותר והשימושית ביותר לתקשורת נקודה לנקודה- to-point בין שני מיקרו-בקרים PIC.It דורש רק שני חוטים - Transmit (TX) ולקבל (RX) - בנוסף ל-SECS/Tputs Protual Codes יש להגדיר עם קצב חיקוי, פיסות נתונים, parity, ו- bits-pARTs מודרניים, כדי לאפשר את ה- EARTX משותף.
העברת נתונים וקבלה
בעסקה טיפוסית UART, משדר PIC מסתמך על הילוך לתוך הרישום השידור (TXREG), אשר מעביר את ה bits מסונכרן עם השעון הבנד.ה המקלט עוקב אחר צמיד RX ומאגד את ה bits לתוך הרישום מקבל (RCG) פולס המתאים או מאפשר לך לטפל בנתונים כפי שמגיע, לדוגמה, לשלוח מחרוזת לתוך חדר הבקרה בתוך חדר השינה (ה) תוך כדי קבלת הודעה קצרה על ידי לחיצה על ידי לחיצה על ידי לחיצה על ידי לחיצה על ידי לחיצה על ידי לחיצה על ידי לחיצה על ידי לחיצה על ידי לחיצה על קובץ נתונים קצרודה (I) על ידי לחיצה על ידי לחיצה על ידי לחיצה על ידי לחיצה על ידי לחיצה על ידי לחיצה על ידי לחיצה על ידי לחיצה על ידי לחיצה על ידי לחיצה על ידי לחיצה על ידי לחיצה על ידי לחיצה על ידי לחיצה על קובץ נתונים (ICOD).
Interrupt-Driven UART for Real-Time Systems
בדיקת פסולת CPU מחזורים ויכולה לגרום לחסרות על ידיות בשיעורי הבשור גבוה יותר.עבור מערכות ייצור, השתמש בדגלים EUSART להפריע: TXIF (המעבר ל-buffer ריק) ו-RCIF (קבלה מלאה) כדי לקבוע את העדיפות ההיקפית של ה- Eipheral להפריע כראוי. A טיפוסי צריך לקרוא buG לתוך תוכנה ו-Breaking הדגל, כדי לאפשר שידור, רק לאחר ש-FIte זה מאפשר ל-rectionicial הוא מקבל את העדיפות עבור משימות כדי למנוע את זה רק לאחר תיקון נתונים בלתי-rections.
תקשורת בין-Integrated Circle (I2C)
I2C Bus Basics ו-
I2C משתמש בשני קווים פתוחים דו-צדדיים: SDA (נתונים) ו-SCL (שעון) תומך במאסטרים מרובים ועד 127 עבדים באוטובוס יחיד.לכל עבד יש כתובת 7 סיביות ייחודית או 10 סיביות. תקשורת תמיד מתחילה עם תנאי התחלה (SDA נופל בעוד SCLSCL גבוה), ואחריו את הכתובת לקריאה וכתוב / write קצת.
יישום Master-Slave עם MSSP
כדי להשתמש I2C על PIC, ראשית להחדיר את מודול MSSP במצב מאסטר I2C על ידי כתיבה ל- SSPxAD D baud קצב גנרטור ו- SSPxCON1/2 הרשמה.המאסטר יוזם עסקה על ידי כתיבת מצב התחלה לרישום, ולאחר מכן שליחת כתובת עבדים כדי לענות על ידי SSPKSK או לענות על ידי טיפול ידני, על ידי טיפול ידני, כדי לעצור את הטיפול הנכון עם SCK.
Multi-Master and Busבור
היכולת הרב-מאסטר של I2C מאפשרת מספר PICs ליזום העברות ללא תוכן אוטובוס, הודות לבוררות.כאשר שני מאסטרים מתחילים בו זמנית, שניהם נוהגים באוטובוס עד שאחד מאבד בוררות (כלומר, הוא מנסה לנהוג גבוה אבל רואה ירידה ב- SDA) המפסיד משחרר את האוטובוס ומחזר לאחר עיכוב.
Serial Peripheral Interface (SPI) תקשורת
מצבי SPI ו-Virduration
SPI מספק העברת נתונים מלאה, מהירה גבוהה באמצעות ארבעה קווים: MOSI (מנהל, עבד), MISO (מנהל ב, עבד בחוץ), SCK (שעון אווירי), ו- SS (slave בחר) המאסטר שולט השעון ובוחרים אשר עבד כדי להגדיר על ידי משיכת קו SS נמוך.4 מצבי שעון (0, 1 3), להגדיר את השלב הקוטבי והשלב של SCK של SCKD2, כמו CD2, יש צורך בנתונים במהירות גבוהה.
ניהול העבדים
כל עבד דורש קו SS ייעודי מן המאסטר.על צד העבד, את הסינת ה-SS חייב להיות מוגדר כקלט; כאשר הוא הולך נמוך, מודול SPI של העבד מופעל. במערכות רב-עבדות, המאסטר מניע את הסנדס של העבד המסכן נמוך תוך שמירה על כל האחרים גבוה.וודא כי כל סיכות ה-M של עבדים שאינם נבחרים נמצאים במשכות גבוהה (או-או-או-פו) מאפשרות שימוש בפונקציות גבוהות יותר עבור עבדים אחרים.
Full-Duplex Data Exchange
SPI משדר ומקבל בו זמנית: כל דופק שעון מאסטר עובר מעט מ-MoaI וקצת לתוך MISO. זה אומר גם המאסטר וגם עבד צריך להיות מוכן לשלוח הילוך בכל פעם שהם מקבלים אחד.אם העבד רק צריך לשלוח נתונים, המאסטר יכול לשלוח דוממי על ידי טט (למשל, 0x00) כדי ליצור מחזורי שעון הדרושים.
שיקולים מתקדמים
זיהוי שגיאות וביטול
אין פרוטוקול חסין לרעש או תקלות חולפות.עבור קישורים קריטיים למשימה, להוסיף בדיקת משקל - כגון סכום XOR פשוט או 16 סיביות CRC - לאחר החיוב. המקלט קובע את הסימון ומשווה אותו; אם זה לא תואם, הוא שולח NAK ו-Freperretratries עד מספר תצורה של ניסיונות.
מידע על זרימת הדם וה Flow Control
כאשר הנתונים מגיעים מהר יותר מהיישום יכול לעבד אותו, buffer מונע אובדן. aעיגול טבעת ב- RAM הוא הפתרון הסטנדרטי עבור מקלטי UART ו SPI. ISR כותב הנכנסים לזנב ה-buffer, ואת הלולאהה העיקרית קורא מן הראש.עבור I2C, מודול MSSP כולל חיץ חומרה עבור כמה מטושטשים, אבל ייתכן שתצטרך לקבל יותר phosx / Ix.
ניהול חשמל ו Wake-on-Communication
מערכות המופעלות על סוללות חייבות לשמר אנרגיה.מיקרו-בקרים רבים יכולים להיכנס למצבי שינה בעוצמה נמוכה ולתעורר על הפרעה חיצונית מ-UART, I2C, או SPI קו. עבור UART, לחבר את ה- RX לסימון של שינוי-על-ידי שינוי; כאשר מתחיל להפריע, המכשיר מתעורר ומעבד את ה- I2C יכול להיות מוגדר כדי ליצור כתובת SS-ACT חשובה, אפילו לא צריך להיות מסוגל להתעורר עם קרב ראשון.
טיפים אמיתיים
בחירת הפרוטוקול הנכון
בחירת UART, I2C, או SPI תלוי בדרישות הספציפיות שלך:
- (FLT:0)UARTIRIRLT:1) הוא הטוב ביותר עבור פשוט, למרחקים ארוכים (עם נהגים קו) קישורים נקודתיים לנקודה כאשר רק שני מכשירים צריכים לתקשר.
- (ב) ⁇ 0 (ב) ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
- (FLT:0SPIIRLT:1) מציע את המהירות הגבוהה ביותר וזרימת נתונים מלאים, אידיאלי עבור הזרמת אודיו, כרטיסי SD או מהיר ADCs.
תמיד להתאים את הפרוטוקול לשיעור הנתונים ולמרחק הדרושים.לדוגמה, I2C אוטובוס capacitance מגביל את אורך הכבלים; השתמש ב- SPI עם אותות שונים (למשל, RS-422) עבור ריצות ארוכות יותר.
ויכוח עם לוגי אנליייזר
מנתח לוגי הוא הכלי היעיל ביותר עבור debugging תקשורת בין-PIC. ללכוד את TX / RX, SDA / SCL, או MOSI / MISO / SCK / SCK / SCK / SS תוך הפעלת הקושחה שלך.חפש תנאים מתחילים / עצירה נכונים, כתובת נאותה על ידיטים, והפרות תזמון.זה סבירים רבים לוגיקה USB מנתח (למשל, סלים) תמיכה בפרוטוקול decoding, מראה ערכים גולמיים, ולוודא שגיאות אוטובוס כגון כתמים פתוחים (ללא פתורים).
מודולריות ובדיקה
כתוב מודולים נפרדים של כל ממשק תקשורת, עם ממשק API מוגדר היטב עבור שליחת וקבלת חבילות. Unit לבדוק כל נהג בבידוד באמצעות כבל לולאה (קישור TX ל- RX עבור UART, או חוט שני PICs יחד). Gradually להגדיל את המורכבות של הבדיקה: להתחיל עם יחיד על ידי העברות חד-צדדיות, ולאחר מכן להוסיף שגיאות (למשל, רעש קו באמצעות כפתור).
שיטות טובות ביותר עבור Robust Communications
- [01:0] ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
- (ב) ,0) מתנגדים: קווי MLT:1 (I2C דורשים משיכת חיצוני; עבור SPI, קווי MISO שאינם בשימוש צריך להיות משוך גבוה או משולש.
- (FLT:0) ⁇ ובדיקות: FIRLT:1) השתמש בפיסות נאמנות על UART עבור זיהוי שגיאות חד-ביט יחיד; להוסיף חבילה CRC להגנה חזקה יותר.
- (ב) ⁇ :0) ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
- (FLT:0) עדיפות בין-הטרפטרו: FLT:1 נספח עדיפות גבוהה יותר לתקשורת רגישה לזמן (למשל, SPI לשליטה בזמן אמת) ונמוך ל-UART נמוך.
- (FLT:0) מחיקה של התעוררות: 1FreaLT (אם משתמשים בתבניות שינה), ודא כי מקור ההתעוררות יציב (למשל, לוגיקה דבק RSS או hysteresis תוכנה).
- (FLT:0) esting in רועש סביבות:FLT:1 השתמש כבל מוגן עבור ריצות ארוכות יותר, להוסיף טפרי חרוזים, לשקול נהגים קו שונה (RS-485) לתנאים קיצוניים.
- (ב) ,0) תיעוד קליר: 1 (FLT:1) מסמך ה- baud Rate, I2C כתובות, מצב SPI, ו-Spמיפוי עבור כל צומת כדי להקל על הפחתת התחזוקה והתחזוקה.
מסקנה
(הפעלת תקשורת נתונים חזקה בין מספר רב של מיקרו-בקרים PIC דורש הבנה מוצקה של UART, I2C ופרוטוקולים SPI, בשילוב עם תכנון חומרה זהה והנדסת קושחה. על ידי שליטה בתצורה של כל ממשק, באמצעות העברות מונעות או DMA מבוסס העברות, יישום שיטות זיהוי מפורטות ושילוב של שיטות, ניתן לבנות מערכות מוטבעות, עם נקודת מבט פשוטה, ולאחר מכן, בהדרגה, כדי להוסיף תכונות של IF2F1: