【WCH蓝牙系列芯片】-CH9141、CH9142模块自定义广播数据

-------------------------------------------------------------------------------------------------------------------------------------

  CH9141 是一款蓝牙串口透传芯片,芯片支持广播模式、主机模式和从机模式 的三种模式。而CH9142 是一款蓝牙转双串口透传芯片,芯片支持蓝牙主机模式、蓝牙从机模式和蓝牙广播模式的三种模式。在CH9141和CH9142芯片中都是可以设置为广播模式,那如何在蓝牙广播模式下,自定义更改广播数据内容,广播不同的数据。

  一、CH9141模块蓝牙广播模式下更改广播数据

  通过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

    收←◆Welcome

  通过AT指令配置,将当前的CH9141D的蓝牙工作模式设置为广播模式

  第三步:获取广播数据,并且自定义蓝牙广播数据

  为了实验的讲解,这里将这个对于广播数据都是随便定义,没有具体的参考价值意义。

    发→◇AT...               //进入AT模式

    收←◆OK

    发→◇AT+ADVDAT=02010604FF9988770709E682A8E5A5BD       //设置广播数据,最大 31 字节,传输格式是 ASC 格式

    收←◆OK

    发→◇AT+ADVDAT?          //查询当前广播的数据

    收←◆02010604FF9988770709E682A8E5A5BD     //返回的是刚设置的广播数据

        OK

    发→◇AT+EXIT //退出AT配置

    收←◆OK

 

    广播格式:长度+类型+数据,类型也算一个字节长度,

  通过BLE调试助手,扫描到CH9141的广播包的信息,

  02+01+0602是数据长度,0x01是蓝牙广播类型,0x06是表示广播的模式,设置为普通可发现模式和不支持经典蓝牙,只支持低功耗蓝牙,具体的  蓝牙广播模式可以参考蓝牙协议规范。也可以直接参考这个广播数据发送。

  04+FF+998877: 04是数据长度,0xFF是厂商自定义数据类型,0x998877是自定义数据的内容

  07+09+E682A8E5A5BD07是数据长度,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蓝牙模块“的编码

  注意:发送的数据为蓝牙广播的原始数据,芯片不会校验数据的合法性,所以数据一定要符合蓝牙协议规范。如果是不符合的数据,会导致蓝牙无法广播数据。

 

 

posted on 2025-04-29 19:29  凡仕  阅读(283)  评论(0)    收藏  举报