蓝牙属性表理解(Bluetooth Attribute Protocol / ATT )

文章目录[隐藏]

一、在server端编写维护属性表(Attribute Table)

    属性表一般在server端维护(设备端也称作:peripheral,server,slave。与之对应的手机端,称作:central,client,master。),一般在设备端编写MCU程序,维护属性表,蓝牙芯片MCU厂商(比如TI CC26xx)都有自己的SDK,我们的精力主要用在维护属性表,属性表编写好后,设备注册,蓝牙连接成功,就可以进行通信,收发数据了。

    属性表的内容一般就是属性的内容,对应4个部分,attribute handle,attribute type,attribute value,attribute permissions。

二、属性表举例:
1)第一行,定义了一个service,UUID = 0xFF00;
2)第二到第四行,定义了第一个特性characteristic,UUID = 0xFF01,它的property为可写,无需应答,描述内容放在char1中;
3)第五到第八行,定义了第二个特性characteristic,UUID = 0xFF02,它的property为可写,具有notify功能,描述内容放在char2中;
4)手机端和设备端是通过特性characteristic UUID来收发数据的,我们在定义具体的characteristic UUID的时候,一般都是从功能码0x2803开始,到功能码0x2901结束;

在nRF Connect蓝牙调试APP中看到的情况:

三、具体理解过程

 

Attribute Type 分类

1)关于attribute type的定义,其实就是UUID,由2个byte构成。在Bluetooth SIG中,把UUID的范围(0x0000 - 0xFFFF)划分为若干个区域,即把attribute type类型分为几种类型,详见《16-bit UUID Numbers Document》:

    1.GATT Declaration: 0x2800 - 0x2803, 声明类型;

    2.GATT Descriptor:0x2900 - 0x290F,描述类型;

    3.GATT Service: 0x1800 - 0x1852,服务类型;

    4.GATT Unit: 0x2700 - 0x27C5,单位类型;

    5.GATT Characteristic and Object Type: 0x2A00 - 0x2BD9,特性值类型;

说明:

  1)我个人理解,1,2,3,4类型attribute type为功能型UUID,通过这些UUID完成某种功能,比如要添加一个描述,可以使用0x2900开始的UUID,他对应的值就描述的内容;

  2)我个人理解,5类型attribute type为数据型UUID,通过这些UUID实现短数据通信,比如要添加物理量星期,可以使用0xFF00开始的UUID,他对应的值就是星期,手机端和设备端就是通过这个UUID实现数据通信;

 

 

 

 

 

 

 

版权声明:本文为CSDN博主「hill_guo」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/hill_guo/article/details/121605863

生成海报
点赞 0

hill_guo

我还没有学会写个人说明!

暂无评论

相关推荐

RT-Thread Studio移植LAN8720A驱动

RTT网络协议栈驱动移植(霸天虎) 1、新建工程 ​ 工程路径不含中文路径名,工程名用纯英文不含任何符号。 2、用CubeMx配置板子外设 2.1、配置时钟 ​ 按照自己板子配置相应时钟。