当前文档版本为 v0.1.0,您可以访问当前页面的 开发中 版本以获取最近可能的更新。

1 ChirpLAN 协议介绍

当前版本

V0.1

更新日期

2022年11月2日

2 ChirpLAN 是什么

ChirpLAN目前是一种基于ChirpIoT™通讯技术,采用按需可靠的数据收发机制,适用于远距离低功耗的小型局域网(LAN)的网络通信协议。 ChirpLAN即ChirpIoT和LAN的缩写,也代表了它的特性。

主要特点:

  1. 开源:协议遵循Apache 2.0协议,协议代码和规范都完全公开,可以商用

  2. 轻量级:code<15KB,SRAM<4KB

  3. 组网灵活:支持组网,也支持点对点

  4. 多种功耗配置:对于功耗和实时性要求不同的场景都有支持

  5. 可靠性强:协议简单,可靠,扩展性强

  6. 完全自主开发:有独立的知识产权

  7. 安全:协议支持加解密功能

  8. 易部署:可以灵活的移植适配到不用的平台,MCU,以及和云服务端对接

3 ChirpLAN网络拓扑结构

目前ChirpLAN主要支持两种类型的组网,一种是网络模式,另一种是直连模式,网络模式本版本主要支持星形网络,网络拓扑图见下图,ChirpLAN网络中有2中角色:终端和网关,和云端服务器通信部分由具体的应用业务实现,不属于本协议部分的涵盖范围。

image

网络模式的拓扑结构图

直连模式,此模式又分为两种情况,一种是一对一模式通信,另一种是一对多通信的模式,两种模式拓扑图见下图:

image

直连模式拓扑结构图

image

一对都多模式拓扑结构图

4 ChirpLAN 协议架构

ChirpLAN协议应用的网络架构见下图,从底层到上层分别是物理层,链路层,网络层和应用层。其中本协议只对链路层和网络层做了规范。说明如下:

物理层:是基于磐启微的ChirpIOT通信技术的射频芯片。

链路层:负责实现收发逻辑,提供重传、碰撞检测,入网等功能。链路层为上层网络层提供接口,使用这些接口,网络层可以完成对射频的相关操作,而不用关注这些操作是如何实现的。

网络层:负责网络协议的控制,数据封包和解包,网络地址解析,各种模式管理等工作。

应用层:主要是一些具体的业务逻辑,如MCU外设,AT指令控制等。

image

ChirpLAN协议应用网络架构图

4.1 链路层介绍

链路层负责实现收发逻辑,提供重传、碰撞检测,入网等功能。链路层为上层网络层提供接口,使用这些接口,网络层可以完成对射频的相关操作,而不用关注这些操作是如何实现的。

  • 收发逻辑:射频的相关参数配置,收发数据的控制

  • 重传控制:根据配置参数,来控制射频发射的重传控制

  • 碰撞检测:多个节点同时发送会有冲突,需要做冲突检测和退避处理

  • 入网功能:加入网络的机制,可以从网关端获取分配的信道和相关模式以及参数等信息

  • 安全机制:支持数据的加解密AES128,key:128 bit

4.1.1 碰撞检测

image

碰撞检测机制

参考上图,下面说明碰撞检测机制:

  1. EP每次TX完会设定一个冲突窗口,这个窗内当前EP不允许发送数据

  2. EP每次发数据前都会检测当前信道是否有数据,如果有数据,会推迟到冲突窗口内的一个时间(要保证在冲突窗口内的一个随机值),只有在空闲模式才可以发送数据

  3. 在冲突窗口内, EP-B首先检测到信道空闲,获得了数据包的发送机会,EP-A和EP-C继续退避

  4. EP-C在第一次退避后,在第二个冲突窗口内,首先检测到信道空闲,发送当前的数据,EP-A继续退避

  5. EP-A检测到信道空闲,发送当前数据包

  6. 退避失败的次数越多,后续会在冲突窗口获得更靠前的权重

4.1.2 入网功能

入网是节点加入网络的第一个步骤,在网络模式中,只有终端节点通过网关的网络授权后,加入到网关对应的网络,才能进一步进行数据的交互。具体的通信的流程如下:

image

正常入网流程

正常入网说明:

  • 首先终端在入网信道,向网关发一个入网请求包(包括自己的一些必要信息,参考后面的入网请求帧)

  • 网关收到入网包,如果校验通过,会发送入网确认包,同时会给终端分配相关的RF参数,包括通信信道

  • 终端在数据信道发送数据给网关

  • 如果需要回复确认包,网关收到数据包后,回复相应的确认包

说明,目前入网中采用的是AES128加密机制,128 bit密钥

image

异常入网流程

异常入网流程说明:

  1. 终端发送的入网包,网关没有收到

  2. 终端继续发送一个入网包,但是入网包是一个非法的,此时网关可以收到,但不回复确认包

  3. 终端发送一个合封的入网包,网关也收到了此入网包

  4. 网关回复的确认包,终端没有收到

  5. 终端会继续重新发送入网包,直到收到网关的数据确认包为止

4.2 网络层介绍

负责网络协议的控制,数据封包和解包,网络地址解析,各种模式管理等工作。下面先介绍下网络层支持的几种模式。

image

网络模式介绍

ChirpLAN主要分为2个大的模式,网络模式(network mode)和直连模式(direct mode),Network Mode包括如下几种子模式:

  1. Mode A:主动上报模式

    特点:

    • 用户按需来发送数据,比如AT指令或者定时发送数据,不发送数据时RF处于休眠状态

  2. Mode B:空中唤醒模式

    特点:

    • 支持Mode A的全部功能

    • 终端周期打开RX,网关会通过长前导码可以唤醒,进行相应的通讯

  3. Mode C:全速运行模式

    特点:

    • 支持主动上报的功能

    • 半双工模式,终端在非TX的模式时,RF处于RX的模式,用来快速响应网关的数据

直连模式(Direct Mode),主要分为点对点直连模式和一对多通信模式,特点如下:

  • 支持终端之间的点对点通讯

  • 支持一对一和一对多

  • 地址参数可以配置

4.2.1 网络模式–Mode A

Mode A:主动上报模式,支持双向通信,终端具有极低的功耗,但是双向通信必须由终端发起,终端发送消息后,会打开一个短暂的接收窗口,网关需要在这个接收窗口内回复消息或者下发指令,通信时序见下图:

image

Mode A模式通信时序

Mode A模式单节点通信流程见下图:

image

Mode A模式单节点通信流程

通信流程说明如下:

  1. 终端发送数据包D1给网关(需要回复)

  2. 网关回复确认包给终端

  3. 终端发送数据包D2给网关(需要回复)

  4. 网关回复确认包,但终端没有收到

  5. 终端会重传数据包D2给到网关(此时网关不需要将该数据包上报给应用层)

  6. 网关收到后会继续回复确认包

Mode A模式多节点通信流程见下图:

image

Mode A模式多节点通信流程

通信流程说明如下:

  1. 两个终端节点EP1和EP2在不同的上行信道,网关支持多个上行信道接收,绿色柱代表终端RX打开的状态

  2. EP1和EP2分别同时发送数据包D1和P1给网关

  3. 网关下行只有一个信道,所以需要串行回复确认包,此时两个终端的RX开窗时间都满足,所以ack都可以正常接收到

  4. EP1和EP2分别同时发送数据包D2和P2给网关

  5. 网关先回复ACK给EP1,EP1正常收到,然后回复EP2时,由于EP2的RX的窗口提前关闭,导致ACK丢失,触发EP2的重发机制

说明:为了降低上述5中的情况,最终协议实现时可以考虑在RX开窗的基本时间上,加一个随机的扩窗时间(跟进应用场景自行配置),会提高并发通信收ack的概率

4.2.2 网络模式–Mode B

Mode B:空中唤醒模式,支持的功能说明如下:

1、支持单向通信,终端具有较低的功耗,网关在终端入网时规定终端的休眠周期,终端会定期自唤醒和接收,如果未发现Chirp信号,则会继续休眠;如果发现Chirp信号,则会接收一包完整的数据,通信时序见下图:

2、支持主动发包机制,与Mode A一致

3、支持时间帧同步(终端在收到网关的payload时刻同步当前的周期起始点)

image

Mode B模式通信时序

Mode B模式的通信流程见下图:

image

Mode B模式通信流程

Mode B模式通信流程说明如下:

  1. T1:EP1被唤醒,但ID不匹配,后继续休眠

  2. T3:同周期内EP2也被唤醒,EP2的ID匹配ok,继续接收数据

  3. T2:EP1被唤醒,同时ID匹配正确,继续接收数据

  4. T4:EP2在较晚的时刻被唤醒,ID未被正确匹配到,继续休眠

特性说明:

  • 同样是唤醒ID不匹配,由于唤醒的时刻不一样,会导致RX开的窗口大小不一样,对比T1和T4:T1>T4,所以功耗消耗也不一样

  • 同样是ID匹配正确,也会有T2和T3有差异的情况

4.2.3 网络模式–Mode C

Mode C:全速运行模式,支持双向通信,且终端和网关可以随时互相通信,该模式的数据实时性好,但是终端需要消耗更多的电量。通信时序见下图:

image

Mode C模式通信时序

Mode C模式通信流程见下图:

image

Mode C模式通信时序

Mode C模式通信流程说明如下:

  1. EP1和EP2工作在相同的信道

  2. EP1发送数据D1给网关,该数据包需要回复

  3. 网关由于应用层先前触发发送一个数据G1的需求,所以优先发送G1给EP2

  4. 网关发送ack给EP1

  5. 网关需要同时给两个终端EP1和EP2发送一个不需要回复的数据包G2

  6. 终端发送一个需要回复的数据包给P1

  7. 网关收到P1后回复确认包给EP2

上述流程都可以实时的相应各种通信。

4.2.4 直连模式(透明传输和定点传输)

Direct Mode:点对点直连模式,该模式支持定点模式通信(2个终端节点互相通信),也支持广播通信(一对多的通信)。该功能分为透明和定点传输模式:

透明传输模式:该模式支持2种子模式

  • Normal Mode :支持全速运行模式,模块处于active状态,此状态下,将应用层的数据直接通过RF发送出去,接收到数据也完全返回给应用层,RF处于非TX模式即为RX模式

  • LP Mode:支持空中唤醒,定期唤醒检测空中RF唤醒前导码,然后会和发射端做数据同步,此模式接收端功耗会比较低,发射端也不需要特别长的前导码

定点传输模式:与点对点子模式类似,也分Normal mode和LP Mode,区别是网络层要做地址解析处理。网络地址支持两种:单播地址和组播地址。

  • Normal Mode :支持全速运行模式,模块处于active状态,此状态下,将应用层的数据直接通过RF发送出去,接收到数据也完全返回给应用层,RF处于非TX模式即为RX模式

  • LP Mode:支持空中唤醒,定期唤醒检测空中RF唤醒前导码,然后会和发射端做数据同步,此模式接收端功耗会比较低,发射端也不需要特别长的前导码

通信流程见下图:

image

直连模式通信流程

直连是通信流程说明如下(包含两种模式的通信流程):

  1. EP1,EP2,和EP3处于同一个信道

  2. EP1发一个透明传输的包到EP2,EP2收到后回复一个ack

  3. EP2发送一个P1的包(不需要ack),EP1和EP3都可以收到

  4. EP2发送一个P2的定点的数据包(给EP1),EP1收到包后回复一个ack,EP3收到后,发现地址不一致,则不回复ack

5 空中包结构

所有的帧结构遵循:字节序:MSB,比特序:MSB

5.1 入网请求帧

image

入网请求帧格式

帧格式说明如下:

帧类型(其它帧格式定义都相同,不在赘述):

Bit7:加密标识,1为加密,0为不加密

Bit6-Bit0:

  • 入网请求:0x01

  • 入网回复:0x02

  • 不需要确认上行数据包Unconfirmed Uplink Data:0x03

  • 需要确认上行数据包Confirmed Uplink Data:0x04

  • 不需要确认下行数据包Unconfirmed Downlink Data:0x05

  • 需要确认下行数据包Confirmed Downlink Data:0x06

  • 需要确认下行配置Confirmed Downlink Config:0x07

  • 同步请求数据包:0x08

  • 同步数据包:0x09

  • 点对点定点模式数据包:0x10

  • 点对点透传模式数据包:0x11

帧序号:帧的编号,每一帧都单独递增,重复包ID相同,Ack 包的序号和请求包对应

节点ID:节点的编号,由应用来分配,一个网络里应该唯一

应用ID:网络号,用于区分不同的子网络,网关只接受与自己应用ID相同的节点的入网请求

通信模式:取值范围:1~3

  • 1:主动上报模式,

  • 2:空中唤醒模式,

  • 3:全速运行模式,

校验:数据校验和

5.2 入网回复帧

image

入网回复帧格式

帧格式说明:

帧类型:参见入网包帧类型定义

帧序号:帧的编号

应用ID:网络号,用于区分不同的子网络,网关只接受与自己应用ID相同的节点的入网请求

目标节点ID:目标节点的编号ID

网络ID:节点入网后,由网关或服务器分配的网络地址ID,组网后的通信地址均使用网络ID

上行参数:9字节(依次为3个上行信道,3个下行信道,BW,SF,CR,LDR),缺省值用0代替,0表示不使用此信道或不修改此参数。BW取值6-9,SF取值7-12,CR取值1-4,LDR取值0-1

唤醒间隔:空中唤醒模式下,节点的周期性上报时间间隔,单位:秒

通信模式:(主机有权限修改模式)

  • 1:主动上报模式

  • 2:空中唤醒模式

  • 3:全速运行模式

5.3 数据帧

image

数据帧格式

帧格式说明:

帧类型:参见入网包帧类型定义

帧序号:帧的编号

应用ID:网络号,用于区分不同的子网络,网关只接受与自己应用ID相同的节点的入网请求

数据内容:当本帧为数据帧时,本字段为数据内容。当本帧为ACK应答帧时,本字段为空。

网络ID:解析说明:与IP地址解析类似

  • 单播地址:低bit开始不能连续为1,如0x11223344

  • 组播地址:低bit 连续的1为组播地址,不能设置为具体的网络地址,如0x1122334F,组播地址的范围包括地址为0x11223340-0x1122334E

数据内容长度:payload的数据包长度,不包括校验位

5.4 配置帧

image

配置帧格式

说明:配置帧目前保留,后续版本会使用。

5.5 定点通信数据帧

image

配置帧格式

帧格式说明:

帧类型:参见入网包帧类型定义

目标地址:解析说明,与IP地址解析类似

  • 单播地址:低bit开始不能连续为1,如0x1122

  • 组播地址:低bit 连续的1为组播地址,不能设置为具体的网络地址,如0x112F,组播地址的范围包括地址为0x1120-0x112E

数据内容长度:payload的数据包长度

数据内容:当本帧为数据帧时,本字段为数据内容。当本帧为ACK应答帧时,本字段为空。

5.6 透明传输帧数据帧

image

透明传输帧数据帧格式

帧格式说明:

帧类型:参见入网包帧类型定义

数据内容长度:payload的数据包长度

数据内容:当本帧为数据帧时,本字段为数据内容。当本帧为ACK应答帧时,本字段为空

5.7 同步帧

同步帧分为请求同步帧和时间同步帧,见下图:

image

请求同步帧格式

image

时间同步帧格式

帧格式说明如下(仅说明如下2个字段,其它字段都类似):

  • 工作周期:网关或者对端发射的周期,单位1ms

  • 剩余时间:当前同步帧距离下次发射的剩余时间,单位1ms