කර්තෘ: TorchIoTBootCamp
සබැඳිය: https://zhuanlan.zhihu.com/p/339700391
සිට: Quora
1. හැඳින්වීම
සිලිකන් ලැබ්ස් විසින් සිග්බී ද්වාර නිර්මාණය සඳහා සත්කාරක+NCP විසඳුමක් ඉදිරිපත් කර ඇත. මෙම ගෘහ නිර්මාණ ශිල්පය තුළ, සත්කාරකයට UART හෝ SPI අතුරුමුහුණත හරහා NCP සමඟ සන්නිවේදනය කළ හැකිය. බොහෝ විට, UART භාවිතා කරනුයේ එය SPI වලට වඩා බෙහෙවින් සරල බැවිනි.
සිලිකන් ලැබ්ස් විසින් සත්කාරක වැඩසටහන සඳහා නියැදි ව්යාපෘතියක් ද සපයා ඇති අතර එය නියැදියයිZ3GatewayHost විසින් තවත්
. නියැදිය Unix-සමාන පද්ධතියක් මත ධාවනය වේ. සමහර ගනුදෙනුකරුවන්ට RTOS මත ධාවනය කළ හැකි සත්කාරක සාම්පලයක් අවශ්ය විය හැකි නමුත්, අවාසනාවකට මෙන්, දැනට RTOS මත පදනම් වූ සත්කාරක සාම්පලයක් නොමැත. පරිශීලකයින්ට RTOS මත පදනම්ව තමන්ගේම සත්කාරක වැඩසටහනක් සංවර්ධනය කිරීමට අවශ්ය වේ.
අභිරුචිකරණය කළ සත්කාරක වැඩසටහනක් සංවර්ධනය කිරීමට පෙර UART ද්වාර ප්රොටෝකෝලය තේරුම් ගැනීම වැදගත් වේ. UART පාදක NCP සහ SPI පාදක NCP යන දෙකටම, සත්කාරක සමාගම NCP සමඟ සන්නිවේදනය කිරීමට EZSP ප්රොටෝකෝලය භාවිතා කරයි.EZSPකෙටියෙන් කියන්නේඑම්බර්සෙට් අනුක්රමික ප්රොටෝකෝලය, සහ එය අර්ථ දක්වා ඇතයූජී 100UART මත පදනම් වූ NCP සඳහා, UART හරහා EZSP දත්ත විශ්වාසදායක ලෙස රැගෙන යාම සඳහා පහළ ස්ථර ප්රොටෝකෝලයක් ක්රියාත්මක කර ඇත, එනම්අළුකෙටියෙන් කිවහොත්, ප්රොටෝකෝලයඅසමමුහුර්ත අනුක්රමික සත්කාරකය. ASH පිළිබඳ වැඩි විස්තර සඳහා, කරුණාකර යොමු වන්නයූජී 101සහයූජී 115.
EZSP සහ ASH අතර සම්බන්ධතාවය පහත රූප සටහන මගින් නිරූපණය කළ හැකිය:
EZSP සහ ASH ප්රොටෝකෝලයේ දත්ත ආකෘතිය පහත රූප සටහන මගින් නිරූපණය කළ හැක:
මෙම පිටුවේදී, අපි UART දත්ත රාමු කිරීමේ ක්රියාවලිය සහ සිග්බී ද්වාරයේ නිතර භාවිතා වන සමහර ප්රධාන රාමු හඳුන්වා දෙන්නෙමු.
2. රාමු කිරීම
සාමාන්ය රාමු කිරීමේ ක්රියාවලිය පහත ප්රස්ථාරයෙන් නිරූපණය කළ හැකිය:
මෙම ප්රස්ථාරයේ, දත්ත යනු EZSP රාමුවයි. සාමාන්යයෙන්, රාමු කිරීමේ ක්රියාවලීන් වන්නේ: |No|Step|Reference|
|:-|:-|:-|
|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 රාමුව සහ ව්යාජ-අහඹු අනුපිළිවෙලක් සුවිශේෂී-OR කිරීමට ය.
පහත දැක්වෙන්නේ ව්යාජ-අහඹු අනුපිළිවෙල ජනනය කිරීමේ ඇල්ගොරිතමයයි.
- රැන්ඩ්0 = 0×42
- randi හි bit 0 0 නම්, randi+1 = randi >> 1
- රන්ඩි හි බිට් 0 1 නම්, රන්ඩි+1 = (රන්ඩි >> 1) ^ 0xB8
2.3. පාලන බයිටය එක් කරන්න
පාලන බයිටය එක් බයිට දත්තයක් වන අතර එය රාමුවේ ශීර්ෂයට එකතු කළ යුතුය. ආකෘතිය පහත වගුවෙන් නිරූපණය කෙරේ:
සමස්තයක් වශයෙන්, පාලන බයිට් වර්ග 6 ක් ඇත. පළමු තුන EZSP දත්ත සහිත පොදු රාමු සඳහා භාවිතා වේ, ඒවාට DATA, ACK සහ NAK ඇතුළත් වේ. අවසාන තුන 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 port වෙත යැවිය හැක.
3. රාමු ඉවත් කිරීමේ ක්රියාවලිය
UART වෙතින් දත්ත ලැබුණු විට, එය විකේතනය කිරීම සඳහා අපට ප්රතිලෝම පියවරයන් පමණක් කළ යුතුය.
4. යොමු කිරීම්
පළ කිරීමේ කාලය: පෙබරවාරි-08-2022