蓝牙协议:ant/ant+

1 ant/ant+
  什么是ant协议 

    超低功耗的无线传输协议,约定了ant数据是如何传输的;

    射频频率范围2400-2524Mhz,共125个channel;不建议信道建立连接后信道跳变;

    ant协议讲了ant channel是如何配置的,ant空中包都发了啥数据,ant network是如何规划;(基础payload 8字节 >> 200us  >> 0.5-4hz )

    ant+ble功耗

  什么是ant+协议

    通过ant传输的标准传感器的数据规范,约定了ant数据是如何使用的;

    ant+协议的广播信道默认2457Mhz;使得ant+传感器能够兼容性高些;

    ant+协议则讲了ant空中包解析后的那8bytes的数据是干嘛的,具体查看对应的ant+ profile;(ant+也称device profile)

     网络密钥——这里是蚂蚁  申请adoptor>>申请network key>>在代码中配置network key才能加入ant network;

    ANT+ Device Profiles - THIS IS ANT   下图列出了所有的ant+协议,所以ant+传感器只有这么多种;

    ant+profile

2 ant的协议框架是咋样的?

        ant协议架构和ble(host+controller)相似,由 host + antEngine 部分组成;host+antEngine也组成一个ant设备,即ant节点;

     host            >> 为 ant+ profile / app profile;ant应用层也支持开发私有app profile;

     antEngine   >> 为 ant stack (ant protocol + link layer engine) + 硬件射频电路;

     对于ant stack部分garmin是全闭源的,在sdk中封装成了api给host层调用;

     ant层

3 ant的协议数据是如何传输的呢?

  在ant协议栈中,每个ant设备视为一个node,node与node通过频率相同的channel进行通信;由node与channel共同构成ant network;

  需要注意,同一network中的节点才可以互相通信,一个node可以成为多个network的成员;

  需要注意,在ant协议栈中和ble不同的是,ant协议栈将发送数据的设备作为master,接收数据的设备作为slave;

  那么信道这么多,信道的属性都有啥呢?我们如何分区哪个信道就是我们用来通信的那个呢?

  那么节点与节点间的拓扑网络又是咋样的呢?

4 ant的信道channel

  对于ant channel而言,channel本身都有哪些属性呢?channel传输的数据类型又有哪些呢?

  4.1 信道类型channelTypes(1bytes)

    51新的信道类型

    channelTypes可以概括分为如上三类,单向信道,双向信道,共享信道;进一步可以分为独立信道和共享信道;

    独立信道:包含单向信道和双向信道;独立信道只有一个主设备和一个从设备,(即其他slave是否监听广播当前slave是无感的,它头上没有地址;)

    共享信道:有一个主设备和多个从设备,需要slave设备寻址;(所以slave虽然不知道其他slave是谁,但是它可以察觉到其他slave参与了;)

    特殊信道类型:后台扫描信道(用于多连接后台扫描,有用)、快速初始化信道(控制应用,没用)、异步传输信道(ANT-FS传输,没用);

    后台扫描信道:在不影响信道通信时,持续搜索是否有满足配对条件的设备;每个设备只能有一个后台扫描信道,需要设置成低优先级模式;

    信道频率捷变功能:当信道性能被显著影响时才改变工作频率;该功能需要设备支持且启用,且不建议使用;(没啥用)

                当信道建立后再通过信道捷变功能修改信道频率,可能会导致设备返回搜索模式去重新同步;

    双向信道传输的是acknowleged数据,单向广播信道传输的是boardcast数据;(共享信道传的啥,burst数据在哪传,用不上也找不到先放着)

  4.2 信道频率RF frequency(1bytes)

    RF frequency取值0-124,以1Mhz为步长递增,对应2400-2524Mhz的工作频率;

    ant设备的默认射频频率为2466Mhz;ant+设备默认使用2450和2457Mh射频信道,建议非ant设备不要使用ant+默认频道;

  4.3 信道ID channel ID(4bytes)

    channel ID是信道的唯一标识符,由主设备指定;

    只有当从设备匹配上了主设备的信道id之后,这两个设备间才建立相互通信的信道;

    4.3.1 transmission type (1bytes)

      如果是共享信道,这里决定共享地址长度,如果是扩展deviceNumber,还有部分bit给它用;

      5.2.2transmissionType

    4.3.2 device type(1bytes)

      最高bit 是paringBit,决定当前设备是否允许配对;剩下7bits决定设备类型,ant设备可自定义;ant+设备为固定取值如下,

      eg:心率0x78,踏频0x7a,功率计0x0b,环境温度0x20...

    4.3.3 device number(2bytes)

      由主设备指定的设备编号,可用于识别设备;功能类似mac地址,通常与序列号相关联,或者由主设备随机生成;

      eg:node1>>0x0001, node2>>0x0002, node3>>0x0003;

  4.4 channel Period(2bytes)

    主设备发送数据包的消息周期范围 [0.5-200] hz,而channel period取值范围 = 32768/消息周期范围 ;

    eg:当消息周期为4hz,channel period = 32768/4 = 8192;

  4.5 network 

    4.5.2 network number(1bytes)

      标识当前ant设备上的可用网络,默认网络号0为公共网络;ant+设备都属于公共网络;

    4.5.2 network key(8bytes)

      每个network key对应一个network;通过唯一的network key进入唯一的network;全世界的ant+网络使用的是同一个network key;

  4.6 ant dataTypes

    前面的参数都是定义信道属性的参数,那么信道中传递的数据类型又是咋区分的呢?

    ant信道传输的数据类型可以概括为如下4种类型,每种数据类型的数据包都是8bytes;

      boardcastData     >> 广播数据,单向通信用于单向信道0x50;系统默认数据类型,ant设备常用;

      acknowledgedData  >> 带ack回复的数据,用于双向信道;请求电量,ant-fs控制等,ant+设备使用;

                    ack响应由协议栈底层确认,应用层不会察觉;如果slave设备想发送数据到master,接收完毕后立即发送请求;

      burstData        >> 带ack响应的快速连续的数据,最大吞吐量20kbps;比如ant-fs小文件上传使用;

      advancedBurstData  >> 升级版的burstData数据,最大吞吐量为60kbps;比如路线数据,训练记录传输;

  4.7 ant+心率传感器channel实例

    本节把ant协议的属性变量都描述了一遍,那么实际咋用的呢?以ant+心率传感器举例看看配置参数;

    ant+信道配置

  4.8 ant设备配对

    ant设备配对是指从设备获取主设备的信道id的过程;所以配对过程是从设备在那里单方面配对而不需要主设备配合;

    配对bit:主设备端:必须设置配对位才可以用于配对;从设备端:从设备自身也有配对位,决定从设备是否允许响应配对位;

    这个配对bit也没啥用,先放着;

  4.9 近距离搜索功能

    从设备开机后会扫描附近满足要求的特定类型信号id, 如果从设备信道id设置了通配符,附近可能有多个满足条件的主设备,

    启用了近距离搜索功能后,则默认连接最先扫到的满足条件的主设备;近距离搜索设置后单次有效;

    Garmin、Wahoo、Bryton 全部都要求 近距离配对

5 ant的空中包结构

  。。。[待补充]

6 ant的network实现举例

  假设有个网络如下所示,nodeB和D为广播的ant传感器,nodeC为ack广播的ant+传感器,然后nodeA为类似码表的设备;

  那么这个网络的拓扑结构改如何实现呢?

  一种是通过独立信道的方式来实现,一种是通过共享信道的方式来实现;对于ant+设备是通过独立信道ack广播数据类型的方式来实现的;

  8拓扑举例

  6.1 独立信道实现上述网络的设置

    8.2独立信道18.2独立信道2

    对于master而言,设置好channel type,然后在设置channel ID,然后开启通道,周期性发送广播数据即可;

    对于slave而言,设置好channel type,channel ID然后开启开启通道,去扫描是否有匹配的通道;

            有的话slave进行配对(ant设备的配对只要slave自己配对记住信息即可)然后继续后台扫描,没有的话slave继续扫描是否有其他匹配的通道;

             nodeAB,AC,AD属于三个独立的信道,nodeD和nodeB的设置流程一样,改个信道id即可;他们都属于默认公共网络;

    对于ant+传感器而言,使用的是当前这种独立信道的广播模式的网络;

  6.2 共享信道实现上述网络的设置

    8.2共享网络1118.2共享网络2

    对于共享网络而言,slave节点在网络中仅有自身和maser节点可见,需要master节点请求后slave才会发送广播数据;

    master需要依次轮询每个地址,所以数据会有延迟;

  6.3 注意事项

    master能够轮询slave,是因为它预先知道了slave的共享地址,master知道该去哪个信道上获取数据也是因为预先约定好了;

    所以对于ant协议而言,很多通信的信息其实都依赖于事先已经约定好的规则;

7 ant协议的网络拓扑

  好的,前面我们刚举了个常见的网络结构来解释ant传感器的常见用法;那么对于ant协议而言都有哪些拓扑结构呢?

  我们继续看看各种类型的拓扑结构,以及这个拓扑结构的常见用法;

  更新了的3拓扑

  上图概括了ant协议给出的拓扑结构,部分拓扑结构属于理论用法,未落地;

  对于第一行中的star结构,是属于boardcast + peerToPeer组成,所以这三个拓扑结构是具有包含关系的,其他结构也有相同包含关系;

  ant协议的常见用法则是:ant传感器在那广播,然后这个广播要么被一个从设备接收,要么被多个从设备接收;

8 ant+的开发过程中的相关工具和文档都有哪些呢?

  技术常见列表解答      >>  Tech FAQ - THIS IS ANT  帮助不大可以看看;

  ant协议的8个特性   >> Advanced Features - THIS IS ANT

  软件工具                    >> Software Tools - THIS IS ANT

              simulant+ : pc端在线模拟配置ant+数据,被连接进行数据通信;

              antwareII :   pc端在线模拟配置ant+数据,被连接进行数据通信; 同simulant+,比simulant+配置详细;

                     pc端在线模拟central,连接其他ant+传感器,接收数据;

  下载页面                     >>  咋用呢? 用到的手册只有 :《消息手册 》+ 《对应功能ANxx手册 》 + 《device profile手册》 

              《消息手册》定义ant协议及用法

                ant+对应特性 由《消息手册》和相关特性的《对应功能ANxx手册 》描述

                ant+对应 device profile 有对应的《device profile手册》可以查看

  sdk-ant-2.0.0               >> 欢迎来到 ANT 的 nRF Connect SDK!—— ANT提供的nRF Connect SDK文档

   ant论坛                       >> 可能没有维护;

9 sdk-ant-2.0.0 sdk目前都实现了哪些例程呢?

  目前sdk中实现一个高级爆发模式的例程,一个ant广播数据类型的收/发例程,一个加密数据类型的收/发例程,一个ant hrm接收例程,

  以及3个ant+收/发例程,收/发例程分开算的话一共有13个例程;

  看下sdk都实现了哪些例程,就可以知道ant协议栈我们实际能够开发的功能都有哪些;

10 ant+的发展前景咋样?

  大概是ble正在全面取代ant+,garmin已经不再更新ant/ant+协议了;ant+协议正在自然退场;

  大概市场上还有大量ant+的garmin和第三方设备,所以ant+协议还在做兼容性维护,但不再更新;

    ANT+ 协议 Garmin 基本停止发展

    文档 deprecated 说明其进入“仅维护,不更新”状态

    Garmin 不会弃用,但也不会继续推动

    长期会被 BLE 完全取代

    在 Garmin 生态中短期仍然是重要连接方式

 

posted @ 2025-11-25 18:32  rls_v  阅读(50)  评论(0)    收藏  举报