लेखक: TorchIoTBootCamp
लिङ्क: https://zhuanlan.zhihu.com/p/339700391
बाट: Quora
1. परिचय
सिलिकन ल्याब्सले Zigbee गेटवे डिजाइनको लागि होस्ट+NCP समाधान प्रस्ताव गरेको छ। यस वास्तुकलामा, होस्टले NCP सँग UART वा SPI इन्टरफेस मार्फत सञ्चार गर्न सक्छ। सामान्यतया, UART प्रयोग गरिन्छ किनकि यो SPI भन्दा धेरै सरल छ।
सिलिकन ल्याब्सले होस्ट प्रोग्रामको लागि नमूना परियोजना पनि प्रदान गरेको छ, जुन नमूना होZ3GatewayHost
। नमूना युनिक्स-जस्तो प्रणालीमा चल्छ। केही ग्राहकहरूले RTOS मा चल्न सक्ने होस्ट नमूना चाहन सक्छन्, तर दुर्भाग्यवश, त्यहाँ कुनै समयको लागि RTOS आधारित होस्ट नमूना छैन। प्रयोगकर्ताहरूले RTOS मा आधारित आफ्नै होस्ट प्रोग्राम विकास गर्न आवश्यक छ।
अनुकूलित होस्ट प्रोग्राम विकास गर्नु अघि UART गेटवे प्रोटोकल बुझ्न महत्त्वपूर्ण छ। UART आधारित NCP र SPI आधारित NCP दुवैका लागि, होस्टले NCP सँग सञ्चार गर्न EZSP प्रोटोकल प्रयोग गर्दछ।EZSPलागि छोटो छEmberZnet सीरियल प्रोटोकल, र यो मा परिभाषित गरिएको छUG100। UART आधारित NCP को लागि, EZSP डाटा UART मा भरपर्दो रूपमा बोक्न तल्लो तह प्रोटोकल लागू गरिएको छ, त्यो होASHप्रोटोकल, को लागी छोटोएसिन्क्रोनस सिरियल होस्ट। ASH को बारेमा थप विवरणहरूको लागि, कृपया सन्दर्भ गर्नुहोस्UG101रUG115.
EZSP र ASH बीचको सम्बन्धलाई निम्न रेखाचित्रद्वारा चित्रण गर्न सकिन्छ:
EZSP र ASH प्रोटोकल को डाटा ढाँचा निम्न रेखाचित्र द्वारा चित्रण गर्न सकिन्छ:
यस पृष्ठमा, हामी UART डाटा र Zigbee गेटवेमा बारम्बार प्रयोग हुने केही मुख्य फ्रेमहरू फ्रेम गर्ने प्रक्रिया प्रस्तुत गर्नेछौं।
2. फ्रेमिङ
सामान्य फ्रेमिङ प्रक्रिया निम्न चार्ट द्वारा चित्रण गर्न सकिन्छ:
यस चार्टमा, डाटा भनेको EZSP फ्रेम हो। सामान्यतया, फ्रेमिङ प्रक्रियाहरू हुन्: | होइन | चरण | सन्दर्भ |
|:-|:-|:-|
|1|EZSP फ्रेम भर्नुहोस्|UG100|
|2|डेटा अनियमितता|UG101 को खण्ड 4.3|
|3|कन्ट्रोल बाइट थप्नुहोस्|UG101 को Chap2 र Chap3|
|4|CRC गणना गर्नुहोस्|UG101 को खण्ड 2.3|
|5|बाइट स्टफिंग|UG101 को खण्ड 4.2|
|6|अन्तको झण्डा थप्नुहोस्|UG101 को खण्ड 2.4|
२.१। 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
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转转请注明出处।
२.२। डाटा अनियमितता
विस्तृत अनियमित प्रक्रिया UG101 को खण्ड 4.3 मा वर्णन गरिएको छ। सम्पूर्ण EZSP फ्रेम अनियमित हुनेछ। अनियमितता विशेष-वा EZSP फ्रेम र एक छद्म-यादृच्छिक अनुक्रम हो।
तल छद्म-यादृच्छिक अनुक्रम उत्पन्न गर्ने एल्गोरिथ्म छ।
- rand0 = 0×42
- यदि randi को बिट 0 0 हो, randi+1 = randi >> 1
- यदि randi को बिट 0 1 हो भने, randi+1 = (randi >> 1) ^ 0xB8
२.३ नियन्त्रण बाइट थप्नुहोस्
नियन्त्रण बाइट एक बाइट डाटा हो, र फ्रेम को टाउको मा थपिनु पर्छ। ढाँचा तलको तालिकामा चित्रण गरिएको छ:
कुलमा, त्यहाँ 6 प्रकारको नियन्त्रण बाइटहरू छन्। पहिलो तीन EZSP डेटा, DATA, ACK र NAK सहित साझा फ्रेमहरूको लागि प्रयोग गरिन्छ। अन्तिम तीन सामान्य EZSP डाटा बिना प्रयोग गरिन्छ, RST, RSTACK र ERROR सहित।
RST, RSTACK र ERROR को ढाँचा खण्ड 3.1 देखि 3.3 मा वर्णन गरिएको छ।
२.४ CRC गणना गर्नुहोस्
16-बिट CRC लाई डेटाको अन्त्य सम्म नियन्त्रण बाइटबाट बाइटहरूमा गणना गरिन्छ। मानक CRCCCITT (g(x) = x16 + x12 + x5 + 1) लाई 0xFFFF मा प्रारम्भ गरिएको छ। सबैभन्दा महत्त्वपूर्ण बाइट सबैभन्दा कम महत्त्वपूर्ण बाइट (ठूलो-एन्डियन मोड) भन्दा अगाडि हुन्छ।
२.५ बाइट भराई
UG101 को खण्ड 4.2 मा वर्णन गरिए अनुसार, विशेष उद्देश्यका लागि प्रयोग गरिएका केही आरक्षित बाइट मानहरू छन्। यी मानहरू निम्न तालिकामा फेला पार्न सकिन्छ:
जब यी मानहरू फ्रेममा देखा पर्छन्, डेटामा विशेष उपचार गरिनेछ। - आरक्षित बाइटको अगाडि एस्केप बाइट 0x7D घुसाउनुहोस् - त्यो आरक्षित बाइटको bit5 लाई उल्टाउनुहोस्।
तल यस एल्गोरिथ्मका केही उदाहरणहरू छन्:
२.६। अन्त्य झण्डा थप्नुहोस्
अन्तिम चरण भनेको फ्रेमको अन्त्यमा अन्तिम झण्डा 0x7E थप्नु हो। त्यस पछि, डाटा UART पोर्टमा पठाउन सकिन्छ।
3. डि-फ्रेमिङ प्रक्रिया
जब डाटा UART बाट प्राप्त हुन्छ, हामीले यसलाई डिकोड गर्नका लागि उल्टो चरणहरू मात्र गर्न आवश्यक छ।
4. सन्दर्भहरू
पोस्ट समय: फेब्रुअरी-08-2022