జిగ్బీ ఎజ్స్ప్ ఉర్ట్ గురించి

రచయిత : టార్చియోట్బూట్‌క్యాంప్
లింక్ : https: //zhuanlan.zhihu.com/p/339700391
Bo quora నుండి

1. పరిచయం

సిలికాన్ ల్యాబ్స్ జిగ్బీ గేట్‌వే డిజైన్ కోసం హోస్ట్+ఎన్‌సిపి పరిష్కారాన్ని అందించింది. ఈ నిర్మాణంలో, హోస్ట్ UART లేదా SPI ఇంటర్ఫేస్ ద్వారా NCP తో కమ్యూనికేట్ చేయవచ్చు. సాధారణంగా, UART SPI కన్నా చాలా సరళమైనది కాబట్టి ఉపయోగించబడుతుంది.

సిలికాన్ ల్యాబ్స్ హోస్ట్ ప్రోగ్రామ్ కోసం ఒక నమూనా ప్రాజెక్టును కూడా అందించింది, ఇది నమూనాZ3gatewayhost. నమూనా యునిక్స్ లాంటి వ్యవస్థలో నడుస్తుంది. కొంతమంది కస్టమర్లు RTOS లో అమలు చేయగల హోస్ట్ నమూనాను కోరుకుంటారు, కానీ దురదృష్టవశాత్తు, ప్రస్తుతానికి RTOS ఆధారిత హోస్ట్ నమూనా లేదు. వినియోగదారులు RTOS ఆధారంగా వారి స్వంత హోస్ట్ ప్రోగ్రామ్‌ను అభివృద్ధి చేయాలి.

అనుకూలీకరించిన హోస్ట్ ప్రోగ్రామ్‌ను అభివృద్ధి చేయడానికి ముందు UART గేట్‌వే ప్రోటోకాల్‌ను అర్థం చేసుకోవడం చాలా ముఖ్యం. UART ఆధారిత NCP మరియు SPI ఆధారిత NCP రెండింటికీ, హోస్ట్ NCP తో కమ్యూనికేట్ చేయడానికి EZSP ప్రోటోకాల్‌ను ఉపయోగిస్తుంది.Ezspచిన్నదిఎంబెర్జ్‌నెట్ సీరియల్ ప్రోటోకాల్, మరియు ఇది నిర్వచించబడిందిUG100. UART ఆధారిత NCP కోసం, EZSP డేటాను UART పై విశ్వసనీయంగా తీసుకెళ్లడానికి తక్కువ పొర ప్రోటోకాల్ అమలు చేయబడుతుంది, అదియాష్ప్రోటోకాల్, చిన్నదిఅసమకాలిక సీరియల్ హోస్ట్. బూడిద గురించి మరిన్ని వివరాల కోసం, దయచేసి చూడండిUG101మరియుUG115.

EZSP మరియు బూడిద మధ్య సంబంధాన్ని క్రింది రేఖాచిత్రం ద్వారా వివరించవచ్చు:

1

EZSP మరియు ASH ప్రోటోకాల్ యొక్క డేటా ఫార్మాట్ క్రింది రేఖాచిత్రం ద్వారా వివరించవచ్చు:

2

ఈ పేజీలో, మేము UART డేటాను రూపొందించే ప్రక్రియను మరియు జిగ్బీ గేట్‌వేలో తరచుగా ఉపయోగించే కొన్ని కీ ఫ్రేమ్‌లను పరిచయం చేస్తాము.

2. ఫ్రేమింగ్

సాధారణ ఫ్రేమరింగ్ ప్రక్రియను క్రింది చార్ట్ ద్వారా వివరించవచ్చు:

3

ఈ చార్టులో, డేటా అంటే EZSP ఫ్రేమ్. సాధారణంగా, ఫ్రేమింగ్ ప్రక్రియలు: | లేదు | దశ | సూచన |

|:-|:-|:-|

| 1 | EZSP ఫ్రేమ్ నింపండి | ug100 |

| 2 | డేటా రాండమైజేషన్ | UG101 యొక్క విభాగం 4.3 |

| 3 | UG101 | యొక్క నియంత్రణ బైట్ | Chap2 మరియు Chap3 ను జోడించండి

| 4 | UG101 | యొక్క CRC | సెక్షన్ 2.3 ను లెక్కించండి

| 5 | బైట్ స్టఫింగ్ | UG101 యొక్క సెక్షన్ 4.2 |

| 6 | UG101 | యొక్క ముగింపు జెండాను జోడించండి | సెక్షన్ 2.4 |

2.1. EZSP ఫ్రేమ్ నింపండి

EZSP ఫ్రేమ్ ఫార్మాట్ UG100 యొక్క CHAP 3 లో వివరించబడింది.

4

SDK అప్‌గ్రేడ్ చేసినప్పుడు ఈ ఫార్మాట్ మారవచ్చని శ్రద్ధ వహించండి. ఫార్మాట్ మారినప్పుడు, మేము దీనికి క్రొత్త సంస్కరణ సంఖ్యను ఇస్తాము. ఈ వ్యాసం రాసినప్పుడు తాజా EZSP వెర్షన్ సంఖ్య 8 (ఎంబెర్జ్‌నెట్ 6.8).

EZSP ఫ్రేమ్ ఫార్మాట్ వేర్వేరు సంస్కరణల మధ్య భిన్నంగా ఉండవచ్చు కాబట్టి, హోస్ట్ మరియు NCP కి తప్పనిసరి అవసరం ఉందితప్పకఅదే EZSP సంస్కరణతో పని చేయండి. లేకపోతే, వారు .హించిన విధంగా కమ్యూనికేట్ చేయలేరు.

దాన్ని సాధించడానికి, హోస్ట్ మరియు ఎన్‌సిపి మధ్య మొదటి ఆదేశం తప్పనిసరిగా వెర్షన్ కమాండ్ అయి ఉండాలి. మరో మాటలో చెప్పాలంటే, హోస్ట్ ఏదైనా ఇతర కమ్యూనికేషన్ ముందు NCP యొక్క EZSP సంస్కరణను తిరిగి పొందాలి. EZSP వెర్షన్ హోస్ట్ వైపు EZSP సంస్కరణతో భిన్నంగా ఉంటే, కమ్యూనికేషన్ తప్పనిసరిగా రద్దు చేయబడాలి.

దీని వెనుక ఉన్న అవ్యక్త అవసరం ఏమిటంటే వెర్షన్ కమాండ్ యొక్క ఫార్మాట్ చేయవచ్చుఎప్పుడూ మారకండి. EZSP వెర్షన్ కమాండ్ ఫార్మాట్ క్రింద ఉంది:

5

పారామితి ఫీల్డ్ యొక్క వివరణలు మరియు సంస్కరణ ప్రతిస్పందన యొక్క ఆకృతిని UG100 లోని చాప్ 4 లో చూడవచ్చు. పారామితి ఫీల్డ్ హోస్ట్ ప్రోగ్రామ్ యొక్క EZSP వెర్షన్. ఈ వ్యాసం వ్రాసినప్పుడు, అది 8.
7
Tor tortorchiotbootcamp
链接 : 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

పూర్తిగా, 6 రకాల నియంత్రణ బైట్లు ఉన్నాయి. మొదటి మూడు డేటా, ACK మరియు NAK తో సహా EZSP డేటాతో సాధారణ ఫ్రేమ్‌ల కోసం ఉపయోగించబడతాయి. చివరి మూడు సాధారణ 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 లో వివరించినట్లుగా, ప్రత్యేక ప్రయోజనం కోసం ఉపయోగించే కొన్ని రిజర్వు చేసిన బైట్ విలువలు ఉన్నాయి. ఈ విలువలను క్రింది పట్టికలో చూడవచ్చు:

7

ఈ విలువలు ఫ్రేమ్‌లో కనిపించినప్పుడు, డేటాకు ప్రత్యేక చికిత్స చేయబడుతుంది. - రిజర్వు చేసిన బైట్ ముందు ఎస్కేప్ బైట్ 0x7D ని చొప్పించండి - ఆ రిజర్వు చేసిన బైట్ యొక్క బిట్ 5 ను రివర్స్ చేయండి

ఈ అల్గోరిథం యొక్క కొన్ని ఉదాహరణలు క్రింద ఉన్నాయి:

8

2.6. ముగింపు జెండాను జోడించండి

చివరి దశ ఫ్రేమ్ చివరిలో ఎండ్ ఫ్లాగ్ 0x7e ను జోడించడం. ఆ తరువాత, డేటాను UART పోర్టుకు పంపవచ్చు.

3. డి-ఫ్రేమింగ్ ప్రక్రియ

UART నుండి డేటా అందుకున్నప్పుడు, దాన్ని డీకోడ్ చేయడానికి మేము రివర్స్ స్టెప్స్ చేయాలి.

4. సూచనలు


పోస్ట్ సమయం: ఫిబ్రవరి -08-2022
వాట్సాప్ ఆన్‌లైన్ చాట్!