લેખક: ટોર્ચઆઈઓટીબુટકેમ્પ
લિંક: https://zhuanlan.zhihu.com/p/339700391
તરફથી: Quora
1. પરિચય
સિલિકોન લેબ્સે Zigbee ગેટવે ડિઝાઇન માટે હોસ્ટ+NCP સોલ્યુશન ઓફર કર્યું છે. આ આર્કિટેક્ચરમાં, યજમાન UART અથવા SPI ઇન્ટરફેસ દ્વારા NCP સાથે વાતચીત કરી શકે છે. સૌથી સામાન્ય રીતે, UART નો ઉપયોગ થાય છે કારણ કે તે SPI કરતાં ઘણું સરળ છે.
સિલિકોન લેબ્સે હોસ્ટ પ્રોગ્રામ માટે એક સેમ્પલ પ્રોજેક્ટ પણ પૂરો પાડ્યો છે, જે સેમ્પલ છેZ3GatewayHost
. નમૂના યુનિક્સ જેવી સિસ્ટમ પર ચાલે છે. કેટલાક ગ્રાહકો હોસ્ટ સેમ્પલ જોઈ શકે છે જે RTOS પર ચાલી શકે છે, પરંતુ કમનસીબે, હાલમાં કોઈ RTOS આધારિત હોસ્ટ સેમ્પલ નથી. વપરાશકર્તાઓએ RTOS પર આધારિત તેમનો પોતાનો હોસ્ટ પ્રોગ્રામ વિકસાવવાની જરૂર છે.
કસ્ટમાઇઝ્ડ હોસ્ટ પ્રોગ્રામ વિકસાવતા પહેલા UART ગેટવે પ્રોટોકોલને સમજવું મહત્વપૂર્ણ છે. UART આધારિત NCP અને SPI આધારિત NCP બંને માટે, યજમાન NCP સાથે વાતચીત કરવા EZSP પ્રોટોકોલનો ઉપયોગ કરે છે.EZSPમાટે ટૂંકું છેએમ્બરઝનેટ સીરીયલ પ્રોટોકોલ, અને તે માં વ્યાખ્યાયિત થયેલ છેUG100. UART આધારિત NCP માટે, EZSP ડેટાને UART પર વિશ્વસનીય રીતે વહન કરવા માટે નીચલા સ્તરનો પ્રોટોકોલ લાગુ કરવામાં આવે છે, તે છેએએસએચપ્રોટોકોલ, ટૂંકા માટેઅસુમેળ સીરીયલ હોસ્ટ. ASH વિશે વધુ વિગતો માટે, કૃપા કરીને સંદર્ભ લોUG101અનેUG115.
EZSP અને ASH વચ્ચેનો સંબંધ નીચેના રેખાકૃતિ દ્વારા સમજાવી શકાય છે:
EZSP અને ASH પ્રોટોકોલના ડેટા ફોર્મેટને નીચેના ડાયાગ્રામ દ્વારા સમજાવી શકાય છે:
આ પેજમાં, અમે UART ડેટા અને કેટલીક કી ફ્રેમ બનાવવાની પ્રક્રિયા રજૂ કરીશું જેનો વારંવાર Zigbee ગેટવેમાં ઉપયોગ થાય છે.
2. ફ્રેમિંગ
સામાન્ય ફ્રેમિંગ પ્રક્રિયાને નીચેના ચાર્ટ દ્વારા સમજાવી શકાય છે:
આ ચાર્ટમાં, ડેટાનો અર્થ 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 ફ્રેમ ભરો
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 પ્રકારના કંટ્રોલ બાઇટ્સ છે. પ્રથમ ત્રણનો ઉપયોગ 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 થી પ્રારંભ થયેલ છે. સૌથી નોંધપાત્ર બાઈટ એ ઓછામાં ઓછા નોંધપાત્ર બાઈટ (બિગ-એન્ડિયન મોડ) કરતા આગળ આવે છે.
2.5. બાઈટ સ્ટફિંગ
UG101 ના વિભાગ 4.2 માં વર્ણવ્યા મુજબ, ખાસ હેતુ માટે ઉપયોગમાં લેવાતા કેટલાક આરક્ષિત બાઈટ મૂલ્યો છે. આ મૂલ્યો નીચેના કોષ્ટકમાં મળી શકે છે:
જ્યારે આ મૂલ્યો ફ્રેમમાં દેખાય છે, ત્યારે ડેટાની વિશેષ સારવાર કરવામાં આવશે. - આરક્ષિત બાઈટની સામે એસ્કેપ બાઈટ 0x7D દાખલ કરો - તે આરક્ષિત બાઈટના બીટ5ને રિવર્સ કરો
નીચે આ અલ્ગોરિધમના કેટલાક ઉદાહરણો છે:
2.6. અંત ધ્વજ ઉમેરો
અંતિમ પગલું એ ફ્રેમના અંતમાં અંતિમ ધ્વજ 0x7E ઉમેરવાનું છે. તે પછી, ડેટા UART પોર્ટ પર મોકલી શકાય છે.
3. ડી-ફ્રેમિંગ પ્રક્રિયા
જ્યારે UART માંથી ડેટા પ્રાપ્ત થાય છે, ત્યારે અમારે તેને ડીકોડ કરવા માટે માત્ર રિવર્સ સ્ટેપ્સ કરવાની જરૂર છે.
4. સંદર્ભો
પોસ્ટ સમય: ફેબ્રુઆરી-08-2022