Հեղինակ, Torchiotbootcamp
Հղում, https: //zhuanlan.zhihu.com/p/339700391
Քուորա
1. Ներածություն
Silicon Labs- ը առաջարկել է հյուրընկալող + NCP լուծում ZigBee Gateway Design- ի համար: Այս ճարտարապետության մեջ հյուրընկալողը կարող է հաղորդակցվել NCP- ի հետ UART- ի կամ SPI ինտերֆեյսի միջոցով: Առավել հաճախ, UART- ն օգտագործվում է, քանի որ այն շատ ավելի պարզ է, քան SPI- ն:
Սիլիկոնային լաբորատորիաներն ապահովել են նաեւ հյուրընկալող ծրագրի նմուշը, որը նմուշն էZ3gatewayhost
Մի շարք Նմուշը վազում է Unix- ի նման համակարգի վրա: Որոշ հաճախորդներ կարող են ցանկանալ հյուրընկալող նմուշ, որը կարող է վազել RTO- ների վրա, բայց, ցավոք, առայժմ չկա RTOS հիմնված հյուրընկալող նմուշ: Օգտագործողները պետք է զարգացնեն իրենց սեփական հյուրընկալող ծրագիրը `հիմնված RTO- ի վրա:
Կարեւոր է հասկանալ UART Gateway արձանագրությունը `նախքան հարմարեցված հյուրընկալող ծրագիր մշակելը: Թե UART- ի NCP- ի եւ SPI- ի վրա հիմնված NCP- ի համար հյուրընկալողը օգտագործում է EZSP արձանագրություն, NCP- ի հետ շփվելու համար:EZSPԿարճ էEMBERZNET սերիական արձանագրություն, եւ այն սահմանվում էUG100Մի շարք UART- ի վրա հիմնված NCP- ի համար ավելի ցածր շերտի արձանագրություն է իրականացվում EZSP- ի տվյալները, որոնք հուսալիորեն են UART- ի նկատմամբ, դա էՄոխիրԱրձանագրություն, կարճԱսինխրոն սերիական հաղորդավարՄի շարք Մոխրի մասին լրացուցիչ մանրամասների համար դիմեքUG101մի քանազորUG115.
EZSP- ի եւ Ash- ի միջեւ կապը կարող է նկարազարդվել հետեւյալ դիագրամով.
EZSP- ի եւ մոխրի արձանագրության տվյալների ձեւաչափը կարող է նկարազարդվել հետեւյալ դիագրամով.
Այս էջում մենք կներկայացնենք UART- ի տվյալները եւ որոշ հիմնական շրջանակներ կազմելու գործընթացը, որոնք հաճախ օգտագործվում են Զիգբե դարպասում:
2-ը: Շրջանակ
Ընդհանուր շրջանակի գործընթացը կարող է նկարազարդվել հետեւյալ աղյուսակով.
Այս աղյուսակում տվյալները նշանակում են EZSP շրջանակ: Ընդհանուր առմամբ, շրջանակի գործընթացներն են. | Ոչ | Քայլ | Տեղեկանք |
|: - |: - |
| 1 | լրացրեք EZSP շրջանակը | UG100 |
| 2 | տվյալների պատահականացում | UG101 բաժինը 4.3 |
| 3 | Ավելացնել հսկիչ բայթ | Lap2 եւ Chap3 - ի UG101 |
| 4 | Հաշվարկեք CRC | Բաժին 2.3-ը UG101 |
| 5 | բայթ լցոնումը | UG101 բաժինը 4.2 |
| 6 | Ավելացնել վերջի դրոշ | Բաժին 2.4-ը UG101 |
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 բաժնում: EZSP- ի ամբողջ շրջանակը պատահականորեն կլինի: Պատահականությունը բացառիկ կամ EZSP շրջանակի եւ կեղծ պատահական հաջորդականության է:
Ստորեւ բերված է կեղծ պատահական հաջորդականությունը ստեղծելու ալգորիթմը:
- rand0 = 0 × 42
- Եթե Randi- ի բիտը 0 է, Randi + 1 = Randi >> 1
- Եթե Randi- ի բիտը 1 է, Randi + 1 = (Randi >> 1) ^ 0XB8
2.3. Ավելացնել կառավարման բայթ
Վերահսկիչ բայթը մեկ բայթային տվյալ է, եւ պետք է ավելացվի շրջանակի գլխին: Ձեւաչափը պատկերված է ստորեւ բերված աղյուսակից.
Ընդհանուր առմամբ, կա 6 տեսակի վերահսկիչ բայթ: Առաջին երեքն օգտագործվում են EZSP տվյալների, ներառյալ տվյալների, ACK- ի եւ NAK- ի ընդհանուր շրջանակների համար: Վերջին երեքը օգտագործվում են առանց EZSP- ի ընդհանուր տվյալների, ներառյալ RST, RSTACK- ը եւ սխալը:
RST, RSTack- ի եւ սխալի ձեւաչափը նկարագրված է 3.1-ից 3.3 բաժնում:
2.4. Հաշվարկել CRC- ն
16-բիթանոց CRC- ն հաշվարկվում է բայթերի վրա հսկիչ բայթից մինչեւ տվյալների ավարտը: Ստանդարտ Crcccitt (G (x) = x16 + x12 + x5 + 1) նախաստորագրվում է 0xffff: Ամենակարեւոր բայթը նախորդում է նվազագույն նշանակալի բայթը (մեծ-էնդիան ռեժիմ):
2.5. Բայթ լցոնում
Ինչպես նկարագրված է UG101- ի 4.2-րդ բաժնում, կան որոշ վերապահված բայթ արժեքներ, որոնք օգտագործվում են հատուկ նպատակով: Այս արժեքները կարելի է գտնել հետեւյալ աղյուսակում.
Երբ այդ արժեքները հայտնվում են շրջանակում, տվյալները պետք է կատարվեն հատուկ բուժում: - Տեղադրեք Escape Byte 0x7D- ը վերապահված բայթի դիմաց. Հակադարձեք այդ վերապահված բայթի բիտը
Ստորեւ ներկայացված են այս ալգորիթմի որոշ օրինակներ.
2.6. Ավելացնել վերջի դրոշը
Վերջնական քայլը վերջի վերջը 0x7e ավելացնելն է `շրջանակի ավարտին: Դրանից հետո տվյալները կարող են ուղարկվել UART նավահանգիստ:
3. Դեպի ձեւակերպում
Երբ տվյալները ստացվում են UART- ից, մենք պարզապես պետք է կատարենք հակառակ քայլերը `այն վերծանելու համար:
4. Հղումներ
Փոստի ժամանակ, FEB-08-2022