Zigbee EZSP UART को बारेमा

लेखक: टर्चआइओटीबुटक्याम्प
लिङ्क: https://zhuanlan.zhihu.com/p/339700391
बाट: क्वोरा

परिचय

सिलिकन ल्याब्सले जिग्बी गेटवे डिजाइनको लागि होस्ट+एनसीपी समाधान प्रस्ताव गरेको छ। यस वास्तुकलामा, होस्टले UART वा SPI इन्टरफेस मार्फत NCP सँग सञ्चार गर्न सक्छ। सामान्यतया, UART प्रयोग गरिन्छ किनकि यो SPI भन्दा धेरै सरल छ।

सिलिकन ल्याब्सले होस्ट प्रोग्रामको लागि एउटा नमूना परियोजना पनि प्रदान गरेको छ, जुन नमूना होZ3Gatewayहोस्ट। यो नमुना युनिक्स जस्तो प्रणालीमा चल्छ। केही ग्राहकहरूले RTOS मा चल्न सक्ने होस्ट नमुना चाहन सक्छन्, तर दुर्भाग्यवश, हालको लागि RTOS मा आधारित कुनै होस्ट नमुना छैन। प्रयोगकर्ताहरूले RTOS मा आधारित आफ्नै होस्ट कार्यक्रम विकास गर्न आवश्यक छ।

अनुकूलित होस्ट कार्यक्रम विकास गर्नु अघि UART गेटवे प्रोटोकल बुझ्नु महत्त्वपूर्ण छ। UART आधारित NCP र SPI आधारित NCP दुवैको लागि, होस्टले NCP सँग कुराकानी गर्न EZSP प्रोटोकल प्रयोग गर्दछ।EZSPNameको लागि छोटो छएम्बरजेनेट सिरियल प्रोटोकल, र यसलाई मा परिभाषित गरिएको छUG100 को लागि सोधपुछ पेश गर्नुहोस्, हामी तपाईंलाई 24 घण्टामा सम्पर्क गर्नेछौं।। UART मा आधारित NCP को लागि, UART मा EZSP डेटा भरपर्दो रूपमा बोक्न तल्लो तहको प्रोटोकल लागू गरिएको छ, त्यो होखरानीप्रोटोकल, जसको लागि छोटोएसिन्क्रोनस सिरियल होस्ट। ASH को बारेमा थप विवरणहरूको लागि, कृपया हेर्नुहोस्UG101 को लागि सोधपुछ पेश गर्नुहोस्, हामी तपाईंलाई 24 घण्टामा सम्पर्क गर्नेछौं।रUG115 को लागि सोधपुछ पेश गर्नुहोस्, हामी तपाईंलाई 24 घण्टामा सम्पर्क गर्नेछौं।.

EZSP र ASH बीचको सम्बन्धलाई निम्न रेखाचित्रद्वारा चित्रण गर्न सकिन्छ:

१

EZSP र ASH प्रोटोकलको डेटा ढाँचालाई निम्न रेखाचित्रद्वारा चित्रण गर्न सकिन्छ:

२

यस पृष्ठमा, हामी UART डेटा फ्रेम गर्ने प्रक्रिया र Zigbee गेटवेमा बारम्बार प्रयोग हुने केही मुख्य फ्रेमहरूको परिचय दिनेछौं।

२. फ्रेमिङ

सामान्य फ्रेमिङ प्रक्रियालाई निम्न चार्टद्वारा चित्रण गर्न सकिन्छ:

३

यस चार्टमा, डेटाले EZSP फ्रेमलाई जनाउँछ। सामान्यतया, फ्रेमिङ प्रक्रियाहरू यस प्रकार छन्: |No|Step|Reference|

|:-|:-|:-|

|१|EZSP फ्रेम भर्नुहोस्|UG100|

|२|डेटा अनियमितता|UG101 को खण्ड ४.३|

|३|UG101| को नियन्त्रण बाइट|अध्याय२ र अध्याय३ थप्नुहोस्।

|४|CRC गणना गर्नुहोस्|UG101 को खण्ड २.३|

|५|बाइट स्टफिङ|UG101 को खण्ड ४.२|

|६|अन्त्य झण्डा थप्नुहोस्|UG101 को खण्ड २.४|

२.१. EZSP फ्रेम भर्नुहोस्

EZSP फ्रेम ढाँचा UG100 को अध्याय ३ मा चित्रण गरिएको छ।

४

ध्यान दिनुहोस् कि SDK अपग्रेड हुँदा यो ढाँचा परिवर्तन हुन सक्छ। जब ढाँचा परिवर्तन हुन्छ, हामी यसलाई नयाँ संस्करण नम्बर दिनेछौं। यो लेख लेख्दा पछिल्लो EZSP संस्करण नम्बर ८ हो (EmberZnet 6.8)।

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

त्यो प्राप्त गर्न, होस्ट र NCP बीचको पहिलो आदेश संस्करण आदेश हुनुपर्छ। अर्को शब्दमा, होस्टले कुनै पनि अन्य सञ्चार अघि NCP को EZSP संस्करण पुन: प्राप्त गर्नुपर्छ। यदि EZSP संस्करण होस्ट पक्षको EZSP संस्करण भन्दा फरक छ भने, सञ्चार रद्द गर्नुपर्छ।

यसको पछाडिको निहित आवश्यकता भनेको संस्करण आदेशको ढाँचाले गर्न सक्छकहिल्यै परिवर्तन नहुने। EZSP संस्करण आदेश ढाँचा तलको जस्तो छ:

५

प्यारामिटर फिल्डको व्याख्या र संस्करण प्रतिक्रियाको ढाँचा UG100 को अध्याय ४ मा पाउन सकिन्छ। प्यारामिटर फिल्ड होस्ट प्रोग्रामको EZSP संस्करण हो। यो लेख लेख्दा, यो ८ हो।
७
नाम: TorchIoTBootCamp
链接: https://zhuanlan.zhihu.com/p/339700391
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转转请注明出处।

२.२. डेटा अनियमितता

विस्तृत अनियमितता प्रक्रिया UG101 को खण्ड ४.३ मा वर्णन गरिएको छ। सम्पूर्ण EZSP फ्रेम अनियमित हुनेछ। अनियमितता विशेष-OR EZSP फ्रेम र एक छद्म-अनियमित अनुक्रमको लागि हो।

तल स्यूडो-यादृच्छिक अनुक्रम उत्पन्न गर्ने एल्गोरिथ्म छ।

  • र्‍यान्ड० = ०×४२
  • यदि रान्डीको बिट ० ० छ भने, रान्डी+१ = रान्डी >> १
  • यदि रान्डीको बिट ० १ छ भने, रान्डी+१ = (रान्डी >> १) ^ ०xB८

२.३. नियन्त्रण बाइट थप्नुहोस्

नियन्त्रण बाइट एक बाइट डेटा हो, र फ्रेमको शीर्षमा थपिनुपर्छ। ढाँचा तलको तालिकाद्वारा चित्रण गरिएको छ:

६

कुल मिलाएर, ६ प्रकारका नियन्त्रण बाइटहरू छन्। पहिलो तीन EZSP डेटा भएका साझा फ्रेमहरूको लागि प्रयोग गरिन्छ, जसमा DATA, ACK र NAK समावेश छन्। अन्तिम तीन RST, RSTACK र ERROR सहित सामान्य EZSP डेटा बिना प्रयोग गरिन्छ।

RST, RSTACK र ERROR को ढाँचा खण्ड ३.१ देखि ३.३ मा वर्णन गरिएको छ।

२.४. CRC गणना गर्नुहोस्

१६-बिट CRC नियन्त्रण बाइटदेखि डेटाको अन्त्यसम्म बाइटहरूमा गणना गरिन्छ। मानक CRCCCITT (g(x) = x16 + x12 + x5 + 1) 0xFFFF मा प्रारम्भ गरिएको छ। सबैभन्दा महत्त्वपूर्ण बाइट सबैभन्दा कम महत्त्वपूर्ण बाइट (बिग-एन्डियन मोड) भन्दा पहिले हुन्छ।

२.५। बाइट स्टफिङ

UG101 को खण्ड ४.२ मा वर्णन गरिए अनुसार, विशेष उद्देश्यका लागि प्रयोग गरिने केही आरक्षित बाइट मानहरू छन्। यी मानहरू निम्न तालिकामा फेला पार्न सकिन्छ:

७

जब यी मानहरू फ्रेममा देखा पर्छन्, डेटामा विशेष उपचार गरिनेछ। – आरक्षित बाइटको अगाडि एस्केप बाइट ०x७D घुसाउनुहोस् – त्यो आरक्षित बाइटको बिट५ उल्टाउनुहोस्

यस एल्गोरिथ्मका केही उदाहरणहरू तल दिइएका छन्:

८

२.६। अन्त्य झण्डा थप्नुहोस्

अन्तिम चरण भनेको फ्रेमको अन्त्यमा अन्तिम झण्डा ०x७E थप्नु हो। त्यसपछि, डेटा UART पोर्टमा पठाउन सकिन्छ।

३. डि-फ्रेमिङ प्रक्रिया

जब UART बाट डेटा प्राप्त हुन्छ, हामीले यसलाई डिकोड गर्न उल्टो चरणहरू गर्नु पर्छ।

४. सन्दर्भहरू


पोस्ट समय: फेब्रुअरी-०८-२०२२
व्हाट्सएप अनलाइन च्याट!