කර්තෘ: TorchIoTBootCamp
සබැඳිය: https://zhuanlan.zhihu.com/p/339700391
වෙතින්: Quora
1. හැඳින්වීම
Silicon Labs විසින් Zigbee ගේට්වේ නිර්මාණය සඳහා සත්කාරක+NCP විසඳුමක් ඉදිරිපත් කර ඇත. මෙම ගෘහ නිර්මාණ ශිල්පය තුළ, ධාරකයට UART හෝ SPI අතුරුමුහුණත හරහා NCP සමඟ සන්නිවේදනය කළ හැකිය. බොහෝ විට, UART SPI වලට වඩා සරල බැවින් භාවිතා වේ.
Silicon Labs සත්කාරක වැඩසටහන සඳහා නියැදි ව්යාපෘතියක් ද සපයා ඇත, එය නියැදිය වේZ3GatewayHost
. නියැදිය Unix වැනි පද්ධතියක් මත ධාවනය වේ. සමහර පාරිභෝගිකයින්ට RTOS මත ධාවනය කළ හැකි සත්කාරක නියැදියක් අවශ්ය විය හැක, නමුත් අවාසනාවකට, දැනට RTOS මත පදනම් වූ සත්කාරක නියැදියක් නොමැත. පරිශීලකයන් RTOS මත පදනම්ව ඔවුන්ගේම සත්කාරක වැඩසටහනක් සංවර්ධනය කළ යුතුය.
අභිරුචි කළ සත්කාරක වැඩසටහනක් සංවර්ධනය කිරීමට පෙර UART ද්වාර ප්රොටෝකෝලය අවබෝධ කර ගැනීම වැදගත් වේ. UART පදනම් වූ NCP සහ SPI පදනම් වූ NCP යන දෙකම සඳහා, සත්කාරක සමාගම NCP සමඟ සන්නිවේදනය කිරීමට EZSP ප්රොටෝකෝලය භාවිතා කරයි.EZSPසඳහා කෙටි වේEmberZnet අනුක්රමික ප්රොටෝකෝලය, සහ එය අර්ථ දක්වා ඇතUG100. UART මත පදනම් වූ NCP සඳහා, UART හරහා EZSP දත්ත විශ්වාසදායක ලෙස ගෙනයාම සඳහා පහළ ස්ථර ප්රොටෝකෝලයක් ක්රියාත්මක වේ, එයASHප්රොටෝකෝලය, කෙටිඅසමමුහුර්ත අනුක්රමික සත්කාරක. ASH පිළිබඳ වැඩි විස්තර සඳහා කරුණාකර බලන්නUG101සහUG115.
EZSP සහ ASH අතර සම්බන්ධය පහත රූප සටහන මගින් නිරූපණය කළ හැක:
EZSP සහ ASH ප්රොටෝකෝලයේ දත්ත ආකෘතිය පහත රූප සටහන මගින් නිරූපණය කළ හැක:
මෙම පිටුවෙහි, අපි UART දත්ත රාමු කිරීමේ ක්රියාවලිය සහ Zigbee ගේට්වේ හි නිතර භාවිතා වන සමහර ප්රධාන රාමු හඳුන්වා දෙන්නෙමු.
2. රාමු කිරීම
සාමාන්ය රාමු සැකසීමේ ක්රියාවලිය පහත ප්රස්ථාරයෙන් නිරූපණය කළ හැක:
මෙම ප්රස්ථාරයේ, දත්ත යනු EZSP රාමුවයි. සාමාන්යයෙන්, රාමු කිරීමේ ක්රියාවලි වනුයේ: |No|පියවර|යොමු|
|:-|:-|:-|
|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 වන පරිච්ඡේදයේ නිදර්ශනය කර ඇත.
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
- Randi හි bit 0 0 නම්, randi+1 = Randi >> 1
- Randi හි බිටු 0 1 නම්, randi+1 = (randi >> 1) ^ 0xB8
2.3 පාලන බයිට් එක එකතු කරන්න
පාලක බයිටය එක් බයිට දත්තයක් වන අතර, රාමුවේ හිසට එකතු කළ යුතුය. ආකෘතිය පහත වගුවේ දක්වා ඇත:
සම්පුර්ණයෙන්ම, පාලන බයිට් වර්ග 6ක් ඇත. පළමු තුන DATA, ACK සහ NAK ඇතුළුව EZSP දත්ත සහිත පොදු රාමු සඳහා භාවිතා වේ. අවසාන තුන RST, RSTACK සහ ERROR ඇතුළුව පොදු EZSP දත්ත නොමැතිව භාවිතා වේ.
RST, RSTACK සහ ERROR වල ආකෘතිය 3.1 සිට 3.3 දක්වා කොටසේ විස්තර කර ඇත.
2.4 CRC ගණනය කරන්න
16-bit CRC පාලක බයිටයේ සිට දත්ත අවසන් වන තෙක් බයිට් මත ගණනය කෙරේ. සම්මත CRCCCITT (g(x) = x16 + x12 + x5 + 1) 0xFFFF වෙත ආරම්භ වේ. වඩාත්ම සැලකිය යුතු බයිටය අවම සැලකිය යුතු බයිටයට පෙර (විශාල-එන්ඩියන් මාදිලිය).
2.5 බයිට් පිරවීම
UG101 හි 4.2 වගන්තියේ විස්තර කර ඇති පරිදි, විශේෂ කාර්යය සඳහා භාවිතා කරන ලද සමහරක් වෙන් කර ඇති බයිට් අගයන් ඇත. මෙම අගයන් පහත වගුවේ සොයාගත හැකිය:
මෙම අගයන් රාමුව තුළ දිස්වන විට, දත්ත සඳහා විශේෂ සැලකිල්ලක් සිදු කරනු ලැබේ. - වෙන් කර ඇති බයිටය ඉදිරිපිට 0x7D පලා යාමේ බයිටය ඇතුළු කරන්න - එම වෙන් කළ බයිටයේ bit5 ආපසු හරවන්න
මෙම ඇල්ගොරිතමයේ උදාහරණ කිහිපයක් පහත දැක්වේ:
2.6 අවසන් කොඩිය එකතු කරන්න
අවසාන පියවර වන්නේ රාමුවේ අවසානයට 0x7E අවසන් ධජය එකතු කිරීමයි. ඊට පසු, දත්ත UART වරායට යැවිය හැක.
3. රාමු ඉවත් කිරීමේ ක්රියාවලිය
UART වෙතින් දත්ත ලැබුණු විට, අපි එය විකේතනය කිරීමට ප්රතිලෝම පියවර පමණක් කළ යුතුයි.
4. යොමු කිරීම්
පසු කාලය: පෙබරවාරි-08-2022