【WCH蓝牙系列芯片】-CH9141、CH9142模块自定义广播数据
-------------------------------------------------------------------------------------------------------------------------------------
通过CH9141的芯片手册中可以知道,在广播模式下,支持两种方式更新广播数据,第一种就是支持串口透传数据给芯片,芯片将自动更新广播数据,第二种就是支持 AT 模式下发送对应的AT指令更新广播数据。
1、先测试通过ATAT 模式下更新广播数据
第一步:硬件连接
连接好硬件设备,将串口调试器的3.3V和GND连接对应CH9141的3.3V和GND引脚,TXD和RXD分别交叉连接到CH9141的RXD和TXD引脚。
第二步:设置蓝牙工作模式
打开上位机串口调试,发送AT指令,进行模式参数配置。在发送每条指令时,都需要换行!这是指令结束的一个标志。
可以通过十六进制查看发送的指令最后两位数据是否为0X0D和0X0A,则是命令中采用回车符和换行符作为分隔符和结束符使用。
发→◇AT... //进入AT模式
收←◆OK
发→◇AT+BLEMODE? //查询当前蓝牙工作模式
收←◆1 //返回当前的蓝牙工作模式,模式参数为:0(广播模式)、1(主机模式)、2(设备模式) OK
发→◇AT+BLEMODE=0 //设置模式的参数 x 为:0(广播模式)、1(主机模式)、2(设备模式) 收←◆OK
发→◇AT+RESET //复位芯片
收←◆OK

第三步:获取广播数据,并且自定义蓝牙广播数据
为了实验的讲解,这里将这个对于广播数据都是随便定义,没有具体的参考价值意义。
发→◇AT... //进入AT模式
收←◆OK
发→◇AT+ADVDAT=02010604FF9988770709E682A8E5A5BD //设置广播数据,最大 31 字节,传输格式是 ASC 格式
收←◆OK
发→◇AT+ADVDAT? //查询当前广播的数据
收←◆02010604FF9988770709E682A8E5A5BD //返回的是刚设置的广播数据
OK
发→◇AT+EXIT //退出AT配置
收←◆OK


广播格式:长度+类型+数据,类型也算一个字节长度,
通过BLE调试助手,扫描到CH9141的广播包的信息,
02+01+06:02是数据长度,0x01是蓝牙广播类型,0x06是表示广播的模式,设置为普通可发现模式和不支持经典蓝牙,只支持低功耗蓝牙,具体的 蓝牙广播模式可以参考蓝牙协议规范。也可以直接参考这个广播数据发送。
04+FF+998877: 04是数据长度,0xFF是厂商自定义数据类型,0x998877是自定义数据的内容
07+09+E682A8E5A5BD:07是数据长度,0x09是广播名称类型,0xE682A8E5A5BD是中文”您好“的编码

2、串口透传方式,发送广播数据修改芯片广播数据
直接在串口透传模式下,按照蓝牙协议规范 直接发送广播数据,一定要用16进制的方式发送数据,这个一定要注意!!!
发→◇02 01 06 04 FF 99 88 77 13 09 43 48 39 31 34 31 E8 93 9D E7 89 99 E6 A8 A1 E5 9D 97


在这一串数据中,02+01+06 和04+FF+998877 和之前在AT指令下发送的广播数据一样
13+09+434839313431E8939DE78999E6A8A1E59D97 是0x13是数据长度是19,0x09是广播名称类型,0x434839313431E8939DE78999E6A8A1E59D97是中文”CH9141蓝牙模块“的编码
综合两种方式,对于CH9141模块来说,建议使用 AT 命令发送蓝牙数据,数据为蓝牙广播的原始数据,芯片不会校验数据的合法性,所以数据一定要符合蓝牙协议规范。
1、如果在广播数据更新期间发送多个包,则最后一包数据将作为广播数据。
2、使用串口透传更新广播数据,建议采用串口超时机制,每个包之间的间隔必须大于串口超时时间。
3、广播数据包不可以超过 30 个字节,包的格式参考蓝牙协议规范。
二、CH9142模块蓝牙广播模式下更改广播数据
CH9142本身是没有AT指令配置广播数据的,所以得需要先配置广播模式,然后在串口透传情况下,发送广播数据来更新CH9142的广播数据包
发→◇AT... //进入AT模式
收←◆OK
发→◇AT+BLEMODE? //查询当前蓝牙工作模式
收←◆2 //返回当前的蓝牙工作模式,模式参数为:0(广播模式)、1(主机模式)、2(设备模式)
OK
发→◇AT+BLEMODE=0 //设置模式的参数 x 为:0(广播模式)、1(主机模式)、2(设备模式)
收←◆OK
发→◇AT+RESET //复位芯片
收←◆OK
发→◇4V CH9142钃濈墮妯″潡□ //发送更新蓝牙广播数据



02+01+06:是设置蓝牙广播类型
04+FF+123456:修改厂商自定义数据,数据设置为0x123456
13+09+434839313432E8939DE78999E6A8A1E59D97:修改蓝牙广播名称,0x434839313432E8939DE78999E6A8A1E59D97是中文”CH9142蓝牙模块“的编码
浙公网安备 33010602011771号