Zigbee ezsp uart에 대해

저자 : Torchiotbootcamp
링크 : https : //zhuanlan.zhihu.com/p/339700391
: Quora에서

1. 소개

Silicon Labs는 Zigbee Gateway 설계를위한 호스트+NCP 솔루션을 제공했습니다. 이 아키텍처에서 호스트는 UART 또는 SPI 인터페이스를 통해 NCP와 통신 할 수 있습니다. 가장 일반적으로 UART는 SPI보다 훨씬 간단하기 때문에 사용됩니다.

Silicon Labs는 또한 샘플 인 호스트 프로그램에 대한 샘플 프로젝트를 제공했습니다.z3gatewayhost. 샘플은 유닉스와 같은 시스템에서 실행됩니다. 일부 고객은 RTO에서 실행할 수있는 호스트 샘플을 원할 수도 있지만 불행히도 당분간 RTO 기반 호스트 샘플은 없습니다. 사용자는 RTO를 기반으로 자체 호스트 프로그램을 개발해야합니다.

맞춤형 호스트 프로그램을 개발하기 전에 UART 게이트웨이 프로토콜을 이해하는 것이 중요합니다. UART 기반 NCP 및 SPI 기반 NCP 모두에 대해 호스트는 EZSP 프로토콜을 사용하여 NCP와 통신합니다.EZSP짧습니다Emberznet 직렬 프로토콜그리고 그것은 정의되어 있습니다UG100. UART 기반 NCP의 경우 UART를 통해 EZSP 데이터를 안정적으로 전달하기 위해 하위 계층 프로토콜이 구현됩니다.금연 건강 증진 협회프로토콜, 짧은비동기 직렬 호스트. Ash에 대한 자세한 내용은 참조하십시오UG101그리고UG115.

EZSP와 Ash의 관계는 다음 다이어그램으로 설명 할 수 있습니다.

1

EZSP와 ASH 프로토콜의 데이터 형식은 다음 다이어그램으로 설명 할 수 있습니다.

2

이 페이지에서는 UART 데이터를 프레임하는 프로세스와 Zigbee Gateway에서 자주 사용되는 일부 주요 프레임을 소개합니다.

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 프레임을 채우십시오

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
作者 : Torchiotbootcamp
: : https : //zhuanlan.zhihu.com/p/339700391
来源 : 知乎
著作权归作者所有。商业转载请联系作者获得授权, 非商业转载请注明出处。

2.2. 데이터 무작위 화

상세한 무작위 배정 프로세스는 UG101의 4.3 절에 설명되어 있습니다. 전체 EZSP 프레임이 무작위로 표시됩니다. 무작위 배정은 독점 또는 EZSP 프레임 및 의사 랜덤 시퀀스에 대한 것입니다.

아래는 의사 랜덤 시퀀스를 생성하는 알고리즘입니다.

  • rand0 = 0 × 42
  • randi의 비트 0이 0이면 randi+1 = randi >> 1
  • randi의 비트 0 인 경우 1, randi+1 = (randi >> 1) ^ 0xB8

2.3. 제어 바이트를 추가하십시오

제어 바이트는 하나의 바이트 데이터이며 프레임 헤드에 추가해야합니다. 형식은 아래 표와 함께 설명되어 있습니다.

6

전적으로 6 가지 종류의 제어 바이트가 있습니다. 처음 세 개는 데이터, ACK 및 NAK를 포함한 EZSP 데이터가있는 일반적인 프레임에 사용됩니다. 마지막 3 개는 RST, RSTACK 및 오류를 포함한 일반적인 EZSP 데이터없이 사용됩니다.

RST, RSTACK 및 오류의 형식은 섹션 3.1 ~ 3.3에 설명되어 있습니다.

2.4. CRC를 계산하십시오

16 비트 CRC는 데이터의 끝까지 제어 바이트에서 바이트로 계산됩니다. 표준 CRCCCITT (g (x) = x16 + x12 + x5 + 1)는 0xffff로 초기화됩니다. 가장 중요한 바이트는 가장 중요한 바이트 (Big-Endian Mode)보다 우선합니다.

2.5. 바이트 스터핑

UG101의 4.2 절에 설명 된 바와 같이, 특수 목적으로 사용되는 일부 예약 된 바이트 값이 있습니다. 이 값은 다음 표에서 찾을 수 있습니다.

7

이러한 값이 프레임에 나타나면 데이터에 대한 특별 처리가 수행됩니다. - 예약 된 바이트 앞에 탈출 바이트 0x7d 삽입 - 예약 된 바이트의 비트 5를 반대로하십시오.

다음은이 알고리즘의 몇 가지 예입니다.

8

2.6. 끝 깃발을 추가하십시오

마지막 단계는 프레임 끝에 엔드 플래그 0x7e를 추가하는 것입니다. 그 후 데이터는 UART 포트로 전송 될 수 있습니다.

3. 프레임 디 프로세스

UART에서 데이터가 수신되면 리버스 단계를 수행하면 해독하기 만하면됩니다.

4. 참고 문헌


후 시간 : 2 월 8 일 -202222222
WhatsApp 온라인 채팅!