"); //-->
本文由嵌入式企鹅圈原创团队成员黄鑫提供。
广播内容的自定义是蓝牙BLE开发的基本技能,用户最多能够设置31字节。但是用户定义是必须要遵循BLE协议的。另外,ibeacon应用和一些特定的应用要利用广播来传递数据,而且不同时间段的广播内容还会改变,如ibeacon的major/minor和电量显示等待。本文即阐述蓝牙的广播数据格式和动态改变。
参考文档:bluetooth specification version 4.0, p1735-p1738
一、广播数据格式
总共31字节,由一个或者多个广播结构单元组成,每个单元由长度Length、广播内容类型AD Type、广播数据AD Data组成;长度为AD Type加上AD Data的长度,不包括长度自身所占字节。
二、常见广播内容类型AD Type
1.flag
AD Type是0x1,代表广播模式。LElimited Discoverable(AD data是0x0)是有限时间广播,而General Discoverable(AD data是0x1)是无限广播,直到被主动停止广播。
2. Manufacture specific data
AD Type是0xff,代表厂商数据,自定义的数据可以写到这里。很多第三方场景应用都是利用这个字段来进一步定义应用协议格式,如微信的airsync协议和ibeacon协议。
3. service
代表服务的UUID,一般用16bit的UUID。如微信airsync协议的ServiceUUID是0xFEE7。
4. TX POWER LEVEL
发射功率,主机根据它和RSSI就可以计算主机到从机的距离,ibeacon室内定位即是利用这点。
5. local name
设备名称
常见的广播内容类型就是上面五种,其他的不常见就不讲了。
三、广播动态改变
动态改变其实跟各个蓝牙单芯片的sdk事件处理机制有关,但是对于CC2541、DA14580和nrf52832等平台来说,他们的处理基本是一样的:
1)要想改变广播内容,必须先停止广播,再进行广播内容更新,然后重新广播生效。
2)必须要等到底层BLE协议栈完全停止广播后,发送确认信息给应用层之后,才能改变广播内容并重新广播。
以DA14580来举例,其在一直广播过程中,在需要改变广播内容时,要先向GAPM(广播属于GAP层管理)发送GAPM_CANCEL_CMD取消广播,底层处理完会受到一个GAPM_CMP_EVT完成的事件,在该事件处理中修改广播内容,并重新发送GAPM_START_ADVERTISE_CMD命令开始广播。
四、广播TIMEOUT
对于DA14580来说,其默认是一直广播下去的,直到被取消或者转到连接状态。如果希望只广播一定时间就进入睡眠,则需要定义一个timer。
对于nrf52832来说,其接口内置一个定时器,可以设置无线广播,也可以设置一个时间,时间到了就会收到一个TIMEOUT事件。
关注微信公众号:嵌入式企鹅圈,获得上百篇物联网原创技术分享!
专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们
相关推荐
村田汽车电子元件技术交流会现场视频7
M9082 (电视机)红外线遥控发射微处理器
用生成式系统级芯片(GenSoC)来重新定义硬件可编程性
华清远见嵌入式系统开发课程2
CAM350教程汇编PDF版
\"2002年嵌入式系统及其应用研讨会暨多国产品展示会\"会议通知
特斯拉在配备全自动驾驶软件的汽车发生事故后面临调查
Imec推出300mm GaN计划以驱动下一代功率器件
华清远见嵌入式系统开发课程4
益莱储携手安立,参加2025 台北国际电子暨物联网展
控制领域的网络—LonWorks
中国对所有英伟达人工智能芯片进口实施管控
AMD和索尼重新思考PS6芯片组图形处理流水线
抢先试产的英特尔18A PK 台积电N2
探索台积电的OIP生态系统优势
好消息!
好消息!
Wolfspeed股票疯狂卷土重来的背后
FCA84C640 (电视机)遥控微处理器
CAM350培训资料
M50462AP (电视机)红外线遥控发射微处理器
华清远见嵌入式系统开发课程1
CAM350锣带制作指示
软银正寻求50亿美元贷款投资OpenAI,计划用Arm股票抵押
CAM350教程全接触
M50460―012P (电视机)红外线遥控发射控制电路
华清远见嵌入式系统开发课程3
MNl5245SAY (电视机)遥控微处理器
CAM350应用技巧说明书(英文版)
[来自SOHU]“龙芯”CPU问世