1、nRF52832 藍牙學習筆記
2、如下圖
(1)services_init,總的服務
nus_data_handle,註冊了一個回調函數,用來接收來自ble app的數據,當有數據到來,
這個函數的具體實現爲
看這個函數自帶的參數,可知數據從參數中傳入
參數:
length:表示接收的數據的長度
*p_data:表示存數據的指針
另外的一個參數的結構體如下
具體的功能需要實際測試一下
(2)繼續看如下的函數,服務的具體
此處設置uuid的值,如上初始化結構體,此處初始化notification是false
(3)添加一個串口的服務,特性如下(service / uuid)
/*增加串口通信服務的uuid*/
ble_uuid.type = p_nus->uuid_type;
ble_uuid.uuid = BLE_UUID_NUS_SERVICE;
// Add the service.
err_code = sd_ble_gatts_service_add(BLE_GATTS_SRVC_TYPE_PRIMARY,
&ble_uuid,
&p_nus->service_handle);
(4)添加串口服務的特徵值(讀寫) 分別添加uuid,如下
// Add the RX Characteristic.
err_code = rx_char_add(p_nus, p_nus_init);VERIFY_SUCCESS(err_code);
// Add the TX Characteristic.
err_code = tx_char_add(p_nus, p_nus_init);
VERIFY_SUCCESS(err_code);
(5)串口服務的具體特徵值
rx的notify默認是開啓的
配置rx的uuid
//傳輸數據的最大值,20個字節,本來23減去了3個字節
接下來直接進入協議棧的函數中了
(6)寫特徵的添加(character)
具體實現如下,配置的是可寫,寫不用迴應
寫特徵值的uuid的配置
設置發送數據的長度20個字節,以及調用協議棧的函數進行初始化
3、gap層的配置
設置如下
注意如下框圖的數據
1、名字設置
2、連接參數配置
3、發射功率的調整
對藍牙的mac地址進行設置,是固定還是每次變動
4、advertising_init(BLE_ADVDATA_FULL_NAME, NULL);
廣播的初始化,BLE_ADVDATA_FULL_NAME,廣播全稱
如下紅框中就是廣播的一部分數據,爲製造商的數據
繼續往下看,廣播的配置,廣播的間隔和超時時間
小結:廣播設置,一般設置廣播的發射頻率,廣播的間隔,廣播的數據,廣播種類,廣播超時等。
基本上關於藍牙的設置分爲如下
gap層:設置藍牙地址問題(隨機還是固定),設置藍牙名字,連接參數配置,發射功率配置,
profile層:配置服務(串口服務),配置特徵值(讀、寫),配置服務和特徵值的相應的UUID,接受數據的函數的註冊,設置發送數據的長度,notify的配置
adv:廣播設置,一般設置廣播的發射頻率,廣播的間隔,廣播的數據,廣播種類,廣播超時等。
注:還有主從設備的配置,藍牙mac地址的獲取,掃描廣播的開啓和結束,rssi的獲取,發送數據
藍牙作爲透傳很容易,資源也比較適合,但是其他問題還有待測試--比如升級,boot怎麼寫,flash問題等等都有待測試和實現。