Previously,我们说了配置ANT通道相关的几个参数,但想要完成节点的通道配置与配对的全过程,我们还有几个概念与参数需要提前了解。
一、典型的ANT节点结构
这里我并不会过多地介绍ANT模块的硬件模块,但要说明的是,ANT作为一种高度集成且精简高效的商用私有协议,nordic提供了完整SoC无线解决方案。比如nRF24APx系列,nRF51xxx系列等,都是常用的ANT模块。只需要配合极少数的外部MCU资源就可以完成应用的开发。下图是一个典型的ANT节点结构图,ANT模块通过一个异步或同步串口连接外部MCU。
二、ANT数据类型
ANT数据类型(data type)并不是ANT通道配置的一部分,相反它只是属于数据消息的一个属性。那么也就是说,节点可以在不改变通道配置的情况下,随时更改自己发送的数据类型。你会问,是不是任何类型的数据都可以用在任何通道(单/双,独立/共享)中呢?告诉你几乎就是是这样!唯一的限制是,单向通道中只能发送广播数据类型。
(1)广播数据 0x4E
广播数据是ANT系统默认的发据类型,也是应用最广泛、最基本、最简单的一种类型。发送广播数据时节点消耗的能量,和占用的无线带宽也是最低的。在那些允许偶尔丢包,无需确认机制,对数据完整性不是特别严厉的通信中,它无疑是最好的选择。
广播的基本形式是,按照设定的通道周期,连续地自动发送,当无新数据时,则重发上一个数据。
若想在反向信道上使用广播数据,从节点需要专门设置一下,且设置一次只发送一次,不会自动连续发送。
(2)应答数据 0x4F
准确来说,应该叫做“(要求)有应答的数据”。在双向通道中,任意节点均可发送应答数据,收到的节点将回复一个应答信息给源设备,若源设备收不到应答信息,并不会自动重发。
应答数据可以与广播数据混用,以实现某些特殊功能。当然要考虑到,使用应答数据的功耗是比较高的。应答数据尤其适合于传输控制数据。
另外,节点应答数据传输结束后,会自动返回到广播模式,并广播上一个数据。
(3)突发数据 0x50
当节点有大量数据需要传输时,应使用突发数据类型。突发数据由一系列快速连续带应答的数据包组成,每个数据包都会在无应答(丢包)时重传5次,若仍无应答,整个突发传输将终止,ANT模块会发送一个错误提示信息给MCU。若整个传输顺利完成MCU也会受到一个提示成功的信息。
突发数据需要消耗较多资源,因此其优先级高于广播信息和应答信息。那么也就是说,对于一个多信道节点,收发突发数据的那个信道会被ANT模块优先处理。而这也带来一个问题:因为突发的各个数据包相互并无同步机制(synchronized off each other),因此若该突发传输持续时间较长,则可能产生时间漂移导致2个节点都失去对原有信道的同步,从节点于是回到搜索模式或搜索超时模式。
其实可以将突发数据比作一连串的应答数据组合而成,不同点在于应答数据对每一个包进行确认,而突发数据只对整个数据传输进行确认。
接下来我将介绍ANT的几种典型拓扑结构,并借此引出独立(independent)/共享(shared)通道的概念。
三、ANT网络拓扑结构
(1)点对点拓扑
最简单的情况,只有一个主节点一个从节点,一个通道。因为一个通道上只连接了一个从节点,所以属于独立(independent channel)通道。
(2)星型拓扑
当一个节点需要与多个节点通信的时候,星型拓扑结构是很常见的一种情况。对比上下两行可以发现,使用独立通道时,每个通道只连接一个从机。由于计算能力的限制,目前ANT模块中最多支持的独立通道数是8个,因此,若要连接更多节点时,应该使用第二行的共享通道(shared channel)模式,即:配置一个通道连接多个从机,主机通过共享地址域完成对每个从机的识别。共享地址域的大小,决定了可以寻址的节点个数。
注意:
- 不要混淆中心/子节点,主/从节点两个概念,前者是针对拓扑结构而言,后者则是ANT节点的功能定义。
- 由于ANT主节点无法同时接收多个从节点的消息,因此在第二列的两种情况中,子节点的反向通信由都主节点发起并控制。通俗讲就是,子节点只能在“被点名”之后,才能与中心节点通信一次。这就保证了同一时刻只有一个子节点与中心节点通信。
那么,有没有什么办法可以让中心节点同时(little latency)与多个子节点通信呢?
若中心节点为ANT从节点,即中心节点主要负责信息接收时,除了使用上述独立/共享通道模式外,还有另外一种方法可以使用。
连续扫描模式(continuous scanning mode) 0x5B
在这种模式下,作为中心节点的ANT从节点可以同时接收多个子节点ANT主机的发射,而不需要采用“点名”的方式一一等待每个子节点的回应。
与共享通道类似,连续扫描模式下,所有设备工作在同一个RF频率下。中心节点ANT模块射频将始终被占用,此时它无法使用其他通道。中心节点射频连续工作,将产生较大功耗(约18mA)。
子节点应具有惟一的设备号、通道ID。中心节点通过快速轮询通道ID,就可以同时收到所有子节点的消息。
总结
优点:其延迟比使用共享通道要低,无需维持通道同步(不用设置通道周期),子节点可以快速进出网络或在两次通信时间之间休眠节省功耗。适合间断(intermittent)、异步(asynchronous)、瞬时传输(instantaneous)的需要。
缺点:对中心节点功耗要求高,且中心节点无法使用其他通道。非所有ANT模块支持。
(3)网状拓扑
网状拓扑属于多跳(multi-hop)系统,比较高大上,适用于较复杂的环境,在现有的ANT应用中并不多见。因此这里就不详细介绍了。见谅……
总结以上,我们说说独立通道与共享通道各自的特点。
独立通道: 1.每个通道只有一主一从,各个通道参数单独配置,比较简单。
2.节点硬件限制,最多只支持8个独立通道上8个节点。
共享通道: 1.每个通道有一主多从,主节点维护通道配置,从节点获取该配置。通道配置需要考虑的问题较多。
2.很容易支持8个以上的节点。
应用时,应当根据实际需求选择合适的方法。