藍牙學習筆記四

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問題等等都有待測試和實現。





















發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章