ئاپتور: TorchIoTBootCamp
ئۇلىنىش : https: //zhuanlan.zhihu.com/p/339700391
مەنبە: Quora
1. كىرىش سۆز
Silicon Labs شىركىتى Zigbee گەيتىش ئېغىزى لايىھىسى ئۈچۈن host+NCP ھەل قىلىش چارىسى بىلەن تەمىنلىدى. بۇ ئارخىتېكتۇرىدا، host UART ياكى SPI ئىنتېرفېيسى ئارقىلىق NCP بىلەن ئالاقە قىلالايدۇ. كۆپىنچە ھاللاردا، UART SPI غا قارىغاندا كۆپ ئاددىي بولغاچقا ئىشلىتىلىدۇ.
Silicon Labs شىركىتى يەنە ئاساسىي پروگرامما ئۈچۈن ئۈلگە لايىھە بىلەن تەمىنلىدى، بۇ ئۈلگە.Z3GatewayHostبۇ ئۈلگە Unix غا ئوخشاش سىستېمىدا ئىجرا بولىدۇ. بەزى خېرىدارلار RTOS دا ئىجرا بولالايدىغان بىر ئائىلە ئۈلگىسىنى خالىشى مۇمكىن، ئەمما ئەپسۇسكى، ھازىرچە RTOS ئاساسلىق ئائىلە ئۈلگىسى يوق. ئىشلەتكۈچىلەر RTOS غا ئاساسەن ئۆزلىرىنىڭ ئائىلە پروگراممىسىنى تەرەققىي قىلدۇرۇشى كېرەك.
خاسلاشتۇرۇلغان كومپيۇتېر پروگراممىسىنى تۈزۈشتىن بۇرۇن، UART ئېغىزى كېلىشىمىنى چۈشىنىش مۇھىم. UART ئاساسلىق NCP ۋە SPI ئاساسلىق NCP ئۈچۈن، كومپيۇتېر NCP بىلەن ئالاقە قىلىش ئۈچۈن EZSP كېلىشىمىنى ئىشلىتىدۇ.EZSPقىسقارتىلغانEmberZnet يۈرۈشلۈك كېلىشىمى، ۋە ئۇ دا ئېنىقلانغانUG100UART ئاساسىدىكى NCP ئۈچۈن، EZSP سانلىق مەلۇماتلىرىنى UART ئارقىلىق ئىشەنچلىك يەتكۈزۈش ئۈچۈن تۆۋەن قاتلاملىق كېلىشىم يولغا قويۇلىدۇ، يەنىئاشپروتوكول، قىسقارتىلمىسىئاسسىنخرونلۇق تىزىلىق خوجايىنASH ھەققىدە تېخىمۇ كۆپ تەپسىلاتلار ئۈچۈن، بۇ يەرگە قاراڭ.UG101ۋەUG115.
EZSP بىلەن ASH ئوتتۇرىسىدىكى مۇناسىۋەتنى تۆۋەندىكى دىئاگرامما ئارقىلىق كۆرسىتىشكە بولىدۇ:
EZSP ۋە ASH كېلىشىمىنىڭ سانلىق مەلۇمات فورماتىنى تۆۋەندىكى دىئاگرامما ئارقىلىق كۆرسىتىشكە بولىدۇ:
بۇ بەتتە، بىز UART سانلىق مەلۇماتلىرىنى رامكا قىلىش جەريانى ۋە Zigbee Gateway دا دائىم ئىشلىتىلىدىغان بەزى ئاچقۇچلۇق رامكىلارنى تونۇشتۇرىمىز.
2. رامكا ياساش
ئادەتتىكى رامكا تۈزۈش جەريانىنى تۆۋەندىكى جەدۋەل ئارقىلىق كۆرسىتىشكە بولىدۇ:
بۇ دىئاگراممىدا، سانلىق مەلۇماتلار EZSP رامكىسىنى كۆرسىتىدۇ. ئادەتتە، رامكىسى تۈزۈش جەريانلىرى: |No|Step|Reference|
|:-|:-|:-|
|1|EZSP رامكىسىنى تولدۇرۇڭ|UG100|
|2|سانلىق مەلۇماتلارنى تاسادىپىيلاشتۇرۇش|UG101 نىڭ 4.3-بۆلىكى|
|3|كونترول بايتنى قوشۇڭ|UG101 نىڭ 2-بابى ۋە 3-بابى|
|4|UG101 نىڭ 2.3-ماددىسى بويىچە CRC نى ھېسابلاڭ|
|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 رامكىسى ۋە ساختا تاسادىپىي تەرتىپنى ئۆز ئىچىگە ئالىدۇ ياكى چەتكە قېقىلىدۇ.
تۆۋەندە ساختا تاسادىپىي تەرتىپنى ھاسىل قىلىش ئالگورىزىمى كۆرسىتىلدى.
- rand0 = 0×42
- ئەگەر راندىنىڭ 0-بىتى 0 بولسا، راندى+1 = راندى >> 1
- ئەگەر راندىنىڭ 0-بىتى 1 بولسا، راندى+1 = (راندى >> 1) ^ 0xB8
2.3. كونترول بايتىنى قوشۇڭ
كونترول بايتى بىر بايتلىق سانلىق مەلۇمات بولۇپ، رامكا بېشىغا قوشۇلۇشى كېرەك. فورماتى تۆۋەندىكى جەدۋەلدە كۆرسىتىلدى:
جەمئىي 6 خىل كونترول بايتى بار. دەسلەپكى ئۈچ خىلى DATA، ACK ۋە NAK قاتارلىق EZSP سانلىق مەلۇماتلىرى بار ئورتاق رامكىلار ئۈچۈن ئىشلىتىلىدۇ. ئاخىرقى ئۈچ خىلى RST، RSTACK ۋە ERROR قاتارلىق ئورتاق EZSP سانلىق مەلۇماتلىرىسىز ئىشلىتىلىدۇ.
RST، RSTACK ۋە ERROR نىڭ فورماتى 3.1 دىن 3.3 گىچە بولغان بۆلەكلەردە چۈشەندۈرۈلگەن.
2.4. CRC نى ھېسابلاڭ
16 بىتلىق CRC كونترول بايتىدىن سانلىق مەلۇماتنىڭ ئاخىرىغىچە بولغان بايتلار بويىچە ھېسابلىنىدۇ. ئۆلچەملىك CRCCCITT (g(x) = x16 + x12 + x5 + 1) 0xFFFF غا باشلىنىدۇ. ئەڭ مۇھىم بايت ئەڭ كىچىك بايتتىن بۇرۇن كېلىدۇ (چوڭ ئاخىر ھالىتى).
2.5 بايت تولدۇرۇش
UG101 نىڭ 4.2-بۆلىكىدە بايان قىلىنغاندەك، ئالاھىدە مەقسەتتە ئىشلىتىلىدىغان بەزى زاپاس بايت قىممەتلىرى بار. بۇ قىممەتلەرنى تۆۋەندىكى جەدۋەلدىن تاپقىلى بولىدۇ:
بۇ قىممەتلەر رامكىدا پەيدا بولغاندا، سانلىق مەلۇماتلارغا ئالاھىدە مۇئامىلە قىلىنىدۇ. – 0x7D قېچىش بايتىنى زاپاس بايتنىڭ ئالدىغا كىرگۈزۈڭ – زاپاس بايتنىڭ بىت 5 نى تەتۈر ئايلاندۇرۇڭ
تۆۋەندە بۇ ئالگورىزىمنىڭ بىر قانچە مىسالى كۆرسىتىلدى:
2.6. ئاخىرلىشىش بەلگىسىنى قوشۇڭ
ئەڭ ئاخىرقى قەدەم رامكىنىڭ ئاخىرىغا 0x7E ئاخىرلىشىش بەلگىسىنى قوشۇش. ئۇنىڭدىن كېيىن، سانلىق مەلۇماتلارنى UART ئېغىزىغا ئەۋەتىشكە بولىدۇ.
3. رامكىنى چىقىرىۋېتىش جەريانى
UART دىن سانلىق مەلۇمات تاپشۇرۇۋېلىنغاندا، بىز پەقەت ئۇنىڭ كودىنى چىقىرىش ئۈچۈن تەتۈر قەدەملەرنى قىلىشىمىز كېرەك.
4. پايدىلانغان ماتېرىياللار
ئېلان قىلىنغان ۋاقىت: 2022-يىلى 2-ئاينىڭ 8-كۈنى








