Автор: TorchIoTBootCamp
Шилтеме: https://zhuanlan.zhihu.com/p/339700391
Булак: Quora
1. Киришүү
Silicon Labs компаниясы Zigbee шлюзунун дизайны үчүн хост+NCP чечимин сунуштады. Бул архитектурада хост NCP менен UART же SPI интерфейси аркылуу байланыша алат. Көбүнчө UART колдонулат, анткени ал SPIге караганда алда канча жөнөкөй.
Silicon Labs ошондой эле хост программасы үчүн үлгү долбоорду сунуштады, ал үлгү болуп саналатZ3GatewayHostҮлгү Unix сыяктуу системада иштейт. Айрым кардарлар RTOSто иштей турган хост үлгүсүн каалашы мүмкүн, бирок тилекке каршы, азырынча RTOSко негизделген хост үлгүсү жок. Колдонуучулар RTOSко негизделген өздөрүнүн хост программасын иштеп чыгышы керек.
Ыңгайлаштырылган хост программасын иштеп чыгуудан мурун UART шлюз протоколун түшүнүү маанилүү. UART негизиндеги NCP жана SPI негизиндеги NCP үчүн хост NCP менен байланышуу үчүн EZSP протоколун колдонот.EZSPүчүн кыскаEmberZnet сериялык протоколужана ал аныкталганUG100UART негизиндеги NCP үчүн, EZSP маалыматтарын UART аркылуу ишенимдүү түрдө өткөрүү үчүн төмөнкү катмар протоколу ишке ашырылат, булКҮЛпротокол, кыскартылганАсинхрондуу сериялык хостASH тууралуу көбүрөөк маалымат алуу үчүн, төмөнкү дарекке кайрылыңыз.UG101жанаUG115.
EZSP менен ASHтин ортосундагы байланышты төмөнкү диаграмма менен көрсөтүүгө болот:
EZSP жана ASH протоколунун маалымат форматын төмөнкү диаграмма менен көрсөтүүгө болот:
Бул баракчада биз UART маалыматтарын кадрлоо процесси жана Zigbee шлюзунда көп колдонулган кээ бир негизги кадрлар менен тааныштырабыз.
2. Рамкалоо
Жалпысынан калыптандыруу процессин төмөнкү диаграмма менен көрсөтүүгө болот:
Бул диаграммада маалыматтар EZSP алкагын билдирет. Жалпысынан алганда, алкактоо процесстери: |No|Кадам|Шилтеме|
|:-|:-|:-|
|1|EZSP алкагын толтуруңуз|UG100|
|2|Маалыматтарды рандомизациялоо|UG101дин 4.3-бөлүмү|
|3|UG101дин 2- жана 3-бөлүмдөрүн башкаруу байттарын кошуу|
|4|UG101дин 2.3-бөлүмүн колдонуп, CRCди эсептеңиз|
|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 алкагын жана жасалма кокустук ырааттуулукту камтуу үчүн ЖЕ ЭЛЕ жүргүзүлөт.
Төмөндө псевдо-кокустук ырааттуулукту түзүү алгоритми келтирилген.
- ранд0 = 0×42
- эгер рандинин 0-бити 0 болсо, рандинин+1 = рандинин >> 1
- эгер рандинин 0-бити 1ге барабар болсо, рандинин+1 = (рандинин >> 1) ^ 0xB8
2.3. Башкаруу байттарын кошуу
Башкаруу байт бир байттык маалымат болуп саналат жана ал кадрдын башына кошулушу керек. Формат төмөнкү таблицада көрсөтүлгөн:
Жалпысынан алганда, башкаруу байттарынын 6 түрү бар. Биринчи үчөө DATA, ACK жана NAK сыяктуу EZSP маалыматтары бар жалпы кадрлар үчүн колдонулат. Акыркы үчөө RST, RSTACK жана ERROR сыяктуу жалпы EZSP маалыматтары жок колдонулат.
RST, RSTACK жана ERROR форматтары 3.1ден 3.3кө чейинки бөлүмдөрдө сүрөттөлгөн.
2.4. CRCди эсептегиле
16-биттик CRC башкаруу байтынан маалыматтардын аягына чейинки байттар боюнча эсептелет. Стандарттык CRCCCITT (g(x) = x16 + x12 + x5 + 1) 0xFFFF катары инициалдашат. Эң маанилүү байт эң аз маанилүү байттан мурун келет (чоң-эндиан режими).
2.5. Байттарды толтуруу
UG101дин 4.2-бөлүмүндө сүрөттөлгөндөй, атайын максаттарда колдонулган айрым резервделген байт маанилери бар. Бул маанилерди төмөнкү таблицадан тапса болот:
Бул маанилер кадрда пайда болгондо, маалыматтарга атайын мамиле жасалат. – Резервделген байттын алдына 0x7D escape байтын киргизүү – Резервделген байттын 5-битинин тескерисинче кылуу
Төмөндө бул алгоритмдин кээ бир мисалдары келтирилген:
2.6. Аяктоо белгисин кошуңуз
Акыркы кадам - кадрдын аягына 0x7E аяктоо желегин кошуу. Андан кийин, маалыматтарды UART портуна жөнөтсө болот.
3. Алкактан чыгаруу процесси
UARTтан маалыматтар алынганда, аны чечмелөө үчүн тескери кадамдарды жасашыбыз керек.
4. Шилтемелер
Жарыяланган убактысы: 2022-жылдын 8-февралы








