लेखक: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 के लिए, EZSP डेटा को UART पर विश्वसनीय रूप से ले जाने के लिए एक निचली परत प्रोटोकॉल लागू किया जाता है, यही हैराखप्रोटोकॉल, संक्षिप्त रूपएसिंक्रोनस सीरियल होस्टASH के बारे में अधिक जानकारी के लिए कृपया देखेंयूजी101औरयूजी115.
ईजेडएसपी और एएसएच के बीच संबंध को निम्नलिखित चित्र द्वारा दर्शाया जा सकता है:
EZSP और ASH प्रोटोकॉल के डेटा प्रारूप को निम्नलिखित चित्र द्वारा दर्शाया जा सकता है:
इस पृष्ठ पर, हम UART डेटा को फ्रेम करने की प्रक्रिया और कुछ प्रमुख फ़्रेमों का परिचय देंगे, जिनका उपयोग अक्सर ज़िगबी गेटवे में किया जाता है।
2. फ़्रेमिंग
सामान्य फ़्रेमिंग प्रक्रिया को निम्नलिखित चार्ट द्वारा दर्शाया जा सकता है:
इस चार्ट में, डेटा का मतलब 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 में दर्शाया गया है।
ध्यान दें कि SDK अपग्रेड होने पर यह प्रारूप बदल सकता है। जब प्रारूप बदलेगा, तो हम इसे एक नया संस्करण नंबर देंगे। जब यह लेख लिखा गया था, तब EZSP का नवीनतम संस्करण नंबर 8 था (EmberZnet 6.8)।
चूंकि EZSP फ्रेम प्रारूप विभिन्न संस्करणों के बीच भिन्न हो सकता है, इसलिए यह अनिवार्य आवश्यकता है कि होस्ट और NCPअवश्यउसी EZSP संस्करण के साथ काम करें। अन्यथा, वे अपेक्षित रूप से संवाद नहीं कर सकते।
इसे प्राप्त करने के लिए, होस्ट और NCP के बीच पहला कमांड वर्जन कमांड होना चाहिए। दूसरे शब्दों में, होस्ट को किसी भी अन्य संचार से पहले NCP के EZSP संस्करण को पुनः प्राप्त करना होगा। यदि EZSP संस्करण होस्ट पक्ष के EZSP संस्करण से भिन्न है, तो संचार को निरस्त किया जाना चाहिए।
इसके पीछे अंतर्निहित आवश्यकता यह है कि संस्करण कमांड का प्रारूपकभी मत बदलोEZSP संस्करण कमांड प्रारूप नीचे जैसा है:
स्रोत: 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 प्रकार के नियंत्रण बाइट्स हैं। पहले तीन का उपयोग 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 में वर्णित है, कुछ आरक्षित बाइट मान विशेष उद्देश्य के लिए उपयोग किए जाते हैं। ये मान निम्न तालिका में पाए जा सकते हैं:
जब ये मान फ़्रेम में दिखाई देते हैं, तो डेटा के साथ एक विशेष व्यवहार किया जाएगा। – आरक्षित बाइट के सामने एस्केप बाइट 0x7D डालें – उस आरक्षित बाइट के बिट5 को उलट दें
इस एल्गोरिथम के कुछ उदाहरण नीचे दिए गए हैं:
2.6. अंत ध्वज जोड़ें
अंतिम चरण फ्रेम के अंत में एंड फ्लैग 0x7E जोड़ना है। उसके बाद, डेटा को UART पोर्ट पर भेजा जा सकता है।
3. डी-फ़्रेमिंग प्रक्रिया
जब UART से डेटा प्राप्त होता है, तो हमें उसे डिकोड करने के लिए विपरीत चरण करने होते हैं।
4. संदर्भ
पोस्ट करने का समय: फरवरी-08-2022