लेखक: TorchIoTBootCamp
लिंक: https://zhuanlan.zhihu.com/p/339700391
Quora कडून
१. प्रस्तावना
सिलिकॉन लॅब्सने झिगबी गेटवे डिझाइनसाठी होस्ट+एनसीपी सोल्यूशन सादर केले आहे. या आर्किटेक्चरमध्ये, होस्ट UART किंवा SPI इंटरफेसद्वारे NCP शी संवाद साधू शकतो. बहुतेकदा UART वापरला जातो कारण तो SPI पेक्षा खूप सोपा आहे.
सिलिकॉन लॅब्सने होस्ट प्रोग्रामसाठी एक नमुना प्रकल्प देखील प्रदान केला आहे, जो नमुना आहे.Z3GatewayHostहा नमुना युनिक्स-सारख्या प्रणालीवर चालतो. काही ग्राहकांना RTOS वर चालू शकेल असा होस्ट नमुना हवा असेल, परंतु दुर्दैवाने, सध्या तरी RTOS आधारित कोणताही होस्ट नमुना उपलब्ध नाही. वापरकर्त्यांना RTOS आधारित स्वतःचा होस्ट प्रोग्राम विकसित करणे आवश्यक आहे.
सानुकूलित होस्ट प्रोग्राम विकसित करण्यापूर्वी UART गेटवे प्रोटोकॉल समजून घेणे महत्त्वाचे आहे. UART आधारित NCP आणि SPI आधारित NCP या दोन्हीसाठी, होस्ट NCP शी संवाद साधण्याकरिता EZSP प्रोटोकॉलचा वापर करतो.ईझेडएसपीयाचा संक्षिप्त रूप आहेएम्बरझनेट सिरीयल प्रोटोकॉलआणि त्याची व्याख्या यात केली आहेयूजी१००UART आधारित NCP साठी, UART वरून EZSP डेटा विश्वसनीयपणे वाहून नेण्यासाठी एक लोअर लेयर प्रोटोकॉल लागू केला जातो, तोच आहेASHप्रोटोकॉल, याचा संक्षिप्त रूपअसिंक्रोनस सीरियल होस्टASH बद्दल अधिक माहितीसाठी, कृपया पहायूजी१०१आणियूजी११५.
EZSP आणि ASH यांच्यातील संबंध खालील आकृतीद्वारे स्पष्ट करता येतो:
EZSP आणि ASH प्रोटोकॉलचे डेटा स्वरूप खालील आकृतीद्वारे स्पष्ट करता येते:
या पानावर, आम्ही UART डेटा फ्रेम करण्याची प्रक्रिया आणि झिगबी गेटवेमध्ये वारंवार वापरल्या जाणाऱ्या काही प्रमुख फ्रेम्सची ओळख करून देणार आहोत.
२. फ्रेमिंग
सर्वसाधारण फ्रेमिंग प्रक्रिया खालील चार्टद्वारे स्पष्ट करता येईल:
या चार्टमध्ये, 'डेटा' म्हणजे EZSP फ्रेम आहे. सर्वसाधारणपणे, फ्रेमिंग प्रक्रिया खालीलप्रमाणे आहेत: |क्रमांक|पायरी|संदर्भ|
|:-|:-|:-|
|१|ईझेडएसपी फ्रेम भरा|यूजी१००|
|२|डेटा यादृच्छिकीकरण|यूजी१०१ चा विभाग ४.३|
|3|कंट्रोल बाइट जोडा|UG101 चे अध्याय 2 आणि अध्याय 3|
|४|सीआरसीची गणना करा|यूजी१०१ चा विभाग २.३|
|५|बाइट स्टफिंग|यूजी१०१ चा विभाग ४.२|
|6|शेवटचा ध्वज जोडा|UG101 चा विभाग 2.4|
२.१. ईझेडएसपी फ्रेम भरा
EZSP फ्रेम फॉरमॅट UG100 च्या अध्याय 3 मध्ये स्पष्ट केला आहे.
लक्षात घ्या की SDK अपग्रेड झाल्यावर हे स्वरूप बदलू शकते. जेव्हा स्वरूप बदलेल, तेव्हा आम्ही त्याला एक नवीन आवृत्ती क्रमांक देऊ. हा लेख लिहिताना नवीनतम EZSP आवृत्ती क्रमांक 8 आहे (EmberZnet 6.8).
EZSP फ्रेम फॉरमॅट वेगवेगळ्या आवृत्त्यांमध्ये भिन्न असू शकत असल्याने, होस्ट आणि NCP साठी एक अनिवार्य आवश्यकता आहे.अवश्यएकाच EZSP आवृत्तीवर काम करा. अन्यथा, ते अपेक्षेप्रमाणे संवाद साधू शकणार नाहीत.
ते साध्य करण्यासाठी, होस्ट आणि NCP मधील पहिली कमांड ही व्हर्जन कमांड असली पाहिजे. दुसऱ्या शब्दांत सांगायचे झाल्यास, इतर कोणत्याही संवादापूर्वी होस्टने NCP चे EZSP व्हर्जन मिळवले पाहिजे. जर होस्टच्या बाजूचे EZSP व्हर्जन वेगळे असेल, तर तो संवाद थांबवला पाहिजे.
यामागील अंतर्निहित आवश्यकता अशी आहे की व्हर्जन कमांडचे स्वरूप असे असू शकतेकधीही बदलू नकाEZSP आवृत्तीच्या कमांडचे स्वरूप खालीलप्रमाणे आहे:
链接: https://zhuanlan.zhihu.com/p/339700391
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转转请注明出处.
२.२. डेटाचे यादृच्छिकीकरण
सविस्तर यादृच्छिकीकरण प्रक्रिया UG101 च्या विभाग ४.३ मध्ये वर्णन केली आहे. संपूर्ण EZSP फ्रेम यादृच्छिक केली जाईल. हे यादृच्छिकीकरण EZSP फ्रेम आणि एका छद्म-यादृच्छिक अनुक्रमाचा एक्सक्लुसिव्ह-OR करून केले जाते.
छद्म-यादृच्छिक अनुक्रम तयार करण्याची पद्धत खाली दिली आहे.
- rand0 = 0×42
- जर randi चा बिट 0 हा 0 असेल, तर randi+1 = randi >> 1
- जर randi चा बिट 0 हा 1 असेल, तर randi+1 = (randi >> 1) ^ 0xB8
२.३. कंट्रोल बाइट जोडा
कंट्रोल बाइट हा एक बाइटचा डेटा असून तो फ्रेमच्या सुरुवातीला जोडला पाहिजे. त्याचे स्वरूप खालील तक्त्यामध्ये स्पष्ट केले आहे:
एकूण ६ प्रकारचे कंट्रोल बाइट्स आहेत. पहिले तीन, ज्यात DATA, ACK आणि NAK यांचा समावेश आहे, ते EZSP डेटा असलेल्या सामान्य फ्रेम्ससाठी वापरले जातात. शेवटचे तीन, ज्यात RST, RSTACK आणि ERROR यांचा समावेश आहे, ते सामान्य EZSP डेटाशिवाय वापरले जातात.
RST, RSTACK आणि ERROR चे स्वरूप विभाग 3.1 ते 3.3 मध्ये वर्णन केले आहे.
२.४. सीआरसीची गणना करा
कंट्रोल बाइटपासून डेटाच्या शेवटपर्यंतच्या बाइट्सवर १६-बिट सीआरसी (CRC) ची गणना केली जाते. मानक CRCCCITT (g(x) = x16 + x12 + x5 + 1) हे 0xFFFF ने आरंभित केले जाते. सर्वात महत्त्वाचा बाइट सर्वात कमी महत्त्वाच्या बाइटच्या आधी येतो (बिग-एंडियन मोड).
२.५. बाईट स्टफिंग
UG101 च्या विभाग ४.२ मध्ये वर्णन केल्यानुसार, काही राखीव बाइट मूल्ये विशेष उद्देशांसाठी वापरली जातात. ही मूल्ये खालील तक्त्यामध्ये आढळतील:
जेव्हा ही मूल्ये फ्रेममध्ये दिसतात, तेव्हा डेटावर एक विशेष प्रक्रिया केली जाईल. – राखीव बाइटच्या आधी एस्केप बाइट 0x7D घाला – त्या राखीव बाइटचा बिट5 उलट करा.
या अल्गोरिदमची काही उदाहरणे खाली दिली आहेत:
२.६. एंड फ्लॅग जोडा
शेवटची पायरी म्हणजे फ्रेमच्या शेवटी 0x7E हा एंड फ्लॅग जोडणे. त्यानंतर, डेटा UART पोर्टवर पाठवला जाऊ शकतो.
३. डी-फ्रेमिंग प्रक्रिया
जेव्हा UART कडून डेटा प्राप्त होतो, तेव्हा तो डीकोड करण्यासाठी आपल्याला फक्त उलट्या क्रमाने कृती करण्याची आवश्यकता असते.
४. संदर्भ
पोस्ट करण्याची वेळ: ०८-फेब्रुवारी-२०२२








