लेखक: TorchiIoTBootCamp
लिंक:https://zhuanlan.zhihu.com/p/339700391
स्रोत: Quora
1 परिचय
सिलिकॉन लैब्स ने ज़िगबी गेटवे डिज़ाइन के लिए होस्ट+एनसीपी समाधान प्रस्तुत किया है। इस आर्किटेक्चर में, होस्ट यूएआरटी या एसपीआई इंटरफ़ेस के माध्यम से एनसीपी से संचार कर सकता है। आमतौर पर, यूएआरटी का उपयोग किया जाता है क्योंकि यह एसपीआई की तुलना में कहीं अधिक सरल है।
सिलिकॉन लैब्स ने होस्ट प्रोग्राम के लिए एक सैंपल प्रोजेक्ट भी प्रदान किया है, जो कि सैंपल है।Z3गेटवेहोस्टयह सैंपल यूनिक्स जैसे सिस्टम पर चलता है। कुछ ग्राहक ऐसे होस्ट सैंपल की तलाश में हो सकते हैं जो आरटीओएस पर चल सके, लेकिन दुर्भाग्यवश, फिलहाल आरटीओएस आधारित कोई होस्ट सैंपल उपलब्ध नहीं है। उपयोगकर्ताओं को आरटीओएस पर आधारित अपना खुद का होस्ट प्रोग्राम विकसित करना होगा।
कस्टमाइज्ड होस्ट प्रोग्राम विकसित करने से पहले UART गेटवे प्रोटोकॉल को समझना महत्वपूर्ण है। UART आधारित NCP और SPI आधारित NCP दोनों के लिए, होस्ट NCP के साथ संचार करने के लिए EZSP प्रोटोकॉल का उपयोग करता है।ईजेडएसपीका संक्षिप्त रूप हैएम्बरज़नेट सीरियल प्रोटोकॉलऔर इसे परिभाषित किया गया हैयूजी100UART आधारित NCP के लिए, EZSP डेटा को UART पर विश्वसनीय रूप से ले जाने के लिए एक निचली परत प्रोटोकॉल लागू किया जाता है, यही वह प्रोटोकॉल है।राखप्रोटोकॉल, जिसका संक्षिप्त रूप हैअतुल्यकालिक सीरियल होस्टASH के बारे में अधिक जानकारी के लिए, कृपया देखेंयूजी101औरयूजी115.
EZSP और ASH के बीच संबंध को निम्नलिखित आरेख द्वारा दर्शाया जा सकता है:
EZSP और ASH प्रोटोकॉल के डेटा प्रारूप को निम्नलिखित आरेख द्वारा दर्शाया जा सकता है:
इस पृष्ठ पर, हम यूएआरटी डेटा को फ्रेम करने की प्रक्रिया और ज़िगबी गेटवे में अक्सर उपयोग किए जाने वाले कुछ प्रमुख फ्रेमों का परिचय देंगे।
2. फ्रेमिंग
फ्रेमिंग की सामान्य प्रक्रिया को निम्नलिखित चार्ट द्वारा दर्शाया जा सकता है:
इस चार्ट में, डेटा का अर्थ EZSP फ्रेम है। सामान्य तौर पर, फ्रेमिंग प्रक्रियाएँ इस प्रकार हैं: |संख्या|चरण|संदर्भ|
|:-|:-|:-|
|1|ईजेडएसपी फ्रेम भरें|यूजी100|
|2|डेटा रैंडमाइजेशन|यूजी101 का अनुभाग 4.3|
|3|कंट्रोल बाइट जोड़ें|UG101 के अध्याय 2 और अध्याय 3|
|4|सीआरसी की गणना करें|यूजी101 का खंड 2.3|
|5|बाइट स्टफिंग|यूजी101 का अनुभाग 4.2|
|6|समाप्ति ध्वज जोड़ें|UG101 का अनुभाग 2.4|
2.1. EZSP फ्रेम भरें
EZSP फ्रेम प्रारूप को UG100 के अध्याय 3 में दर्शाया गया है।
कृपया ध्यान दें कि SDK अपग्रेड होने पर यह फ़ॉर्मेट बदल सकता है। फ़ॉर्मेट बदलने पर हम इसे एक नया वर्ज़न नंबर देंगे। इस लेख के लिखे जाने के समय EZSP का नवीनतम वर्ज़न नंबर 8 है (EmberZnet 6.8)।
चूंकि EZSP फ्रेम प्रारूप विभिन्न संस्करणों में भिन्न हो सकता है, इसलिए यह अनिवार्य है कि होस्ट और NCPअवश्यदोनों को एक ही EZSP संस्करण के साथ काम करना चाहिए। अन्यथा, वे अपेक्षा के अनुरूप संवाद नहीं कर पाएंगे।
इसके लिए, होस्ट और एनसीपी के बीच पहला कमांड वर्जन कमांड होना चाहिए। दूसरे शब्दों में, किसी भी अन्य संचार से पहले होस्ट को एनसीपी का ईजेडएसपी वर्जन प्राप्त करना होगा। यदि ईजेडएसपी वर्जन होस्ट साइड के ईजेडएसपी वर्जन से अलग है, तो संचार रद्द कर दिया जाना चाहिए।
इसके पीछे अंतर्निहित आवश्यकता यह है कि संस्करण कमांड का प्रारूपकभी मत बदलोEZSP संस्करण कमांड का प्रारूप नीचे दिया गया है:
स्रोत: https://zhuanlan.zhihu.com/p/339700391
उत्तर: ठीक है
इस लेख में, हमने पाया है कि यह एक अच्छा विचार है।
2.2. डेटा यादृच्छिकीकरण
विस्तृत यादृच्छिकीकरण प्रक्रिया का वर्णन UG101 के अनुभाग 4.3 में किया गया है। संपूर्ण EZSP फ्रेम को यादृच्छिकीकृत किया जाएगा। यादृच्छिकीकरण EZSP फ्रेम और एक छद्म-यादृच्छिक अनुक्रम के बीच अनन्य-OR विधि द्वारा किया जाता है।
नीचे छद्म-यादृच्छिक अनुक्रम उत्पन्न करने का एल्गोरिदम दिया गया है।
- rand0 = 0×42
- यदि randi का बिट 0 शून्य है, तो randi+1 = randi >> 1
- यदि randi का बिट 0 1 है, तो randi+1 = (randi >> 1) ^ 0xB8
2.3. कंट्रोल बाइट जोड़ें
कंट्रोल बाइट एक बाइट का डेटा होता है, और इसे फ्रेम के शीर्ष पर जोड़ा जाना चाहिए। इसका प्रारूप नीचे दी गई तालिका में दर्शाया गया है:
कुल मिलाकर, छह प्रकार के कंट्रोल बाइट्स होते हैं। पहले तीन का उपयोग EZSP डेटा वाले सामान्य फ़्रेमों के लिए किया जाता है, जिनमें DATA, ACK और NAK शामिल हैं। अंतिम तीन का उपयोग सामान्य EZSP डेटा के बिना किया जाता है, जिनमें RST, RSTACK और ERROR शामिल हैं।
RST, RSTACK और ERROR के प्रारूप का वर्णन अनुभाग 3.1 से 3.3 में किया गया है।
2.4. सीआरसी की गणना करें
कंट्रोल बाइट से लेकर डेटा के अंत तक के बाइट्स पर 16-बिट सीआरसी की गणना की जाती है। मानक CRCCCITT (g(x) = x16 + x12 + x5 + 1) को 0xFFFF से इनिशियलाइज़ किया जाता है। सबसे महत्वपूर्ण बाइट सबसे कम महत्वपूर्ण बाइट से पहले आती है (बिग-एंडियन मोड)।
2.5. बाइट स्टफिंग
UG101 के अनुभाग 4.2 में वर्णित अनुसार, कुछ आरक्षित बाइट मान विशेष प्रयोजन के लिए उपयोग किए जाते हैं। ये मान निम्नलिखित तालिका में पाए जा सकते हैं:
जब ये मान फ्रेम में दिखाई देते हैं, तो डेटा के साथ एक विशेष प्रक्रिया की जाएगी। – आरक्षित बाइट के आगे एस्केप बाइट 0x7D डालें – उस आरक्षित बाइट के बिट 5 को उल्टा कर दें
नीचे इस एल्गोरिदम के कुछ उदाहरण दिए गए हैं:
2.6. समाप्ति ध्वज जोड़ें
अंतिम चरण में फ्रेम के अंत में एंड फ्लैग 0x7E जोड़ा जाता है। इसके बाद, डेटा को UART पोर्ट पर भेजा जा सकता है।
3. डी-फ्रेमिंग प्रक्रिया
जब यूएआरटी से डेटा प्राप्त होता है, तो हमें इसे डिकोड करने के लिए बस विपरीत चरणों का पालन करना होता है।
4. संदर्भ
पोस्ट करने का समय: 8 फरवरी 2022








