打印
[GW低功耗蓝牙MCU]

GW3323蓝牙数据

[复制链接]
619|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Lana636|  楼主 | 2024-8-27 13:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 Lana636 于 2024-8-27 13:35 编辑

一、广播信息
以极海GW3323的BLE蓝牙广播信息为例,当初始化蓝牙后,蓝牙芯片会进行广播,广播内容正是调用ble_get_adv_data()函数。蓝牙5.0广播数据最多达到255bytes。
//----------------------------------------------------------------------------
// BLE advertisement and scan,长度+flag+data
//----------------------------------------------------------------------------
const uint8_t adv_data_const[] = {
    0x02, 0x01, 0x02,// Flags general discoverable, BR/EDR not supported
    0x03, 0xff, 0x11, 0x22, // Manufacturer Specific Data
    0x06, 0x09, 'G', 'e', 'e', 'h', 'y', // Complete Local Name
};
翻译:
2字节,flag是1(通用广播模式),模式值是2(0表示有限广播,1表示无线广播,2表示不支持BR/EDR);
3字节,flag是0xff(自定义数据),数据值是0x11,0x22(用户自定义数据)
6字节,flag是0x09(完整的本地设备名称),数据值是“Geehy”

各标志flag的含义如下:
广播的数据类型参考文件:https://www.bluetooth.com/wp-content/uploads/Files/Specification/HTML/Assigned_Numbers/out/en/Assigned_Numbers.pdf

Flags general discoverable:

Bit0:LE 被限制发现模式
Bit1:LE 通用可发现模式
Bit2:不支持BR/EDR
Bit3:同时执行 LE BR/EDR 到同一设备(控制器)
Bit4:当通过 BR/EDR 物理通道接收,以前使用的发现模式标志应忽略时。当通过 BR/EDR 物理频道发送时,“不支持 BR/EDR”标志应设置为0
通用可发现标志参考文件:https://www.bluetooth.com/specifications/specs/css-11/

二、BLE与SPP

一个安卓手机可以通过SPP协议或BLE协议与GW3323芯片通信;
一个苹果手机只能通过BLE协议与GW3323芯片通信;
SPP通信速度一般是60~100KB的数据透传速度;BLE通信速度一般是30~100KB的数据透传速度;因手机上蓝牙硬件、手机蓝牙发送软件不同,速率会有所不同。

三、MTU值与每包数据传输大小的关系
GW3323芯片中ble_get_gatt_mtu()可查询到BLE的MTU值;get_spp_mtu_size()可查询到SPP的MTU值。
libbtstack.a中设置BLE的MTU值;spp.c中通过SPP_MTU_SIZE设置SPP的MTU值。
蓝牙通信的MTU值是取芯片设置的MTU与手机软件中设置MTU的最小值。

例如:gw3323的spp-mtu=500;ble-mtu=200;手机软件中mtu设置的是300;
当此手机通过spp与GW3323通信时,mtu=300;当此手机通过ble与GW3323通信时,mtu=200。

四、蓝牙类别图标
手机设置中连接蓝牙时,可以看到蓝牙名称前有耳机或打印机的图标。

注:安卓手机可以看到图标,苹果手机中看不到。

蓝牙类型图标可以通过更改bt.c文件中的bt_get_class_of_device返回值进行修改。

//Custom Bluetooth category icon, select as needed

u32 bt_get_class_of_device(void)

{

    if(cfg_bt_work_mode == MODE_BQB_RF_BREDR) {

        return 0x0000;

    }

//    return 0x0025c0;    //GamePad           - Game handle

//  return 0x002540;    //Keyboard          - Keyboard icon, Android with power display, IOS without power display. All IOS can be connected to HID for taking pictures.

//  return 0x240418;    //HeadPhone         - Headphone icon, Android and IOS are both charged.

//    return 0x240404;  //WearableHeadset   - Headphone icon, Android and IOS are both charged. (used by default)

    return 0x040680;    //printer   - Printer icon

}


蓝牙类别参考文件:https://www.bluetooth.com/wp-content/uploads/Files/Specification/HTML/Assigned_Numbers/out/en/Assigned_Numbers.pdf?v=1716361576404

五、BLE的服务与特征值
GW3323可以有多个服务,一个服务可以有多个特征值。

GW3323通过app.c中ble_gatts_service_add可添加服务,ble_gatts_characteristic_add添加特征值。
ble_gatts_characteristic_add最后一个参数,表示收到数据后执行的函数;

发送函数ble_tx_notify(gatts_battery_base.att_index, buffer, len)的第一个参数表示通过哪个属性句柄把buffer发送出去;

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

9

帖子

0

粉丝