BLE之UUID

本文介绍了BLE中的UUID概念,包括GATT层中的UUID作用和分类。内容涉及蓝牙技术联盟定义的UUID(基本UUID和16位UUID)以及供应商特定UUID的构成与使用。详细阐述了nRF51822 SDK中UUID的数据结构及其类型定义。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

GATT层中定义的所有属性都有一个UUID值,UUID是全球唯一的128位的号码,它用来识别不同的特性。

首先来说明一下含义:

GATT(Generic Attribute Profile),通用属性配置文件,其中的数据都是实际发送的,也就是蓝牙事件所产生的协议栈事件都是在这里发生的。

UUID(Universally Unique Identifier),通用唯一识别码。

UUID一般可以分为两种:1、蓝牙技术联盟UUIDs;2、供应商特定的UUID

1、蓝牙技术联盟UUIDs

蓝牙核心规范制定了两种不同的UUID,1、基本的UUID;2、代替基本UUID的16位UUID。

注意:所有的蓝牙技术联盟定义UUID共用了一个基本的UUID:0x0000xxxx-0000-1000-8000-00805F9B34FB。总共128位,换算成8位位组(octet)也就是16个8位位组(8*16=128嘛)。为了进一步简化基本UUID,每一个蓝牙技术联盟定义的属性有一个唯一的16位UUID,以代替上面的基本UUID的‘x’部分,也就是第12、13个八位位组。

2、供应商特定的UUID

与蓝牙技术联盟定义的UUID类似,供应商特定的UUID也有基本UUID和16位的UUID(类似一个别名,再加载在基本UUID之上)。基本UUID由nRFgo Studio产生,16位UUID可以按照自己的意图来任意分配。

因此,按照上述原则,nRF51822的SDK关于UUID的数据结构如下所示:

/** @brief 128 bit UUID values. */
typedef struct
{ 
    unsigned char uuid128[16];
} ble_uuid128_t;

/** @brief  Bluetooth Low Energy UUID type, encapsulates both 16-bit a
### 杰理蓝牙BLE自定义UUID设置及使用教程 #### 1. UUID的概念及其在BLE中的作用 通用唯一识别码(Universally Unique Identifier, UUID)是一种用于标识信息的标准方法,在Bluetooth Low Energy (BLE) 中广泛应用于服务(Service)、特征(Characteristic)以及描述符(Descriptor)。标准的UUID长度为128位,但在BLE中通常会使用16位的短UUID来简化通信过程。对于厂商特定的应用场景,则可以创建并注册自己的128位UUID。 杰理科技在其BLE SDK中支持用户自定义UUID的功能,这允许开发者根据具体需求设计独特的服务和特性[^1]。 #### 2. 使用杰理可视化SDK配置自定义UUID 为了实现BLE通信过程中对自定义UUID的支持,可以通过杰理提供的可视化工具完成以下步骤: - **打开Profile生成器**: 利用官方发布的profile文件生成工具(可通过引用[4]获取下载地址),启动软件界面。 - **新增或编辑Service**: 在图形化界面上点击“Add Service”,输入完整的128-bit UUID作为新服务的身份标志。同样地,当添加Characteristics时也需要指定相应的UUID值[^4]。 - **保存并导出Profile**: 完成所有必要的参数设定之后,记得保存所做的更改并将最终版本导出为可用于嵌入式开发环境下的C语言源代码形式。 #### 3. 修改固件以反映新的UUID设置 一旦完成了上述高层级的操作后,还需要深入到项目底层去调整相关部分以便于硬件能够理解这些改动: - 查找`multi_att_read_callback` 和 `multi_att_write_callback` 函数定义位置,确保它们能正确处理基于最新版profile所引入的新属性读写请求。 - 如果涉及到名称变更的话,请参照第三份资料里提到的方式定位至HCI命令响应区域(`HCI_EIR_DATATYPE_COMPLETE_LOCAL_NAME`)附近,适当更新字符串常量表项从而体现最新的设备标识信息[^3]。 #### 4. 测试阶段注意事项 最后一步也是至关重要的环节——验证整个流程是否顺畅无误。建议按照第二条参考资料里的指导方针执行详尽的功能检测计划,包括但不限于确认手机端应用程序能否成功解析来自外设的消息内容等等[^2]。 ```c // 示例代码片段展示如何初始化一个带有自定义UUID的服务结构体成员变量 #include "jlsdk_ble.h" const uint8_t custom_service_uuid_128[] = { /* Your full 128bit UUID here */ }; ble_gatt_svc_def my_custom_service = { .uuid_type = BLE_UUID_TYPE_128, .uuid.uu.uuid128 = custom_service_uuid_128, }; ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值