Zigbee EZSP UART ھەققىدە

ئاپتور : TorchIoTBootCamp
ئۇلىنىش : https: //zhuanlan.zhihu.com/p/339700391
: Quora دىن

1. تونۇشتۇرۇش

كىرىمنىي تەجرىبىخانىسى Zigbee دەرۋازىسىنى لايىھىلەش ئۈچۈن ساھىبجامال + NCP ھەل قىلىش چارىسى بىلەن تەمىنلىدى. بۇ بىناكارلىقتا ، ساھىبجامال UART ياكى SPI كۆرۈنمە يۈزى ئارقىلىق NCP بىلەن ئالاقە قىلالايدۇ. كۆپىنچە ، UART SPI غا قارىغاندا تېخىمۇ ئاددىي بولغاچقا ئىشلىتىلىدۇ.

كىرىمنىي تەجرىبىخانىسى ساھىبجامال پروگرامما ئۈچۈن ئۈلگە تۈر بىلەن تەمىنلىدى ، بۇ ئەۋرىشكەZ3GatewayHost. ئەۋرىشكە Unix غا ئوخشاش سىستېمىدا ئىجرا بولىدۇ. بەزى خېرىدارلار RTOS دا ئىجرا بولىدىغان ساھىبجامال ئەۋرىشكىسىنى تەلەپ قىلىشى مۇمكىن ، ئەمما بەختكە قارشى ، ھازىرچە RTOS ئاساسىدىكى ساھىبجامال يوق. ئىشلەتكۈچىلەر RTOS ئاساسىدا ئۆزىنىڭ ساھىبجامال پروگراممىسىنى تەرەققىي قىلدۇرۇشى كېرەك.

خاسلاشتۇرۇلغان ساھىبجامال پروگراممىسىنى ئېچىشتىن بۇرۇن UART دەرۋازا كېلىشىمىنى چۈشىنىش تولىمۇ مۇھىم. UART نى ئاساس قىلغان NCP ۋە SPI نى ئاساس قىلغان NCP ئۈچۈن ، ساھىبجامال EZSP كېلىشىمىنى ئىشلىتىپ NCP بىلەن ئالاقە قىلىدۇ.EZSPقىسقاEmberZnet يۈرۈشلۈك كېلىشىمنامىسىھەمدە ئۇ ئېنىقلانغانUG100. UART نى ئاساس قىلغان NCP ئۈچۈن تۆۋەن قاتلاملىق كېلىشىم يولغا قويۇلۇپ ، EZSP سانلىق مەلۇماتلىرىنى UART دىن ئىشەنچلىك يەتكۈزۈش ئۈچۈن ، بۇASHكېلىشىم ، قىسقاماس قەدەمسىز يۈرۈشلۈك رىياسەتچى. ASH ھەققىدە تېخىمۇ كۆپ تەپسىلاتلارنى كۆرۈڭUG101ۋەUG115.

EZSP بىلەن ASH نىڭ مۇناسىۋىتىنى تۆۋەندىكى دىئاگرامما ئارقىلىق چۈشەندۈرگىلى بولىدۇ:

1

EZSP ۋە ASH كېلىشىمىنىڭ سانلىق مەلۇمات فورماتىنى تۆۋەندىكى دىئاگرامما ئارقىلىق تەسۋىرلەشكە بولىدۇ:

2

بۇ بەتتە بىز ZARTbe دەرۋازىسىدا دائىم ئىشلىتىلىدىغان UART سانلىق مەلۇماتلىرى ۋە بىر قىسىم ئاچقۇچلۇق رامكىلارنى تۈزۈش جەريانىنى تونۇشتۇرىمىز.

2. Frameing

ئادەتتىكى رامكا جەريانىنى تۆۋەندىكى جەدۋەل ئارقىلىق چۈشەندۈرگىلى بولىدۇ:

3

بۇ جەدۋەلدە سانلىق مەلۇماتلار 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 بۆلىكى |

2.1. EZSP رامكىسىنى تولدۇرۇڭ

EZSP رامكا شەكلى UG100 نىڭ 3-بابىدا كۆرسىتىلدى.

4

SDK يېڭىلانغاندا بۇ فورماتنىڭ ئۆزگىرىشى مۇمكىنلىكىگە دىققەت قىلىڭ. فورماتى ئۆزگەرگەندە ، بىز ئۇنىڭغا يېڭى نەشر نومۇرى بېرىمىز. بۇ ماقالە يېزىلغاندا ئەڭ يېڭى EZSP نەشرى 8 (EmberZnet 6.8).

EZSP رامكا شەكلى ئوخشىمىغان نەشىرلەردە ئوخشىماسلىقى مۇمكىن ، ساھىبجامال بىلەن NCP نىڭ مەجبۇرىي تەلىپى بارMUSTئوخشاش EZSP نەشرى بىلەن ئىشلەڭ. بولمىسا ، ئۇلار ئويلىغىنىدەك ئالاقە قىلالمايدۇ.

بۇنى ئەمەلگە ئاشۇرۇش ئۈچۈن ، باش ئاپپارات بىلەن NCP ئوتتۇرىسىدىكى بىرىنچى بۇيرۇق چوقۇم نەشر بۇيرۇقى بولۇشى كېرەك. باشقىچە قىلىپ ئېيتقاندا ، ساھىبجامال باشقا ئالاقىلىشىشتىن بۇرۇن چوقۇم NCP نىڭ EZSP نەشرىنى ئەسلىگە كەلتۈرۈشى كېرەك. ئەگەر EZSP نەشىرى باش ئاپپاراتنىڭ EZSP نۇسخىسى بىلەن ئوخشىمىسا ، چوقۇم ئالاقىنى ئەمەلدىن قالدۇرۇشى كېرەك.

بۇنىڭ ئارقىسىدىكى يوشۇرۇن تەلەپ شۇكى ، بۇيرۇق بۇيرۇقىنىڭ فورماتى قىلالايدۇNEVER CHANGE. EZSP نەشرىنىڭ بۇيرۇق شەكلى تۆۋەندىكىدەك:

5

UG100 نىڭ 4-بابىدا پارامېتىر مەيدانىنىڭ چۈشەندۈرۈشى ۋە نەشىر ئىنكاسىنىڭ فورماتىنى تاپقىلى بولىدۇ. پارامېتىر مەيدانى ساھىبجامال پروگراممىنىڭ EZSP نەشرى. بۇ ماقالە يېزىلغاندا ، ئۇ 8.
7
作者: TorchIoTBootCamp
链接: https: //zhuanlan.zhihu.com/p/339700391
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

2.2. Data Randomization

تەپسىلىي پەرقلەندۈرۈش جەريانى UG101 نىڭ 4.3 بۆلىكىدە بايان قىلىنغان. پۈتكۈل EZSP رامكىسى ئىختىيارىي بولىدۇ. ئىختىيارىيلاشتۇرۇش مەخسۇس OR ياكى EZSP رامكىسى ۋە ساختا ئىختىيارى تەرتىپ.

تۆۋەندىكىسى ساختا تاسادىپىي تەرتىپ ھاسىل قىلىشنىڭ ھېسابلاش ئۇسۇلى.

  • rand0 = 0 × 42
  • ئەگەر رەندىنىڭ bit 0 بولسا 0 ، randi + 1 = randi >> 1
  • ئەگەر رەندىنىڭ bit 0 بولسا 1 ، randi + 1 = (randi >> 1) ^ 0xB8

2.3. كونترول بايىتىنى قوشۇڭ

كونترول بايىت بىر بايىت سانلىق مەلۇمات بولۇپ ، رامكىنىڭ بېشىغا قوشۇلۇشى كېرەك. فورماتى تۆۋەندىكى جەدۋەل بىلەن تەسۋىرلەنگەن:

6

ئومۇمىي جەھەتتىن ئالغاندا ، 6 خىل كونترول بايت بار. ئالدىنقى ئۈچى EZSP سانلىق مەلۇماتلىرى بىلەن ئورتاق رامكىلارغا ئىشلىتىلىدۇ ، مەسىلەن DATA ، ACK ۋە NAK. ئاخىرقى ئۈچى 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. Byte Stuffing

UG101 نىڭ 4.2 بۆلىكىدە تەسۋىرلەنگەندەك ، ئالاھىدە مەقسەتتە ئىشلىتىلىدىغان بىر قىسىم زاپاس بايت قىممىتى بار. بۇ قىممەتلەرنى تۆۋەندىكى جەدۋەلدىن تاپقىلى بولىدۇ:

7

بۇ قىممەتلەر رامكىدا كۆرۈنگەندە ، سانلىق مەلۇماتلارغا ئالاھىدە مۇئامىلە قىلىنىدۇ. - ساقلانغان بايتنىڭ ئالدىدا قېچىش بايت 0x7D نى قىستۇرۇڭ - بۇ ساقلانغان بايتنىڭ bit5 نى قايتۇرۇڭ

تۆۋەندە بۇ ئالگورىزىمنىڭ بەزى مىساللىرى:

8

2.6. ئاخىرلىشىش بايرىقىنى قوشۇڭ

ئاخىرقى باسقۇچ رامكىنىڭ ئاخىرىغا ئاخىرقى بايراق 0x7E نى قوشۇش. ئۇنىڭدىن كېيىن ، سانلىق مەلۇماتلارنى UART ئېغىزىغا ئەۋەتكىلى بولىدۇ.

3. لايىھە تۈزۈش جەريانى

UART دىن سانلىق مەلۇمات تاپشۇرۇۋالغاندا ، بىز ئۇنى يېشىش ئۈچۈن تەتۈر قەدەم بېسىشىمىز كېرەك.

4. پايدىلانمىلار


يوللانغان ۋاقتى: 2-ئاينىڭ 08-كۈنىدىن 20-كۈنىگىچە
WhatsApp توردا پاراڭ!