Zigbee EZSP UART ਬਾਰੇ

ਲੇਖਕ: ਟੋਰਚੀਓਟਬੂਟ ਕੈਂਪ
ਲਿੰਕ: 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ਲਈ ਛੋਟਾ ਹੈEmberZnet ਸੀਰੀਅਲ ਪ੍ਰੋਟੋਕੋਲ, ਅਤੇ ਇਸ ਵਿੱਚ ਪਰਿਭਾਸ਼ਿਤ ਕੀਤਾ ਗਿਆ ਹੈUG100. UART ਅਧਾਰਤ NCP ਲਈ, EZSP ਡੇਟਾ ਨੂੰ UART ਉੱਤੇ ਭਰੋਸੇਯੋਗ ਢੰਗ ਨਾਲ ਲਿਜਾਣ ਲਈ ਇੱਕ ਹੇਠਲੀ ਪਰਤ ਪ੍ਰੋਟੋਕੋਲ ਲਾਗੂ ਕੀਤਾ ਗਿਆ ਹੈ, ਇਹ ਹੈASHਪ੍ਰੋਟੋਕੋਲ, ਲਈ ਛੋਟਾਅਸਿੰਕ੍ਰੋਨਸ ਸੀਰੀਅਲ ਹੋਸਟ. ASH ਬਾਰੇ ਹੋਰ ਵੇਰਵਿਆਂ ਲਈ, ਕਿਰਪਾ ਕਰਕੇ ਵੇਖੋUG101ਅਤੇUG115.

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 ਫਰੇਮ ਫਾਰਮੈਟ ਵੱਖ-ਵੱਖ ਸੰਸਕਰਣਾਂ ਵਿਚਕਾਰ ਵੱਖਰਾ ਹੋ ਸਕਦਾ ਹੈ, ਇਸ ਲਈ ਇੱਕ ਲਾਜ਼ਮੀ ਲੋੜ ਹੈ ਕਿ ਹੋਸਟ ਅਤੇ ਐਨ.ਸੀ.ਪੀ.ਲਾਜ਼ਮੀ ਹੈਉਸੇ 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 ਡੇਟਾ ਵਾਲੇ ਸਾਂਝੇ ਫਰੇਮਾਂ ਲਈ ਕੀਤੀ ਜਾਂਦੀ ਹੈ, ਜਿਸ ਵਿੱਚ ਡੇਟਾ, 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 ਆਨਲਾਈਨ ਚੈਟ!