लेखक: टॉर्चीओटीबूटकॅम्प
लिंक: https://zhuanlan.zhihu.com/p/339700391
प्रेषक: Quora
1. परिचय
सिलिकॉन लॅब्सने झिग्बी गेटवे डिझाइनसाठी होस्ट+एनसीपी सोल्यूशन ऑफर केले आहे. या आर्किटेक्चरमध्ये, होस्ट UART किंवा SPI इंटरफेसद्वारे NCP शी संवाद साधू शकतो. सामान्यतः, UART वापरले जाते कारण ते SPI पेक्षा बरेच सोपे आहे.
सिलिकॉन लॅब्सने होस्ट प्रोग्रामसाठी नमुना प्रकल्प देखील प्रदान केला आहे, जो नमुना आहेZ3GatewayHost
. नमुना युनिक्स सारख्या प्रणालीवर चालतो. काही ग्राहकांना RTOS वर चालणारा होस्ट नमुना हवा असेल, परंतु दुर्दैवाने, सध्यातरी RTOS आधारित होस्ट नमुना नाही. वापरकर्त्यांनी RTOS वर आधारित त्यांचा स्वतःचा होस्ट प्रोग्राम विकसित करणे आवश्यक आहे.
सानुकूलित होस्ट प्रोग्राम विकसित करण्यापूर्वी UART गेटवे प्रोटोकॉल समजून घेणे महत्त्वाचे आहे. UART आधारित NCP आणि SPI आधारित NCP दोन्हीसाठी, NCP शी संवाद साधण्यासाठी होस्ट EZSP प्रोटोकॉल वापरतो.EZSPसाठी लहान आहेएम्बरझनेट सीरियल प्रोटोकॉल, आणि ते मध्ये परिभाषित केले आहेUG100. UART आधारित NCP साठी, EZSP डेटा UART वर विश्वासार्हपणे वाहून नेण्यासाठी लोअर लेयर प्रोटोकॉल लागू केला जातो, तोएएसएचप्रोटोकॉल, साठी लहानअसिंक्रोनस सीरियल होस्ट. ASH बद्दल अधिक माहितीसाठी, कृपया पहाUG101आणिUG115.
EZSP आणि ASH मधील संबंध खालील चित्राद्वारे स्पष्ट केले जाऊ शकतात:
EZSP आणि ASH प्रोटोकॉलचे डेटा स्वरूप खालील आकृतीद्वारे स्पष्ट केले जाऊ शकते:
या पृष्ठावर, आम्ही UART डेटा आणि Zigbee गेटवेमध्ये वारंवार वापरल्या जाणाऱ्या काही मुख्य फ्रेम तयार करण्याची प्रक्रिया सादर करू.
2. फ्रेमिंग
सामान्य फ्रेमिंग प्रक्रिया खालील तक्त्याद्वारे स्पष्ट केली जाऊ शकते:
या चार्टमध्ये, डेटा म्हणजे EZSP फ्रेम. सर्वसाधारणपणे, फ्रेमिंग प्रक्रिया आहेत: |नाही|स्टेप|संदर्भ|
|:-|:-|:-|
|1|EZSP फ्रेम भरा|UG100|
|2|डेटा यादृच्छिकीकरण|UG101 चे कलम 4.3|
|3|कंट्रोल बाइट जोडा|UG101 चे Chap2 आणि Chap3|
|4|सीआरसीची गणना करा|UG101 चे कलम 2.3|
|5|बाइट स्टफिंग|UG101 चे कलम 4.2|
|6|एंड फ्लॅग जोडा|UG101 चे कलम 2.4|
२.१. EZSP फ्रेम भरा
EZSP फ्रेम स्वरूप UG100 च्या Chap 3 मध्ये स्पष्ट केले आहे.
SDK अपग्रेड झाल्यावर हे स्वरूप बदलू शकते याकडे लक्ष द्या. फॉरमॅट बदलल्यावर, आम्ही त्याला नवीन आवृत्ती क्रमांक देऊ. हा लेख लिहिला गेला तेव्हा नवीनतम EZSP आवृत्ती क्रमांक 8 आहे (EmberZnet 6.8).
ईझेडएसपी फ्रेम फॉरमॅट वेगवेगळ्या आवृत्त्यांमध्ये भिन्न असू शकतो म्हणून, होस्ट आणि एनसीपीची अनिवार्य आवश्यकता आहेआवश्यक आहेसमान EZSP आवृत्तीसह कार्य करा. अन्यथा, ते अपेक्षेप्रमाणे संवाद साधू शकत नाहीत.
ते साध्य करण्यासाठी, यजमान आणि NCP यांच्यातील पहिली आज्ञा आवृत्ती कमांड असणे आवश्यक आहे. दुसऱ्या शब्दांत, होस्टने इतर कोणत्याही संप्रेषणापूर्वी NCP ची EZSP आवृत्ती पुनर्प्राप्त करणे आवश्यक आहे. यजमान बाजूच्या EZSP आवृत्तीपेक्षा EZSP आवृत्ती वेगळी असल्यास, संप्रेषण रद्द करणे आवश्यक आहे.
यामागील गर्भित आवश्यकता म्हणजे आवृत्ती कमांडचे स्वरूपकधीही बदलू नका. EZSP आवृत्ती आदेश स्वरूप खालीलप्रमाणे आहे:
链接: https://zhuanlan.zhihu.com/p/339700391
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转转请注明出处.
२.२. डेटा यादृच्छिकीकरण
तपशीलवार यादृच्छिकीकरण प्रक्रियेचे वर्णन UG101 च्या कलम 4.3 मध्ये केले आहे. संपूर्ण EZSP फ्रेम यादृच्छिक केली जाईल. यादृच्छिकीकरण अनन्य-किंवा EZSP फ्रेम आणि एक छद्म-यादृच्छिक क्रम आहे.
खाली छद्म-यादृच्छिक क्रम तयार करण्याचा अल्गोरिदम आहे.
- रँड0 = 0×42
- जर रांडीचा बिट 0 0 असेल तर रँडी+1 = रांडी >> 1
- रांडीचा बिट 0 1 असल्यास, रँडी+1 = (रांडी >> 1) ^ 0xB8
२.३. कंट्रोल बाइट जोडा
कंट्रोल बाइट हा एक बाइट डेटा आहे आणि तो फ्रेमच्या हेडमध्ये जोडला जावा. स्वरूप खालील तक्त्याद्वारे स्पष्ट केले आहे:
एकूण, 6 प्रकारचे कंट्रोल बाइट्स आहेत. पहिले तीन डेटा, ACK आणि NAK सह EZSP डेटासह सामान्य फ्रेमसाठी वापरले जातात. शेवटचे तीन सामान्य 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 घाला - त्या आरक्षित बाइटचा बिट5 उलट करा
खाली या अल्गोरिदमची काही उदाहरणे आहेत:
२.६. एंड फ्लॅग जोडा
शेवटची पायरी म्हणजे फ्रेमच्या शेवटी एंड फ्लॅग 0x7E जोडणे. त्यानंतर, डेटा UART पोर्टवर पाठविला जाऊ शकतो.
3. डी-फ्रेमिंग प्रक्रिया
जेव्हा UART कडून डेटा प्राप्त होतो, तेव्हा तो डीकोड करण्यासाठी आम्हाला फक्त उलट पायऱ्या कराव्या लागतात.
4. संदर्भ
पोस्ट वेळ: फेब्रुवारी-०८-२०२२