中科蓝讯-蓝牙SOC SPP的使用
关于中科蓝讯-蓝牙SOC SPP的使用
SPP是Serial Port Profile(串口协议)的缩写,其定义了使用蓝牙进行RS232(或类似)串行电缆仿真的设备应使用的协议和过程。简单来说就是在蓝牙设备之间建立虚拟的串口进行数据通信。说白了就是可以两个设备对端发送自定义数据,NOTED:苹果不支持SPP协议。
前置条件: 耳机打开串口功能
手机通过“蓝牙串口SPP” 手机APP软件,连接耳机,然后通过APP发送数据流给到耳机
中科蓝讯SPP使用:
- 配置功能中,打开串口功能
- SPP_init初始化,此处已经有,不需要我们自己初始化
- Spp_rx_callback 当耳机接收到SPP数据时,此处就会执行,
- bt_app_cmd_process 对接收到的数据进行解析,并匹配,如果匹配上,则执行对应的功能
- bt_spp_tx 返回数据流给到手机端。如上图,接收到0x44 0x55 0x54 ,然后又返回0x44 0x55 0x54给手机
采用ASCII的形式,详细ASCII表,请看最下面
如我们发送’D’ 、‘U’、‘T’,对应的发送数据ASCII就是 0x44 0x55 0x44
主要使用API
void bt_app_cmd_process(u8 *ptr, u16 size, u8 type) 接受串口数据并校验 @Param *ptr 通过蓝牙串口APP 发送过去的16进制数据数组 @Param size 发送数据的长度,如0x44 0x55 0x54 size =3 @type type 默认为0
int bt_spp_tx(uint8_t *packet, uint16_t len); 返回对应的数据回手机 @Param *packet 返回给手机的数据(数组) @Param len 数据长度
通过该方法,我们就可以自定义数据规则,来控制耳机进入各种功能。耳机收到对应的命令,然后发送一个msg_eneque(MSG)出去,执行对应的功能.
那我们就要指定对应的数据规则,以及返回对应的数据使得其他仪器解析出自己想要的数据,就像双方的暗号,暗号对上了,就代表认对人.
如:
关机命令
Send(手机端发送耳机的指令): 55 AA FF 14 00 F0(数据固定-十六进制)
Rsp(耳机返回手机端的指令):55 AA FF 14 01 00 B0
读取蓝牙地址:
Send(手机端发送耳机的指令): 55 AA FF 0D 00 AE(数据固定-十六进制数据)
Rsp(耳机返回手机端的指令): 55 AA FF 0D 07 41 42 00 01 02 03 00 A3
读取当前软件版本号
Send(手机端发送耳机的指令): 55 AA FF 17 00 A5(数据固定-十六进制数据)
Rsp(耳机返回手机端的指令): 55 AA FF 17 03 01 46 00 D1
注:“01”表示声道的选择(00:左声道 01:右声道) 第二个“46”表示软件版本号 4.6
进入DUT
Send(手机端发送耳机的指令): 55 AA FF 10 00 CB(数据固定-十六进制数据)
Rsp(耳机返回手机端的指令): 55 AA FF 10 01 00 2E
读取蓝牙名称
Send(手机端发送耳机的指令): 55 AA FF 0F 00 3F(数据固定-十六进制数据)
Rsp(耳机返回手机端的指令): 55 AA FF 0F 0C 54 45 43 4E 4F 2D 42 75 64 73 31 00 41