ກ່ຽວກັບ ZigBee ezsp UART UART UART

ຜູ້ຂຽນ: TORCHIOTBOTCAMPM
link: https: //zhuannan.zhihu.com/zhihu.com/p/3397003003
ຈາກ: ໂກແລ

1. ການແນະນໍາ

ຫ້ອງທົດລອງ Silicon ໄດ້ສະເຫນີວິທີແກ້ໄຂ + NCP ສໍາລັບການອອກແບບປະຕູ zigbee. ໃນສະຖາປັດຕະຍະກໍານີ້, ເຈົ້າພາບສາມາດສື່ສານກັບ NCP ຜ່ານ UART ຫຼື SPI Interface. ສ່ວນຫຼາຍແມ່ນທົ່ວໄປ, UART ຖືກນໍາໃຊ້ເປັນມັນງ່າຍກວ່າຫຼາຍກ່ວາ spi.

Labs Silicon ຍັງໄດ້ໃຫ້ໂຄງການຕົວຢ່າງສໍາລັບໂຄງການເຈົ້າພາບ, ເຊິ່ງແມ່ນຕົວຢ່າງz3Gatewayhost. ຕົວຢ່າງແມ່ນໃຊ້ລະບົບຄ້າຍຄື Unix. ລູກຄ້າບາງຄົນອາດຈະຕ້ອງການຕົວຢ່າງທີ່ເປັນເຈົ້າພາບເຊິ່ງສາມາດແລ່ນໄດ້ໃນ RTO, ແຕ່ໂຊກບໍ່ດີ, ບໍ່ມີຕົວຢ່າງທີ່ເປັນເຈົ້າພາບຂອງ RTOS ສໍາລັບເວລາ. ຜູ້ໃຊ້ຕ້ອງພັດທະນາໂປແກຼມເຈົ້າພາບຂອງຕົວເອງໂດຍອີງໃສ່ RTOS.

ມັນເປັນສິ່ງສໍາຄັນທີ່ຈະເຂົ້າໃຈອະນຸສັນຍາປະຕູ UART GateCol ກ່ອນທີ່ຈະພັດທະນາໂປແກຼມໂຮດທີ່ກໍານົດເອງ. ສໍາລັບທັງ NCP ທີ່ອີງໃສ່ NCP ແລະ SPI ທີ່ອີງໃສ່ NCP, ເຈົ້າພາບໃຊ້ໂປແກຼມ EZSP ເພື່ອສື່ສານກັບ NCP.EZSPແມ່ນສັ້ນສໍາລັບການອະນຸສັນຍາ serial Emberznet, ແລະມັນໄດ້ຖືກກໍານົດໄວ້ໃນug100. ສໍາລັບ NCP ທີ່ໃຊ້ແລ້ວ, ອະນຸສັນຍາຊັ້ນລຸ່ມແມ່ນຖືກຈັດຕັ້ງປະຕິບັດເພື່ອນໍາໃຊ້ຂໍ້ມູນ EZSP ທີ່ຫນ້າເຊື່ອຖືໃນໄລຍະ, ນັ້ນແມ່ນຂີ້ເທົ່າອະນຸສັນຍາ, ສັ້ນສໍາລັບasynchronous ເຈົ້າພາບ Serial. ສໍາລັບລາຍລະອຽດເພີ່ມເຕີມກ່ຽວກັບ Ash, ກະລຸນາເບິ່ງUG101ແລະug115.

ຄວາມສໍາພັນລະຫວ່າງ EZSP ແລະ Ash ສາມາດສະແດງໃຫ້ເຫັນໂດຍແຜນວາດດັ່ງຕໍ່ໄປນີ້:

ທີ 1

ຮູບແບບຂໍ້ມູນຂອງ EZSP ແລະອະນຸສັນຍາຂີ້ເທົ່າສາມາດໄດ້ຮັບການສະແດງໂດຍແຜນວາດດັ່ງຕໍ່ໄປນີ້:

2

ໃນຫນ້ານີ້, ພວກເຮົາຈະແນະນໍາຂັ້ນຕອນການເຮັດໃຫ້ຂໍ້ມູນຂອງ UART ແລະບາງເຟຣມສໍາຄັນທີ່ຖືກນໍາໃຊ້ເລື້ອຍໆໃນປະຕູ ZigBee Gateway.

2. ກອບ

ຂະບວນການຜະລິດທົ່ວໄປສາມາດສະແດງໃຫ້ເຫັນໂດຍຕາຕະລາງຕໍ່ໄປນີ້:

3

ໃນຕາຕະລາງນີ້, ຂໍ້ມູນຫມາຍຄວາມວ່າການ EZSP. ໂດຍທົ່ວໄປ, ຂະບວນການຂອບແມ່ນ: | ບໍ່ | ຂັ້ນຕອນ | ເອກະສານອ້າງອີງ |

|: - |: - |: - |: - |

| 1 | | ຕື່ມຂໍ້ມູນໃສ່ກອບ EZSP | UG100 |

| 2 | ຂໍ້ມູນການສຸ່ມຂໍ້ມູນ | ພາກ 4.3 ຂອງ Ug101 |

| 3 | | ເພີ່ມການຄວບຄຸມໄບຕ໌ | chs2 ແລະ chap3 ຂອງ Ug101 |

| 4 4 | ຄິດໄລ່ CRC | ພາກ 2.3 ຂອງ Ug101 |

| 5 | byte stuffing | ພາກທີ 4.2 ຂອງ ug101 |

| 6 | ຕື່ມທຸງຊາດ | ພາກ 2.4 ຂອງ UG101 |

2.1. ຕື່ມຂໍ້ມູນໃສ່ກອບ EZSP

ຮູບແບບ Ezsp ກອບແມ່ນສະແດງຢູ່ໃນ chm 3 ຂອງ ug100.

4

ເອົາໃຈໃສ່ວ່າຮູບແບບນີ້ອາດຈະປ່ຽນແປງເມື່ອ SDK ຍົກລະດັບ. ເມື່ອຮູບແບບປ່ຽນແປງ, ພວກເຮົາຈະໃຫ້ມັນເປັນເລກລຸ້ນໃຫມ່. ຕົວເລກລຸ້ນ EZSP ລ້າສຸດແມ່ນ 8 ເມື່ອຂຽນບົດຂຽນນີ້ (emberznet 6.8).

ໃນຖານະເປັນຮູບແບບການປະກອບ EZSP ອາດຈະແຕກຕ່າງກັນລະຫວ່າງສະບັບທີ່ແຕກຕ່າງກັນ, ມີຄວາມຕ້ອງການທີ່ຈໍາເປັນທີ່ເຈົ້າພາບແລະ NCPຕ້ອງເຮັດວຽກກັບລຸ້ນ EZSP ດຽວກັນ. ຖ້າບໍ່ດັ່ງນັ້ນ, ພວກເຂົາບໍ່ສາມາດສື່ສານໄດ້ຄືກັບທີ່ຄາດໄວ້.

ເພື່ອບັນລຸເປົ້າຫມາຍດັ່ງກ່າວລະຫວ່າງເຈົ້າພາບແລະ NCP ຕ້ອງເປັນຄໍາສັ່ງສະບັບ. ໃນຄໍາສັບຕ່າງໆອື່ນໆ, ເຈົ້າພາບຕ້ອງໄດ້ຮັບໃບສະບັບ EZSP ຂອງ NCP ກ່ອນການສື່ສານອື່ນໆ. ຖ້າລຸ້ນ EZSP ແມ່ນແຕກຕ່າງກັບລຸ້ນ EZSP ຂອງ Host Side, ການສື່ສານຕ້ອງໄດ້ເອົາໄປຮັບເອົາ.

ຄວາມຕ້ອງການທີ່ກ່ຽວຂ້ອງທີ່ຢູ່ເບື້ອງຫລັງນີ້ແມ່ນຮູບແບບຂອງຄໍາສັ່ງສະບັບທີ່ສາມາດເຮັດໄດ້ບໍ່ເຄີຍປ່ຽນແປງ. ຮູບແບບຄໍາສັ່ງ EZSP ລຸ້ນແມ່ນຄ້າຍຄືກັບຂ້າງລຸ່ມນີ້:

5

ຄໍາອະທິບາຍກ່ຽວກັບພາກສະຫນາມພາລາມິເຕີແລະຮູບແບບຂອງການຕອບສະຫນອງຮຸ່ນສາມາດພົບໄດ້ໃນ Chap 4 of ug100. ພາກສະຫນາມພາລາມິເຕີແມ່ນລຸ້ນ EZSP ຂອງໂປແກຼມເຈົ້າພາບ. ເມື່ອຂຽນບົດຂຽນນີ້, ມັນແມ່ນ 8.
ມັດ
作者: TorChioTBootCAMP
链接: https: //zhuannan.zhihu.com/zhihu.com/p/3397003003003
来源: 知乎
著作权归作者所有. 商业转载请联系作者获得授权, 非商业转载请注明出处.

2.2. ຂໍ້ມູນການສຸ່ມ

ຂະບວນການແບບລະອຽດໄດ້ຖືກອະທິບາຍໄວ້ໃນພາກ 4.3 ຂອງ UG101. ກອບ EZSP ທັງຫມົດຈະຖືກສຸ່ມ. ການສຸ່ມແມ່ນການສະເພາະ - ຫຼື EZSP Frame ແລະລໍາດັບແບບສຸ່ມແບບລໍາດັບ.

ຂ້າງລຸ່ມນີ້ແມ່ນສູດການຄິດໄລ່ຂອງການຜະລິດລໍາດັບແບບສຸ່ມແບບລໍາດັບ.

  • Rand0 = 0 × 42
  • ຖ້າ Biti 0 ຂອງ Randi ແມ່ນ 0, Randi + 1 = Randi >> 1
  • ຖ້າ Biti 0 ຂອງ Randi ແມ່ນ 1, Randi + 1 = (Randi >> 1) ^ 0xb8

2.3. ຕື່ມການຄວບຄຸມ butte

ໄບຕ໌ຄວບຄຸມແມ່ນຂໍ້ມູນໄບຕ໌ຫນຶ່ງ, ແລະຄວນຈະຖືກເພີ່ມເຂົ້າໃນຫົວຂອງກອບ. ຮູບແບບດັ່ງກ່າວແມ່ນສະແດງໃຫ້ເຫັນກັບຕາຕະລາງຂ້າງລຸ່ມນີ້:

6

ທັງຫມົດ, ມັນມີທັງ 6 ປະເພດຂອງໄບຕ໌ຄວບຄຸມ. ສາມຄັ້ງທໍາອິດແມ່ນໃຊ້ສໍາລັບກອບທົ່ວໄປທີ່ມີຂໍ້ມູນ EZSP, ລວມທັງຂໍ້ມູນ, ACK ແລະ NAK. ສາມອັນສຸດທ້າຍແມ່ນໃຊ້ໂດຍບໍ່ມີຂໍ້ມູນ EZSP ທົ່ວໄປ, ລວມທັງຈຸດສູງສຸດ, RSTack ແລະ Error.

ຮູບແບບຂອງຈຸດທີ່ສຸດ, RSTack ແລະຂໍ້ຜິດພາດແມ່ນໄດ້ຖືກອະທິບາຍໄວ້ໃນພາກທີ 3.1 ເຖິງ 3.3.

2.4. ຄິດໄລ່ CRC

CRC 16-BLC ຖືກຄິດໄລ່ຕາມໄບຕ໌ຈາກການຄວບຄຸມໄບຕ໌ຈົນກ່ວາໃນຕອນທ້າຍຂອງຂໍ້ມູນ. ມາດຕະຖານ crcccitt (G (X) = x16 + x12 + x5 + x5 + 1) ຖືກເລີ່ມຕົ້ນໃຫ້ເປັນ 0xFFFF. ໄບຕ໌ທີ່ສໍາຄັນທີ່ສຸດກ່ອນທີ່ຈະມີຮູບແບບທີ່ສໍາຄັນຫນ້ອຍທີ່ສຸດ (ໂຫມດ Big-Endian).

2.5. byte stuffing

ດັ່ງທີ່ໄດ້ອະທິບາຍໄວ້ໃນພາກ 4.2 ຂອງ UG101, ມີຄຸນລັກສະນະ byte ບາງຢ່າງທີ່ໃຊ້ສໍາລັບຈຸດປະສົງພິເສດ. ຄຸນຄ່າເຫຼົ່ານີ້ສາມາດພົບໄດ້ໃນຕາຕະລາງຕໍ່ໄປນີ້:

ມັດ

ເມື່ອຄຸນຄ່າເຫຼົ່ານີ້ປາກົດຢູ່ໃນກອບ, ການປິ່ນປົວພິເສດຈະເຮັດກັບຂໍ້ມູນ. - ໃສ່ byte escape 0x7d ຢູ່ທາງຫນ້າຂອງ byte ທີ່ສະຫງວນໄວ້ - ປີ້ນກັບ bit5 ຂອງໄບຕ໌ທີ່ສະຫງວນໄວ້

ຂ້າງລຸ່ມນີ້ແມ່ນບາງຕົວຢ່າງຂອງ istgorithm ນີ້:

ທີ 8

2.6. ຕື່ມທຸງສຸດທ້າຍ

ຂັ້ນຕອນສຸດທ້າຍແມ່ນການເພີ່ມທຸງສຸດທ້າຍ 0x7e ຈົນຮອດຈຸດສຸດທ້າຍຂອງກອບ. ຫລັງຈາກນັ້ນ, ຂໍ້ມູນສາມາດຖືກສົ່ງໄປທີ່ທ່າເຮືອ UART.

3. ຂະບວນການບໍລິໂພກ

ເມື່ອໄດ້ຮັບຂໍ້ມູນຈາກ UART, ພວກເຮົາພຽງແຕ່ຕ້ອງການເຮັດຂັ້ນຕອນການສໍາລ້ຽວເພື່ອຖອດລະຫັດມັນ.

4. ເອກະສານອ້າງອີງ


ເວລາໄປສະນີ: Feb-08-2022
ສົນທະນາ Online