中科藍訊-藍牙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