一、ANT通道介绍
ANT通道的配置是ANT应用开发中的关键。官方文档中的叫法是“channel”,之所以我翻译为“通道”,而不是“信道”或者“频段”,是因为后两词是常用于电子通信领域中的一个专有概念,往往带有许多的技术背景与色彩。而ANT技术灵活多变的组网通讯方式,使得ANT channel拥有了更为丰富的逻辑含义,使用汉语中意义最广泛的“通道”一词能更好得描述这个抽象的逻辑概念。
一个ANT通道用于连接至少两个节点,使其能够交换信息。每个通道至少有一个主节点(Master Node)和一个从节点(Slave Node)。
主节点的角色主要是是信息发送者,从节点的角色主要是信息接收者。注意这个用词“primary transmisstor”,也就说明主节点并不是完全不能接收信息,他也可以反向接收,从节点并不是完全不能发送信息,在必要的时候他也可以反向发送。
通常来说,我们定义数据消息的传输方向:
1. 正向传输 主节点————————>从节点 (always)
2. 反向传输 主节点<————————从节点 (optional)
二、ANT通道配置
之后通过设定一些参数,我们可以实现对ANT通道的配置。需要设定的参数有以下几个:
1.通道类型(channel type) 1.1可选扩展分配(optional extended assignment) 2.无线频率(RF freq.) 3.通道ID(channel ID) 3.1设备号(device ID) 3.2传输类型(transmission type) 3.3设备类型(device type) 4.通道周期(channel period) 5.网络(network) 5.1网络号(network number) 5.2网络密钥(network key) |
下面来详细讲讲各个参数的具体内容。
1.通道类型 [8bit]
ANT协议根据对通道的使用方式定义了4种通道类型,使用一个8bit的数据域来定义。所有节点在通信前都需要设定自己使用的通道类型,我们可以理解为,这种“自律”的行为,其实也就是为我们定义节点的主从提供了方便。举个有趣的例子,把主节点比作皇阿玛,从节点比作奴才,那么自然就发现皇阿玛总是发号施令的人,而奴才只有听旨的份。 :D
数值 |
通道类型 |
描述 |
0x40 |
单向主/从通道 |
仅用于最经典且最“古老”的广播数据类型,节点要么单发,要么单收,因此并不能用于需要网络管理等高级机制的情况。 |
0x10 |
双向主通道 |
定义节点为双向通道中的主节点。 |
0x00 |
双向从通道 |
定义节点为双向通道中的从节点。 |
0x20 |
共享双向通道 |
这是最“高级”的形式,用于2个以上节点共用一个通道的情况。比如一个主节点在一个信道上分别对多个从节点交换数据。 |
表1 ANT通道类型
1.1可选扩展分配 [8bit?]
可选扩展分配通过设定一个字段,可以开启一些高级的功能,比如抗干扰的频率捷变功能(freq. agility),以及调试网络使用的后台搜索通道功能(background scanning channel)。我们到后面再详细说这些内容。
2.无线频率 [8bit]
ANT技术使用2.400GHz~2.524GHz频段也就是2400MHZ~2542MHz进行通信,以1MHz为间隔,划分为125个小频段使用。一个通道只能工作在一个小频段上,而不能同时工作在多个小频段。
以下公式用于确定节点工作的无线频率:
其中无线频率设定值RF_Frequency_val的范围是 0x00~0x7c
3.通道ID [16bit+8bit+8bit]
通道ID包含三个内容:设备号、传输类型、设备类型。通道ID是一个通道的基本描述。对于主节点,应当设置其通道ID,表明自己的“属性”。比如“皇阿玛”和“大将军”,都是主节点,都能发送信息,但是一个是理政的“圣旨”一个是打仗的“军令”,明显类型不同,必须用设备类型来区分。再比如阿哥们给下边“传话”,小太监们怎么知道是哪个阿哥的话呢?从“大阿哥”到“bug”,设备号从一到八,这就好办了。另外传输类型,则可以用于定义某些传输特性,留给开发厂商们自由发挥。
这样一来,主节点设置好了自己的通道ID,从节点在寻找主节点的时候就可以利用ID来匹配主节点了。这个时候还可以使用0通配多个主节点。
3.1设备号 [16bit]
每个节点应拥有唯一的设备号,用于其它节点识别自己的身份。当然,从节点可以使用0通配所有主节点。如果是使用16位字段编号,我们可以计算出,在ANT网络的一个共享双向信道中,最多支持2^16-1个从节点,减去的那个1,是主节点。
3.2传输类型 [8bit]
传输类型用于定义设备的某些传输特征,可以让开发者们自由发挥。官方的做法是将其最高位的四位与前面的设备号联用,将设备号域扩展为20bit,然后将其最低的两位作为共享地址域的使能开关,用于表明有效数据载荷(data payload)中的共享地址域是否启用,以及长度多少。
3.3设备类型 [8bit]
用于将设备(主)按需分类,例如按功能逻辑心率表一类,温度表一类,这样设备(从)可以很方便地按照预先设定好的方式与某一类设备通信。8位中的最高位为配对位,表明是否允许该主设备被从设备配对,这个我们到后面的章节专门讲。也就是说,一共可以划分2^7个设备类型。
此外,如果将全部通道ID域当作设备号域来使用,我们得到ANT网络理论的最大节点数为2^32,官方数据就是这么来的。
4.通道周期 [16bit]
设定主节点的发送频率,范围0.5Hz~200Hz,即最慢2s一次,最快0.005s一次。通道周期由以下公式设定:
Channel_Period_val 取值范围 163.84~65536
官方推荐的通道周期是4Hz,也就是设定值为8192。这是在功耗,以及传输速率上的折中考虑,因为设备功耗与通道周期相关,周期越小,功耗越大,传输速率越快,设备搜索速度越快。
5.网络 [8bit+8*8bit]
一个ANT网络由至少2个节点组成,利用网络这个概念,可以将拥有不同通信规则的节点们区分开来。特定的网络拥有一套特定的规则,例如ANT+网络,其实质是由同一领域不同商家构成的开放的行业联盟。所谓开放是指仅仅对联盟内成员开放相关技术规格。也就是我们常说的配置方案“profile”。利用profile可以指定数据格式、通道参数、网络密钥(network key)等参数。
在我看来,ANT网络的出现,不仅有助于提高不同厂商间设备的互操作性,更重要的是有助于提高ANT技术的逼格,帮助ANT在某些领域巩固地位。通过提高准入的门槛,nordic可以轻松地将一大批擅长C2C的天朝寨厂吓跑,然后吸引资力雄厚的大腕厂商们来投ANT门下,一起抬高技术价格,赚取更多利润。当大厂们的东西占遍市场之后,借助行业优势就可以排斥后来技术,这样的事情尤其会发生在设备生命周期长,性能需求升级不多的领域。即便是有更新更好的技术,如果你不舍得便宜卖,那就卖不动。这一些都是技术层面之外的博弈,你想到什么了? TD对不对,呵呵。
扯远了,回到正题。既然是高大上,目前还玩不起的就简单点说吧!
- 网络号(network number) :用于标识一个ANT网络,默认0为公共网络。
- 网络密钥(Network Key):用于特定网络中的加密解密“通行证”,与网络号对应,默认0为公共网络密钥,贵。
以上就是ANT通道配置中的各个参数的介绍,下一章补充几个概念后,将给出一个ANT节点配对的通道配置实例。