Zigbee EZSP UART ବିଷୟରେ |

ଲେଖକ : TorchIoTBootCamp |
ଲିଙ୍କ୍ : https: //zhuanlan.zhihu.com/p/339700391
: କୋରା ଠାରୁ

1। ପରିଚୟ

ସିଲିକନ୍ ଲ୍ୟାବ୍ସ ଜିଗବି ଗେଟୱେ ଡିଜାଇନ୍ ପାଇଁ ଏକ ହୋଷ୍ଟ + ଏନସିପି ସମାଧାନ ପ୍ରଦାନ କରିଛି |ଏହି ସ୍ଥାପତ୍ୟରେ, ହୋଷ୍ଟ UART କିମ୍ବା SPI ଇଣ୍ଟରଫେସ୍ ମାଧ୍ୟମରେ NCP ସହିତ ଯୋଗାଯୋଗ କରିପାରିବ |ସାଧାରଣତ ,, UART ବ୍ୟବହୃତ ହୁଏ କାରଣ ଏହା SPI ଠାରୁ ବହୁତ ସରଳ |

ସିଲିକନ୍ ଲ୍ୟାବଗୁଡିକ ହୋଷ୍ଟ ପ୍ରୋଗ୍ରାମ୍ ପାଇଁ ଏକ ନମୁନା ପ୍ରୋଜେକ୍ଟ ମଧ୍ୟ ପ୍ରଦାନ କରିଛି, ଯାହା ହେଉଛି ନମୁନା |Z3 ଗେଟୱେ ହୋଷ୍ଟ |।ନମୁନା ଏକ ୟୁନିକ୍ସ ପରି ସିଷ୍ଟମରେ ଚାଲିଥାଏ |କିଛି ଗ୍ରାହକ ହୁଏତ ଏକ ହୋଷ୍ଟ ନମୁନା ଚାହାଁନ୍ତି ଯାହା ଏକ RTOS ରେ ଚାଲିପାରେ, କିନ୍ତୁ ଦୁର୍ଭାଗ୍ୟବଶତ ,, ବର୍ତ୍ତମାନ ପର୍ଯ୍ୟନ୍ତ କ RT ଣସି RTOS ଆଧାରିତ ହୋଷ୍ଟ ନମୁନା ନାହିଁ |ଉପଭୋକ୍ତାମାନେ RTOS ଉପରେ ଆଧାର କରି ସେମାନଙ୍କର ନିଜସ୍ୱ ହୋଷ୍ଟ ପ୍ରୋଗ୍ରାମ୍ ବିକାଶ କରିବା ଆବଶ୍ୟକ କରନ୍ତି |

ଏକ କଷ୍ଟୋମାଇଜଡ୍ ହୋଷ୍ଟ ପ୍ରୋଗ୍ରାମ୍ ବିକାଶ କରିବା ପୂର୍ବରୁ UART ଗେଟୱେ ପ୍ରୋଟୋକଲ୍ ବୁ to ିବା ଜରୁରୀ |ଉଭୟ UART ଆଧାରିତ NCP ଏବଂ SPI ଆଧାରିତ NCP ପାଇଁ, ହୋଷ୍ଟ NCP ସହିତ ଯୋଗାଯୋଗ କରିବାକୁ EZSP ପ୍ରୋଟୋକଲ୍ ବ୍ୟବହାର କରେ |EZSPପାଇଁ କ୍ଷୁଦ୍ର ଅଟେ |EmberZnet କ୍ରମିକ ପ୍ରୋଟୋକଲ୍ |, ଏବଂ ଏହା ବ୍ୟାଖ୍ୟା କରାଯାଇଛି |UG100।UART ଆଧାରିତ NCP ପାଇଁ, ଏକ ନିମ୍ନ ସ୍ତର ପ୍ରୋଟୋକଲ୍ UART ଉପରେ EZSP ତଥ୍ୟକୁ ନିର୍ଭରଯୋଗ୍ୟ ଭାବରେ ବହନ କରିବାକୁ କାର୍ଯ୍ୟକାରୀ ହୋଇଥାଏ, ତାହା ହେଉଛି |ASHପ୍ରୋଟୋକଲ୍, ପାଇଁ ଛୋଟ |ଅସନ୍ତୁଳିତ କ୍ରମିକ ହୋଷ୍ଟ |।ASH ବିଷୟରେ ଅଧିକ ବିବରଣୀ ପାଇଁ, ଦୟାକରି ଅନୁସରଣ କରନ୍ତୁ |UG101ଏବଂUG115.

EZSP ଏବଂ ASH ମଧ୍ୟରେ ଥିବା ସମ୍ପର୍କକୁ ନିମ୍ନଲିଖିତ ଚିତ୍ର ଦ୍ୱାରା ଦର୍ଶାଯାଇପାରିବ:

୧

EZSP ଏବଂ ASH ପ୍ରୋଟୋକଲର ଡାଟା ଫର୍ମାଟ୍ ନିମ୍ନ ଚିତ୍ର ଦ୍ୱାରା ବର୍ଣ୍ଣନା କରାଯାଇପାରେ:

୨

ଏହି ପୃଷ୍ଠାରେ, ଆମେ UART ଡାଟା ଏବଂ କିଛି କି ଫ୍ରେମ୍ ଫ୍ରେମ୍ କରିବାର ପ୍ରକ୍ରିୟା ଉପସ୍ଥାପନ କରିବୁ ଯାହା ଜିଗବି ଗେଟୱେରେ ବାରମ୍ବାର ବ୍ୟବହୃତ ହୁଏ |

2. ଫ୍ରେମ୍ କରିବା

ସାଧାରଣ ଫ୍ରେମିଙ୍ଗ ପ୍ରକ୍ରିୟାକୁ ନିମ୍ନ ଚାର୍ଟ ଦ୍ୱାରା ବର୍ଣ୍ଣନା କରାଯାଇପାରେ:

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 ଫ୍ରେମ୍ ପୁରଣ କରନ୍ତୁ |

EGSP ଫ୍ରେମ୍ ଫର୍ମାଟ୍ UG100 ର ଅଧ୍ୟାୟ 3 ରେ ବର୍ଣ୍ଣିତ |

4

ଧ୍ୟାନ ଦିଅନ୍ତୁ ଯେ SDK ଅପଗ୍ରେଡ୍ ହେଲେ ଏହି ଫର୍ମାଟ୍ ବଦଳିପାରେ |ଯେତେବେଳେ ଫର୍ମାଟ୍ ବଦଳିବ, ଆମେ ଏହାକୁ ଏକ ନୂଆ ସଂସ୍କରଣ ନମ୍ବର ଦେବୁ |ସର୍ବଶେଷ EZSP ସଂସ୍କରଣ ସଂଖ୍ୟା ହେଉଛି ଯେତେବେଳେ ଏହି ଲେଖା ଲେଖାଯାଏ (EmberZnet 6.8) |

ଯେହେତୁ EZSP ଫ୍ରେମ୍ ଫର୍ମାଟ୍ ବିଭିନ୍ନ ସଂସ୍କରଣ ମଧ୍ୟରେ ଭିନ୍ନ ହୋଇପାରେ, ସେଠାରେ ଏକ ବାଧ୍ୟତାମୂଳକ ଆବଶ୍ୟକତା ଅଛି ଯେ ହୋଷ୍ଟ ଏବଂ NCP |ନିଶ୍ଚୟ |ସମାନ EZSP ସଂସ୍କରଣ ସହିତ କାମ କରନ୍ତୁ |ଅନ୍ୟଥା, ସେମାନେ ଆଶା କରିଥିବା ପରି ଯୋଗାଯୋଗ କରିପାରିବେ ନାହିଁ |

ତାହା ହାସଲ କରିବା ପାଇଁ, ହୋଷ୍ଟ ଏବଂ NCP ମଧ୍ୟରେ ପ୍ରଥମ ନିର୍ଦ୍ଦେଶ ନିଶ୍ଚିତ ଭାବରେ ସଂସ୍କରଣ ନିର୍ଦ୍ଦେଶ ଅଟେ |ଅନ୍ୟ ଅର୍ଥରେ, ହୋଷ୍ଟ ଅନ୍ୟ କ communication ଣସି ଯୋଗାଯୋଗ ପୂର୍ବରୁ NCP ର EZSP ସଂସ୍କରଣକୁ ପୁନ r ଉଦ୍ଧାର କରିବା ଆବଶ୍ୟକ |ଯଦି ହୋଷ୍ଟ ପାର୍ଶ୍ E ର EZSP ସଂସ୍କରଣ ସହିତ EZSP ସଂସ୍କରଣ ଭିନ୍ନ, ତେବେ ଯୋଗାଯୋଗକୁ ପରିତ୍ୟାଗ କରିବାକୁ ହେବ |

ଏହା ପଛରେ ଥିବା ଅନ୍ତର୍ନିହିତ ଆବଶ୍ୟକତା ହେଉଛି ସଂସ୍କରଣ କମାଣ୍ଡର ଫର୍ମାଟ୍ କରିପାରିବ |କଦାପି ପରିବର୍ତ୍ତନ କରନ୍ତୁ ନାହିଁ |।EZSP ସଂସ୍କରଣ ନିର୍ଦ୍ଦେଶ ଫର୍ମାଟ୍ ନିମ୍ନରେ ଅଛି:

5

ପାରାମିଟର ଫିଲ୍ଡର ବ୍ୟାଖ୍ୟା ଏବଂ ସଂସ୍କରଣ ପ୍ରତିକ୍ରିୟାର ଫର୍ମାଟ୍ UG100 ର ଅଧ୍ୟାୟ 4 ରେ ମିଳିପାରିବ |ପାରାମିଟର ଫିଲ୍ଡ ହେଉଛି ହୋଷ୍ଟ ପ୍ରୋଗ୍ରାମର EZSP ସଂସ୍କରଣ |ଯେତେବେଳେ ଏହି ଲେଖା ଲେଖାଯାଏ, ଏହା 8 ଅଟେ |
7
作者 : TorchIoTBootCamp |
链接 : https: //zhuanlan.zhihu.com/p/339700391
来源 : 知 乎
著作权 归 作者 所有。。。。。。

2.2।ଡାଟା ରାଣ୍ଡୋମାଇଜେସନ୍ |

UG101 ର ବିଭାଗ 4.3 ରେ ବିସ୍ତୃତ ରାଣ୍ଡୋମାଇଜେସନ୍ ପ୍ରକ୍ରିୟା ବର୍ଣ୍ଣନା କରାଯାଇଛି |ସମଗ୍ର EZSP ଫ୍ରେମ୍ ରାଣ୍ଡମାଇଜ୍ ହେବ |ରାଣ୍ଡୋମାଇଜେସନ୍ ହେଉଛି ଏକ୍ସକ୍ଲୁସିଭ୍- କିମ୍ବା EZSP ଫ୍ରେମ୍ ଏବଂ ଏକ ଛଦ୍ମ-ରାଣ୍ଡମ୍ କ୍ରମ |

ନିମ୍ନରେ ଛଉ-ରାଣ୍ଡମ କ୍ରମ ସୃଷ୍ଟି କରିବାର ଆଲଗୋରିଦମ ଅଛି |

  • rand0 = 0 × 42
  • ଯଦି ରାଣ୍ଡିର ବିଟ୍ 0 ହେଉଛି 0, ରାଣ୍ଡି + 1 = ରାଣ୍ଡି >> 1 |
  • ଯଦି ରାଣ୍ଡିର ବିଟ୍ 0 ହେଉଛି, ରାଣ୍ଡି + 1 = (ରାଣ୍ଡି >> 1) ^ 0xB8 |

2.3।କଣ୍ଟ୍ରୋଲ୍ ବାଇଟ୍ ଯୋଡନ୍ତୁ |

କଣ୍ଟ୍ରୋଲ୍ ବାଇଟ୍ ହେଉଛି ଗୋଟିଏ ବାଇଟ୍ ଡାଟା, ଏବଂ ଫ୍ରେମ୍ ର ମୁଣ୍ଡରେ ଯୋଡାଯିବା ଉଚିତ |ଫର୍ମାଟ୍ ନିମ୍ନ ସାରଣୀ ସହିତ ବର୍ଣ୍ଣିତ ହୋଇଛି:

6

ମୋଟାମୋଟି ଭାବେ, ସେଠାରେ types ପ୍ରକାରର ନିୟନ୍ତ୍ରଣ ବାଇଟ ଅଛି |ପ୍ରଥମ ତିନୋଟି EZSP ତଥ୍ୟ ସହିତ ସାଧାରଣ ଫ୍ରେମ୍ ପାଇଁ ବ୍ୟବହୃତ ହୁଏ, DATA, ACK ଏବଂ NAK |ଶେଷ ତିନୋଟି ସାଧାରଣ EZSP ତଥ୍ୟ ବିନା RST, RSTACK ଏବଂ ERROR ସହିତ ବ୍ୟବହୃତ ହୁଏ |

RST, RSTACK ଏବଂ ERROR ର ଫର୍ମାଟ୍ ବିଭାଗ 3.1 ରୁ 3.3 ରେ ବର୍ଣ୍ଣନା କରାଯାଇଛି |

2.4।CRC ଗଣନା କରନ୍ତୁ |

16-ବିଟ୍ CRC କଣ୍ଟ୍ରୋଲ୍ ବାଇଟ୍ ଠାରୁ ଡାଟା ଶେଷ ପର୍ଯ୍ୟନ୍ତ ବାଇଟ୍ ଉପରେ ଗଣନା କରାଯାଏ |ମାନକ CRCCCITT (g (x) = x16 + x12 + x5 + 1) 0xFFFF କୁ ଆରମ୍ଭ କରାଯାଇଛି |ସବୁଠାରୁ ମହତ୍ତ୍ by ପୂର୍ଣ୍ଣ ବାଇଟ୍ ସର୍ବନିମ୍ନ ଗୁରୁତ୍ୱପୂର୍ଣ୍ଣ ବାଇଟ୍ (ବଡ-ଏଣ୍ଡିଆନ୍ ମୋଡ୍) ପୂର୍ବରୁ ଥାଏ |

2.5। 2.5।ବାଇଟ୍ ଷ୍ଟଫିଙ୍ଗ୍ |

UG101 ର ବିଭାଗ 4.2 ରେ ବର୍ଣ୍ଣନା କରାଯାଇଥିବା ପରି, ସେଠାରେ କିଛି ସଂରକ୍ଷିତ ବାଇଟ୍ ମୂଲ୍ୟ ବିଶେଷ ଉଦ୍ଦେଶ୍ୟରେ ବ୍ୟବହୃତ ହୋଇଛି |ଏହି ମୂଲ୍ୟଗୁଡ଼ିକ ନିମ୍ନ ସାରଣୀରେ ମିଳିପାରିବ:

7

ଯେତେବେଳେ ଏହି ମୂଲ୍ୟଗୁଡ଼ିକ ଫ୍ରେମରେ ଦେଖାଯାଏ, ତଥ୍ୟକୁ ଏକ ସ୍ୱତନ୍ତ୍ର ଚିକିତ୍ସା କରାଯିବ |- ସଂରକ୍ଷିତ ବାଇଟ୍ ସାମ୍ନାରେ ଏସ୍କେପ୍ ବାଇଟ୍ 0x7D ସନ୍ନିବେଶ କରନ୍ତୁ - ସେହି ସଂରକ୍ଷିତ ବାଇଟ୍ ର ବିଟ୍ 5 କୁ ଓଲଟା କରନ୍ତୁ |

ନିମ୍ନରେ ଏହି ଆଲଗୋରିଦମର କିଛି ଉଦାହରଣ ଦିଆଯାଇଛି:

8

2.6।ଶେଷ ପତାକା ଯୋଡନ୍ତୁ |

ଅନ୍ତିମ ପଦକ୍ଷେପ ହେଉଛି ଫ୍ରେମର ଶେଷରେ ଶେଷ ପତାକା 0x7E ଯୋଡିବା |ଏହା ପରେ, UART ପୋର୍ଟକୁ ତଥ୍ୟ ପଠାଯାଇପାରିବ |

3. ଡି-ଫ୍ରେମ୍ କରିବା ପ୍ରକ୍ରିୟା |

ଯେତେବେଳେ UART ରୁ ଡାଟା ଗ୍ରହଣ କରାଯାଏ, ଆମେ ଏହାକୁ ଡିକୋଡ୍ କରିବା ପାଇଁ କେବଳ ଓଲଟା ପଦକ୍ଷେପ କରିବା ଆବଶ୍ୟକ |

4. ସନ୍ଦର୍ଭ


ପୋଷ୍ଟ ସମୟ: ଫେବୃଆରୀ-08-2022 |
ହ୍ ats ାଟସ୍ ଆପ୍ ଅନଲାଇନ୍ ଚାଟ୍!