על זיגבי EZSP UART

מחבר : TorchiotBootcamp
קישור : https: //zhuanlan.zhihu.com/p/339700391
מ- : קווורה

1. מבוא

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

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

חשוב להבין את פרוטוקול ה- Uart Gateway לפני פיתוח תוכנית מארח בהתאמה אישית. הן עבור NCP מבוסס UART והן של NCP מבוסס SPI, המארח משתמש בפרוטוקול EZSP כדי לתקשר עם ה- NCP.EZSPהוא קיצורפרוטוקול סידורי Emberznet, וזה מוגדר בUG100ו עבור NCP מבוסס UART, מיושם פרוטוקול שכבה נמוכה יותר כדי לשאת נתוני EZSP באופן אמין על UART, זהואֵפֶרפרוטוקול, קיצור שלמארח סדרתי אסינכרוניו לפרטים נוספים על אש, עייןUG101וכןUG115.

את הקשר בין EZSP לאפר יכול להיות ממחיש על ידי התרשים הבא:

1

ניתן להמחיש את פורמט הנתונים של ה- EZSP ופרוטוקול ה- ASH על ידי התרשים הבא:

2

בדף זה נציג את תהליך מסגרת נתוני ה- UART וכמה מסגרות מפתח המשמשות לעתים קרובות בשער זיגבי.

2. מסגרת

ניתן להמחיש את תהליך המסגרות הכללי על ידי התרשים הבא:

3

בתרשים זה, הנתונים פירושם מסגרת EZSP. באופן כללי, תהליכי המסגור הם: | לא | שלב | הפניה |

|:-|:-|:-|

| 1 | מלא את מסגרת EZSP | UG100 |

| 2 | אקראיות נתונים | סעיף 4.3 של UG101 |

| 3 | הוסף את בתים הבקרה | CHAP2 ו- CHAP3 של UG101 |

| 4 | חשב את ה- CRC | סעיף 2.3 של UG101 |

| 5 | מלית בתים | סעיף 4.2 של UG101 |

| 6 | הוסף את דגל הקצה | סעיף 2.4 של UG101 |

2.1. מלא את מסגרת EZSP

פורמט מסגרת EZSP מאויר בפרק 3 של UG100.

4

שימו לב כי פורמט זה עשוי להשתנות כאשר SDK משדרג. כאשר הפורמט משתנה, אנו ניתן לו מספר גרסה חדש. מספר הגרסה האחרון של EZSP הוא 8 כאשר מאמר זה נכתב (Emberznet 6.8).

מכיוון שפורמט מסגרת EZSP עשוי להיות שונה בין גרסאות שונות, קיימת דרישה חובה שהמארח ו- NCPחוֹבָהעבדו עם אותה גרסת EZSP. אחרת, הם לא יכולים לתקשר כצפוי.

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

הדרישה המרומזת מאחורי זה היא שהפורמט של פקודת הגרסה יכוללעולם אל תשתנהו פורמט הפקודה של גרסת EZSP הוא כמו למטה:

5

ניתן למצוא את ההסברים לשדה הפרמטרים והפורמט של תגובת הגרסה ב- CHAP 4 של UG100. שדה הפרמטרים הוא גרסת EZSP של תוכנית המארח. כאשר כתוב מאמר זה, זה 8.
7
作者 : TorchiotBootcamp
链接 : https: //zhuanlan.zhihu.com/p/339700391
来源 : 知乎
著作权归作者所有。商业转载请联系作者获得授权 , 非商业转载请注明出处。

2.2. אקראיות נתונים

תהליך האקראיות המפורט מתואר בסעיף 4.3 של UG101. כל מסגרת EZSP תוגדר אקראית. האקראי הוא בלעדי-או למסגרת EZSP ולרצף פסאודו אקראי.

להלן האלגוריתם של יצירת רצף הפסאודו-אקראי.

  • RAND0 = 0 × 42
  • אם ביט 0 של רנדי הוא 0, רנדי+1 = רנדי >> 1
  • אם ביט 0 של רנדי הוא 1, רנדי+1 = (רנדי >> 1) ^ 0xB8

2.3. הוסף את בייט הבקרה

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

6

לחלוטין, ישנם 6 סוגים של בתים בקרה. שלושת הראשונות משמשות למסגרות נפוצות עם נתוני EZSP, כולל נתונים, ACK ו- NAK. שלושת האחרונים משמשים ללא נתוני EZSP נפוצים, כולל RST, RSTACK ושגיאה.

הפורמט של ה- RST, RSTACK ושגיאה מתוארים בסעיף 3.1 עד 3.3.

2.4. חשב את ה- CRC

CRC של 16 סיביות מחושב על בתים מבית הבקרה עד סוף הנתונים. CRCCCITT הסטנדרטי (G (x) = x16 + x12 + x5 + 1) מאתחל ל- 0xffff. הבייט המשמעותי ביותר מקדים את הבייט הפחות משמעותי (מצב גדול-אנדיאני).

2.5. מלית בתים

כמתואר בסעיף 4.2 של UG101, ישנם כמה ערכי בתים שמורים המשמשים למטרה מיוחדת. ניתן למצוא ערכים אלה בטבלה הבאה:

7

כאשר ערכים אלה מופיעים במסגרת, טיפול מיוחד ייעשה לנתונים. - הכנס את בייט הבריחה 0x7d מול הבייט השמור - הפוך את BIT5 של אותו בתים שמור

להלן כמה דוגמאות לאלגוריתם זה:

8

2.6. הוסף את דגל הקצה

השלב האחרון הוא להוסיף את דגל הקצה 0x7e לסוף המסגרת. לאחר מכן ניתן לשלוח את הנתונים ליציאת UART.

3. תהליך דה-מסגרת

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

4 הפניות


זמן ההודעה: פברואר -08-2022
צ'אט מקוון WhatsApp!