Zigbee EZSP UART ਬਾਰੇ

ਲੇਖਕ: ਟਾਰਚ ਆਈਓਟੀਬੂਟਕੈਂਪ
ਲਿੰਕ: https://zhuanlan.zhihu.com/p/339700391
ਵੱਲੋਂ: ਕੁਓਰਾ

1. ਜਾਣ-ਪਛਾਣ

ਸਿਲੀਕਾਨ ਲੈਬਜ਼ ਨੇ ਜ਼ਿਗਬੀ ਗੇਟਵੇ ਡਿਜ਼ਾਈਨ ਲਈ ਇੱਕ ਹੋਸਟ+ਐਨਸੀਪੀ ਹੱਲ ਪੇਸ਼ ਕੀਤਾ ਹੈ। ਇਸ ਆਰਕੀਟੈਕਚਰ ਵਿੱਚ, ਹੋਸਟ ਯੂਏਆਰਟੀ ਜਾਂ ਐਸਪੀਆਈ ਇੰਟਰਫੇਸ ਰਾਹੀਂ ਐਨਸੀਪੀ ਨਾਲ ਸੰਚਾਰ ਕਰ ਸਕਦਾ ਹੈ। ਆਮ ਤੌਰ 'ਤੇ, ਯੂਏਆਰਟੀ ਦੀ ਵਰਤੋਂ ਕੀਤੀ ਜਾਂਦੀ ਹੈ ਕਿਉਂਕਿ ਇਹ ਐਸਪੀਆਈ ਨਾਲੋਂ ਬਹੁਤ ਸਰਲ ਹੈ।

ਸਿਲੀਕਾਨ ਲੈਬਜ਼ ਨੇ ਹੋਸਟ ਪ੍ਰੋਗਰਾਮ ਲਈ ਇੱਕ ਸੈਂਪਲ ਪ੍ਰੋਜੈਕਟ ਵੀ ਪ੍ਰਦਾਨ ਕੀਤਾ ਹੈ, ਜੋ ਕਿ ਸੈਂਪਲ ਹੈZ3GatewayHost ਵੱਲੋਂ ਹੋਰ. ਇਹ ਸੈਂਪਲ ਯੂਨਿਕਸ ਵਰਗੇ ਸਿਸਟਮ 'ਤੇ ਚੱਲਦਾ ਹੈ। ਕੁਝ ਗਾਹਕ ਇੱਕ ਹੋਸਟ ਸੈਂਪਲ ਚਾਹੁੰਦੇ ਹੋ ਸਕਦੇ ਹਨ ਜੋ RTOS 'ਤੇ ਚੱਲ ਸਕੇ, ਪਰ ਬਦਕਿਸਮਤੀ ਨਾਲ, ਇਸ ਸਮੇਂ ਲਈ ਕੋਈ RTOS ਆਧਾਰਿਤ ਹੋਸਟ ਸੈਂਪਲ ਨਹੀਂ ਹੈ। ਉਪਭੋਗਤਾਵਾਂ ਨੂੰ RTOS 'ਤੇ ਆਧਾਰਿਤ ਆਪਣਾ ਹੋਸਟ ਪ੍ਰੋਗਰਾਮ ਵਿਕਸਤ ਕਰਨ ਦੀ ਲੋੜ ਹੈ।

ਇੱਕ ਅਨੁਕੂਲਿਤ ਹੋਸਟ ਪ੍ਰੋਗਰਾਮ ਵਿਕਸਤ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ UART ਗੇਟਵੇ ਪ੍ਰੋਟੋਕੋਲ ਨੂੰ ਸਮਝਣਾ ਮਹੱਤਵਪੂਰਨ ਹੈ। UART ਅਧਾਰਤ NCP ਅਤੇ SPI ਅਧਾਰਤ NCP ਦੋਵਾਂ ਲਈ, ਹੋਸਟ NCP ਨਾਲ ਸੰਚਾਰ ਕਰਨ ਲਈ EZSP ਪ੍ਰੋਟੋਕੋਲ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ।ਈਜ਼ੈਡਐਸਪੀਲਈ ਛੋਟਾ ਹੈਐਂਬਰਜ਼ੈਨੈੱਟ ਸੀਰੀਅਲ ਪ੍ਰੋਟੋਕੋਲ, ਅਤੇ ਇਸਨੂੰ ਇਸ ਵਿੱਚ ਪਰਿਭਾਸ਼ਿਤ ਕੀਤਾ ਗਿਆ ਹੈਯੂਜੀ100. UART ਅਧਾਰਤ NCP ਲਈ, EZSP ਡੇਟਾ ਨੂੰ UART ਉੱਤੇ ਭਰੋਸੇਯੋਗ ਢੰਗ ਨਾਲ ਲਿਜਾਣ ਲਈ ਇੱਕ ਹੇਠਲੀ ਪਰਤ ਪ੍ਰੋਟੋਕੋਲ ਲਾਗੂ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਇਹੀ ਹੈਸੁਆਹਪ੍ਰੋਟੋਕੋਲ, ਜਿਸਦਾ ਸੰਖੇਪ ਰੂਪਅਸਿੰਕਰੋਨਸ ਸੀਰੀਅਲ ਹੋਸਟ. ASH ਬਾਰੇ ਹੋਰ ਜਾਣਕਾਰੀ ਲਈ, ਕਿਰਪਾ ਕਰਕੇ ਵੇਖੋਯੂਜੀ 101ਅਤੇਯੂਜੀ115.

EZSP ਅਤੇ ASH ਵਿਚਕਾਰ ਸਬੰਧ ਨੂੰ ਹੇਠ ਲਿਖੇ ਚਿੱਤਰ ਦੁਆਰਾ ਦਰਸਾਇਆ ਜਾ ਸਕਦਾ ਹੈ:

1

EZSP ਅਤੇ ASH ਪ੍ਰੋਟੋਕੋਲ ਦੇ ਡੇਟਾ ਫਾਰਮੈਟ ਨੂੰ ਹੇਠ ਦਿੱਤੇ ਚਿੱਤਰ ਦੁਆਰਾ ਦਰਸਾਇਆ ਜਾ ਸਕਦਾ ਹੈ:

2

ਇਸ ਪੰਨੇ ਵਿੱਚ, ਅਸੀਂ UART ਡੇਟਾ ਨੂੰ ਫਰੇਮ ਕਰਨ ਦੀ ਪ੍ਰਕਿਰਿਆ ਅਤੇ ਕੁਝ ਮੁੱਖ ਫਰੇਮਾਂ ਨੂੰ ਪੇਸ਼ ਕਰਾਂਗੇ ਜੋ ਅਕਸਰ Zigbee ਗੇਟਵੇ ਵਿੱਚ ਵਰਤੇ ਜਾਂਦੇ ਹਨ।

2. ਫਰੇਮਿੰਗ

ਆਮ ਫਰੇਮਿੰਗ ਪ੍ਰਕਿਰਿਆ ਨੂੰ ਹੇਠਾਂ ਦਿੱਤੇ ਚਾਰਟ ਦੁਆਰਾ ਦਰਸਾਇਆ ਜਾ ਸਕਦਾ ਹੈ:

3

ਇਸ ਚਾਰਟ ਵਿੱਚ, ਡੇਟਾ ਦਾ ਅਰਥ EZSP ਫਰੇਮ ਹੈ। ਆਮ ਤੌਰ 'ਤੇ, ਫਰੇਮਿੰਗ ਪ੍ਰਕਿਰਿਆਵਾਂ ਹਨ: |ਨਹੀਂ|ਕਦਮ|ਸੰਦਰਭ|

|:-|:-|:-|

|1|EZSP ਫਰੇਮ ਭਰੋ|UG100|

|2|ਡੇਟਾ ਰੈਂਡਮਾਈਜ਼ੇਸ਼ਨ|UG101 ਦਾ ਭਾਗ 4.3|

|3|UG101| ਦਾ ਕੰਟਰੋਲ ਬਾਈਟ|ਚੈਪ2 ਅਤੇ ਚੈਪ3 ਸ਼ਾਮਲ ਕਰੋ।

|4|CRC ਦੀ ਗਣਨਾ ਕਰੋ|UG101 ਦਾ ਭਾਗ 2.3|

|5|ਬਾਈਟ ਸਟਫਿੰਗ|UG101 ਦਾ ਭਾਗ 4.2|

|6|ਅੰਤ ਝੰਡਾ ਜੋੜੋ|UG101 ਦਾ ਭਾਗ 2.4|

2.1. EZSP ਫਰੇਮ ਭਰੋ

EZSP ਫਰੇਮ ਫਾਰਮੈਟ ਨੂੰ UG100 ਦੇ ਅਧਿਆਇ 3 ਵਿੱਚ ਦਰਸਾਇਆ ਗਿਆ ਹੈ।

4

ਧਿਆਨ ਦਿਓ ਕਿ ਜਦੋਂ SDK ਅੱਪਗ੍ਰੇਡ ਹੁੰਦਾ ਹੈ ਤਾਂ ਇਹ ਫਾਰਮੈਟ ਬਦਲ ਸਕਦਾ ਹੈ। ਜਦੋਂ ਫਾਰਮੈਟ ਬਦਲਦਾ ਹੈ, ਅਸੀਂ ਇਸਨੂੰ ਇੱਕ ਨਵਾਂ ਸੰਸਕਰਣ ਨੰਬਰ ਦੇਵਾਂਗੇ। ਜਦੋਂ ਇਹ ਲੇਖ ਲਿਖਿਆ ਜਾ ਰਿਹਾ ਹੈ ਤਾਂ ਨਵੀਨਤਮ EZSP ਸੰਸਕਰਣ ਨੰਬਰ 8 ਹੈ (EmberZnet 6.8)।

ਕਿਉਂਕਿ EZSP ਫਰੇਮ ਫਾਰਮੈਟ ਵੱਖ-ਵੱਖ ਸੰਸਕਰਣਾਂ ਵਿਚਕਾਰ ਵੱਖਰਾ ਹੋ ਸਕਦਾ ਹੈ, ਇਸ ਲਈ ਇੱਕ ਲਾਜ਼ਮੀ ਲੋੜ ਹੈ ਕਿ ਹੋਸਟ ਅਤੇ NCPਲਾਜ਼ਮੀਉਸੇ EZSP ਸੰਸਕਰਣ ਨਾਲ ਕੰਮ ਕਰੋ। ਨਹੀਂ ਤਾਂ, ਉਹ ਉਮੀਦ ਅਨੁਸਾਰ ਸੰਚਾਰ ਨਹੀਂ ਕਰ ਸਕਦੇ।

ਇਸ ਨੂੰ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ, ਹੋਸਟ ਅਤੇ NCP ਵਿਚਕਾਰ ਪਹਿਲੀ ਕਮਾਂਡ ਵਰਜਨ ਕਮਾਂਡ ਹੋਣੀ ਚਾਹੀਦੀ ਹੈ। ਦੂਜੇ ਸ਼ਬਦਾਂ ਵਿੱਚ, ਹੋਸਟ ਨੂੰ ਕਿਸੇ ਵੀ ਹੋਰ ਸੰਚਾਰ ਤੋਂ ਪਹਿਲਾਂ NCP ਦੇ EZSP ਸੰਸਕਰਣ ਨੂੰ ਮੁੜ ਪ੍ਰਾਪਤ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ। ਜੇਕਰ EZSP ਸੰਸਕਰਣ ਹੋਸਟ ਸਾਈਡ ਦੇ EZSP ਸੰਸਕਰਣ ਤੋਂ ਵੱਖਰਾ ਹੈ, ਤਾਂ ਸੰਚਾਰ ਨੂੰ ਰੱਦ ਕਰ ਦੇਣਾ ਚਾਹੀਦਾ ਹੈ।

ਇਸਦੇ ਪਿੱਛੇ ਅਪ੍ਰਤੱਖ ਲੋੜ ਇਹ ਹੈ ਕਿ ਵਰਜ਼ਨ ਕਮਾਂਡ ਦਾ ਫਾਰਮੈਟਕਦੇ ਨਾ ਬਦਲੋ. EZSP ਵਰਜਨ ਕਮਾਂਡ ਫਾਰਮੈਟ ਹੇਠਾਂ ਦਿੱਤੇ ਅਨੁਸਾਰ ਹੈ:

5

ਪੈਰਾਮੀਟਰ ਖੇਤਰ ਦੀਆਂ ਵਿਆਖਿਆਵਾਂ ਅਤੇ ਸੰਸਕਰਣ ਜਵਾਬ ਦੇ ਫਾਰਮੈਟ ਨੂੰ UG100 ਦੇ ਅਧਿਆਇ 4 ਵਿੱਚ ਪਾਇਆ ਜਾ ਸਕਦਾ ਹੈ। ਪੈਰਾਮੀਟਰ ਖੇਤਰ ਹੋਸਟ ਪ੍ਰੋਗਰਾਮ ਦਾ EZSP ਸੰਸਕਰਣ ਹੈ। ਜਦੋਂ ਇਹ ਲੇਖ ਲਿਖਿਆ ਜਾਂਦਾ ਹੈ, ਇਹ 8 ਹੈ।
7
ਚਿੱਤਰ: ਟਾਰਚੀਓਟਬੂਟ ਕੈਂਪ
链接: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

ਕੁੱਲ ਮਿਲਾ ਕੇ, 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 ਵਿੱਚ ਦੱਸਿਆ ਗਿਆ ਹੈ, ਕੁਝ ਰਾਖਵੇਂ ਬਾਈਟ ਮੁੱਲ ਹਨ ਜੋ ਵਿਸ਼ੇਸ਼ ਉਦੇਸ਼ ਲਈ ਵਰਤੇ ਜਾਂਦੇ ਹਨ। ਇਹ ਮੁੱਲ ਹੇਠਾਂ ਦਿੱਤੀ ਸਾਰਣੀ ਵਿੱਚ ਮਿਲ ਸਕਦੇ ਹਨ:

7

ਜਦੋਂ ਇਹ ਮੁੱਲ ਫਰੇਮ ਵਿੱਚ ਦਿਖਾਈ ਦਿੰਦੇ ਹਨ, ਤਾਂ ਡੇਟਾ ਨਾਲ ਇੱਕ ਵਿਸ਼ੇਸ਼ ਇਲਾਜ ਕੀਤਾ ਜਾਵੇਗਾ। – ਰਾਖਵੇਂ ਬਾਈਟ ਦੇ ਸਾਹਮਣੇ ਐਸਕੇਪ ਬਾਈਟ 0x7D ਪਾਓ – ਉਸ ਰਾਖਵੇਂ ਬਾਈਟ ਦੇ ਬਿੱਟ5 ਨੂੰ ਉਲਟਾਓ

ਹੇਠਾਂ ਇਸ ਐਲਗੋਰਿਦਮ ਦੀਆਂ ਕੁਝ ਉਦਾਹਰਣਾਂ ਹਨ:

8

2.6. ਅੰਤ ਝੰਡਾ ਜੋੜੋ

ਆਖਰੀ ਕਦਮ ਫਰੇਮ ਦੇ ਅੰਤ ਵਿੱਚ ਅੰਤਮ ਝੰਡਾ 0x7E ਜੋੜਨਾ ਹੈ। ਇਸ ਤੋਂ ਬਾਅਦ, ਡੇਟਾ ਨੂੰ UART ਪੋਰਟ ਤੇ ਭੇਜਿਆ ਜਾ ਸਕਦਾ ਹੈ।

3. ਡੀ-ਫ੍ਰੇਮਿੰਗ ਪ੍ਰਕਿਰਿਆ

ਜਦੋਂ UART ਤੋਂ ਡੇਟਾ ਪ੍ਰਾਪਤ ਹੁੰਦਾ ਹੈ, ਤਾਂ ਸਾਨੂੰ ਇਸਨੂੰ ਡੀਕੋਡ ਕਰਨ ਲਈ ਉਲਟ ਕਦਮ ਚੁੱਕਣ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ।

4. ਹਵਾਲੇ


ਪੋਸਟ ਸਮਾਂ: ਫਰਵਰੀ-08-2022
WhatsApp ਆਨਲਾਈਨ ਚੈਟ ਕਰੋ!