【沁恒蓝牙开发】拓展广播 Code PHY-从机

拓展广播

1、简介

普通广播(Legacy Advertising)中:

所有的 PDU 都在 37、38、39 三个信道上发送广播数据。

扩展广播中:

Primary Advertising Channel (主广播信道): 仅用于发送同步和索引信息。支持 LE 1M PHY 。

Secondary Advertising Channel (次级广播信道): 占用剩下的 0-36 号数据信道。支持 LE 1M、LE 2M(高速度)以及 LE Coded PHY(用于长距离模式)。

具体对比如下图:

2、代码配置

基于从机例程,注释普通广播,修改位 拓展广播

c 复制代码
/*-----------------扩展广播 与 扩展扫描响应 数据--------------------------*/
// 扩展广播数据 (总计 71 字节)
static uint8_t ext_advertising_data[] = {
    // 数据段 1: 完整设备名称 (共 7 字节)
    0x07,                               // 本段总长度:1字节类型 + 6字节名称 = 7字节
    GAP_ADTYPE_LOCAL_NAME_COMPLETE,     // 数据类型:完整的本地设备名称
    'E','x','t','2','2','2',            // 设备名称:"ExtADV" (6字节)

    // 数据段 2: 厂商自定义数据 (共 64 字节)
    0x40,                               // 本段总长度:1字节类型 + 63字节数据 = 64字节
    GAP_ADTYPE_MANUFACTURER_SPECIFIC,   // 数据类型:厂商自定义数据
    // 以下是63字节的厂商自定义测试数据(连续值1-63)
    0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A, // 1-10
    0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13,0x14, // 11-20
    0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E, // 21-30
    0x1F,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28, // 31-40
    0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,0x30,0x31,0x32, // 41-50
    0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C, // 51-60
    0x3D,0x3E,0x3F                               // 61-63
};

// 扩展扫描响应数据 (总计 71 字节)
static uint8_t ext_scan_response_data[] = {
    // 数据段 1: 扫描响应中的设备名称 (共 7 字节)
    0x07,                               // 本段总长度:7字节
    GAP_ADTYPE_LOCAL_NAME_COMPLETE,     // 数据类型:完整的本地设备名称
    'E','x','t','R','S','P',            // 扫描响应中使用的设备名称:"ExtRSP"

    // 数据段 2: 扫描响应中的厂商自定义数据 (共 64 字节)
    0x40,                               // 本段总长度:64字节
    GAP_ADTYPE_MANUFACTURER_SPECIFIC,   // 数据类型:厂商自定义数据
    // 以下是63字节的厂商自定义测试数据(连续值64-126)
    0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49, // 64-73
    0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,0x50,0x51,0x52,0x53, // 74-83
    0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x5B,0x5C,0x5D, // 84-93
    0x5E,0x5F,0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67, // 94-103
    0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F,0x70,0x71, // 104-113
    0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7A,0x7B, // 114-123
    0x7C,0x7D,0x7E                               // 124-126
};

/*-----------------扩展广播 与 扩展扫描响应 配置--------------------------*/

//放置位置 与 注释代码参考上图
uint8_t ext_adv_type = GAP_ADTYPE_EXT_CONN_UNDIRECT; // 以可连接模式为例
GAPRole_SetParameter(GAPROLE_ADV_EVENT_TYPE, sizeof(uint8_t), &ext_adv_type);

GAPRole_SetParameter(GAPROLE_ADVERT_DATA, sizeof(ext_advertising_data), ext_advertising_data);

GAPRole_SetParameter(GAPROLE_SCAN_RSP_DATA, sizeof(ext_scan_response_data), ext_scan_response_data);

GAP_SetParamValue(TGAP_ADV_PRIMARY_PHY, GAP_PHY_VAL_LE_CODED);
GAP_SetParamValue(TGAP_ADV_SECONDARY_PHY, GAP_PHY_VAL_LE_CODED);

3、实验

手机APP显示的拓展广播信息

注意,默认的APP并不会显示拓展广播,需要额外配置,配置如下:

相关推荐
浅止菌1 小时前
性能瓶颈找不到?ftrace+perf组合拳,5分钟定位内核问题
嵌入式硬件
ACP广源盛139246256732 小时前
IX9104 PCIe5.0 交换芯片@ACP#国产高端 AI PC 全搭配方案
大数据·人工智能·分布式·单片机·嵌入式硬件
某不知名網友2 小时前
C/C++动态内存管理,智能指针及RAlI思想。
java·c语言·c++
一杯奶茶¥3 小时前
c语言程序设计大学期末考试考研知识点重点笔记题库复习资料C语言重点考点题库资料合集
c语言·笔记·考研·c语言程序设计·c语言笔记
piaoyiren4 小时前
单片机串口控制单路共阳极数码管
单片机·嵌入式硬件·51单片机
南山电子nscn4 小时前
友顺科技UTC UR56XX系列在18V高压输入与1µA级超低功耗之间实现了出色的平衡
科技·单片机·嵌入式硬件·低压差线性稳压器
p似笑非笑5 小时前
在Mac上完美配置VSCode的C/C++开发环境(GCC/G++详细教程)
c语言·vscode·macos
嵌入式-老费6 小时前
esp32开发与应用(与stm32f103工控板配合之上篇)
stm32·单片机·嵌入式硬件
光芒Shine7 小时前
【C语言-记录点】
c语言
周洲08308 小时前
裸机程序 vs RTOS架构深度对比|嵌入式项目选型标准、源码实战、优缺点全解析
stm32·嵌入式硬件