ज़िगबी ईज़ीएसपी यूएआरटी के बारे में

लेखक: TorchIoTBootCamp
लिंक:https://zhuanlan.zhihu.com/p/339700391
स्रोत: Quora

1 परिचय

सिलिकॉन लैब्स ने ज़िगबी गेटवे डिज़ाइन के लिए होस्ट+एनसीपी समाधान पेश किया है। इस आर्किटेक्चर में, होस्ट UART या SPI इंटरफ़ेस के माध्यम से NCP से संचार कर सकता है। आमतौर पर, UART का उपयोग किया जाता है क्योंकि यह SPI की तुलना में बहुत सरल है।

सिलिकॉन लैब्स ने मेजबान कार्यक्रम के लिए एक नमूना परियोजना भी प्रदान की है, जो नमूना हैZ3गेटवेहोस्टयह सैंपल यूनिक्स जैसे सिस्टम पर चलता है। कुछ ग्राहक ऐसा होस्ट सैंपल चाहते हैं जो RTOS पर चल सके, लेकिन दुर्भाग्य से, फिलहाल RTOS आधारित कोई होस्ट सैंपल उपलब्ध नहीं है। उपयोगकर्ताओं को RTOS पर आधारित अपना स्वयं का होस्ट प्रोग्राम विकसित करना होगा।

किसी अनुकूलित होस्ट प्रोग्राम को विकसित करने से पहले UART गेटवे प्रोटोकॉल को समझना ज़रूरी है। UART आधारित NCP और SPI आधारित NCP, दोनों के लिए, होस्ट NCP के साथ संचार करने के लिए EZSP प्रोटोकॉल का उपयोग करता है।ईजेडएसपीका संक्षिप्त रूप हैएम्बरज़नेट सीरियल प्रोटोकॉल, और इसे परिभाषित किया गया हैयूजी100UART आधारित NCP के लिए, UART पर EZSP डेटा को विश्वसनीय रूप से ले जाने के लिए एक निचली परत प्रोटोकॉल लागू किया जाता है, जो किराखप्रोटोकॉल, संक्षिप्त रूपएसिंक्रोनस सीरियल होस्टASH के बारे में अधिक जानकारी के लिए कृपया देखेंयूजी101औरयूजी115.

ईजेडएसपी और एएसएच के बीच संबंध को निम्नलिखित चित्र द्वारा दर्शाया जा सकता है:

1

EZSP और ASH प्रोटोकॉल के डेटा प्रारूप को निम्नलिखित चित्र द्वारा दर्शाया जा सकता है:

2

इस पृष्ठ में, हम UART डेटा को फ्रेम करने की प्रक्रिया और कुछ प्रमुख फ़्रेमों का परिचय देंगे, जिनका उपयोग अक्सर ज़िगबी गेटवे में किया जाता है।

2. फ़्रेमिंग

सामान्य फ़्रेमिंग प्रक्रिया को निम्नलिखित चार्ट द्वारा दर्शाया जा सकता है:

3

इस चार्ट में, डेटा का मतलब EZSP फ़्रेम है। सामान्यतः, फ़्रेमिंग प्रक्रियाएँ इस प्रकार हैं: |नहीं|चरण|संदर्भ|

|:-|:-|:-|

|1|EZSP फ़्रेम भरें|UG100|

|2|डेटा रैंडमाइजेशन|UG101 का खंड 4.3|

|3|नियंत्रण बाइट जोड़ें|UG101 का अध्याय2 और अध्याय3|

|4|सीआरसी की गणना करें|UG101 का अनुभाग 2.3|

|5|बाइट स्टफिंग|UG101 की धारा 4.2|

|6|अंत ध्वज जोड़ें|UG101 का अनुभाग 2.4|

2.1. EZSP फ़्रेम भरें

EZSP फ्रेम प्रारूप को UG100 के अध्याय 3 में दर्शाया गया है।

4

कृपया ध्यान दें कि SDK के अपग्रेड होने पर यह फ़ॉर्मैट बदल सकता है। फ़ॉर्मैट बदलने पर हम इसे एक नया वर्ज़न नंबर देंगे। इस लेख के लिखे जाने तक EZSP का नवीनतम वर्ज़न नंबर 8 था (EmberZnet 6.8)।

चूंकि EZSP फ्रेम प्रारूप विभिन्न संस्करणों के बीच भिन्न हो सकता है, इसलिए यह अनिवार्य आवश्यकता है कि होस्ट और NCPअवश्यउसी EZSP संस्करण के साथ काम करें। अन्यथा, वे अपेक्षानुसार संवाद नहीं कर पाएँगे।

ऐसा करने के लिए, होस्ट और NCP के बीच पहला कमांड "वर्जन" कमांड होना चाहिए। दूसरे शब्दों में, होस्ट को किसी भी अन्य संचार से पहले NCP का EZSP संस्करण प्राप्त करना होगा। यदि EZSP संस्करण, होस्ट पक्ष के EZSP संस्करण से भिन्न है, तो संचार को रद्द कर देना होगा।

इसके पीछे अंतर्निहित आवश्यकता यह है कि संस्करण कमांड का प्रारूपकभी मत बदलोEZSP संस्करण कमांड प्रारूप नीचे जैसा है:

5

पैरामीटर फ़ील्ड और संस्करण प्रतिक्रिया के प्रारूप की व्याख्या UG100 के अध्याय 4 में पाई जा सकती है। पैरामीटर फ़ील्ड होस्ट प्रोग्राम का EZSP संस्करण है। जब यह लेख लिखा गया था, तब यह 8 था।
7
उदाहरण: TorchIoTBootCamp
स्रोत: https://zhuanlan.zhihu.com/p/339700391
उत्तर: ठीक है
इस लेख में, हमने पाया है कि यह एक अच्छा विचार है।

2.2. डेटा रैंडमाइजेशन

विस्तृत यादृच्छिकीकरण प्रक्रिया UG101 के खंड 4.3 में वर्णित है। संपूर्ण EZSP फ़्रेम का यादृच्छिकीकरण किया जाएगा। यादृच्छिकीकरण EZSP फ़्रेम और एक छद्म-यादृच्छिक अनुक्रम को अनन्य-OR करने के लिए किया जाता है।

नीचे छद्म यादृच्छिक अनुक्रम उत्पन्न करने का एल्गोरिथ्म दिया गया है।

  • रैंड0 = 0×42
  • यदि randi का बिट 0 0 है, randi+1 = randi >> 1
  • यदि randi का बिट 0 1 है, randi+1 = (randi >> 1) ^ 0xB8

2.3. नियंत्रण बाइट जोड़ें

नियंत्रण बाइट एक बाइट डेटा है, और इसे फ़्रेम के शीर्ष में जोड़ा जाना चाहिए। इसका प्रारूप नीचे दी गई तालिका में दर्शाया गया है:

6

कुल मिलाकर, नियंत्रण बाइट्स 6 प्रकार के होते हैं। पहले तीन का उपयोग EZSP डेटा वाले सामान्य फ़्रेम के लिए किया जाता है, जिसमें DATA, ACK और NAK शामिल हैं। अंतिम तीन का उपयोग सामान्य EZSP डेटा के बिना किया जाता है, जिसमें RST, RSTACK और ERROR शामिल हैं।

RST, RSTACK और ERROR का प्रारूप अनुभाग 3.1 से 3.3 में वर्णित है।

2.4. सीआरसी की गणना करें

एक 16-बिट CRC की गणना नियंत्रण बाइट से लेकर डेटा के अंत तक बाइट्स पर की जाती है। मानक CRCCCITT (g(x) = x16 + x12 + x5 + 1) को 0xFFFF पर आरंभीकृत किया जाता है। सबसे महत्वपूर्ण बाइट, सबसे कम महत्वपूर्ण बाइट (बिग-एंडियन मोड) से पहले आता है।

2.5. बाइट स्टफिंग

जैसा कि UG101 के खंड 4.2 में बताया गया है, कुछ आरक्षित बाइट मान विशेष प्रयोजनों के लिए उपयोग किए जाते हैं। ये मान निम्न तालिका में दिए गए हैं:

7

जब ये मान फ़्रेम में दिखाई देते हैं, तो डेटा के साथ एक विशेष व्यवहार किया जाएगा। - आरक्षित बाइट के सामने एस्केप बाइट 0x7D डालें - उस आरक्षित बाइट के बिट5 को उलट दें

नीचे इस एल्गोरिथम के कुछ उदाहरण दिए गए हैं:

8

2.6. अंत ध्वज जोड़ें

अंतिम चरण फ़्रेम के अंत में एंड फ़्लैग 0x7E जोड़ना है। इसके बाद, डेटा UART पोर्ट पर भेजा जा सकता है।

3. डी-फ्रेमिंग प्रक्रिया

जब UART से डेटा प्राप्त होता है, तो हमें उसे डिकोड करने के लिए बस विपरीत चरण करने होते हैं।

4. संदर्भ


पोस्ट करने का समय: फ़रवरी-08-2022
व्हाट्सएप ऑनलाइन चैट!