nrf51822 使用16位自定義UUID

2021-08-02 05:22:53 字數 916 閱讀 5818

工程中建立的nus服務以及其中的兩個特性值都是128位的uuid。nordic sdk中使用128位uuid的方式和標準128uuid類似,它是提供乙個基準uuid,然後再修改其中的12 13位元組如下圖所示,向系統註冊 自定義的基準uuid後,系類返回type,只是使用uuid時,指定為改type然後uuid還要定義2位元組就可以了。

協議棧內部會自動將這2位元組替換base_uuid中的 12 13位元組形成128位uuid

那如何設定為16位uuid呢?  只要將type主動指定為 

ble_uuid_type_ble

就可以了。然後再設定2位元組uuid就行了

即ble_uuid.type = ble_uuid_type_ble  ;

ble_uuid.uuid = ble_uuid_nus_service;

這樣就行了。

ps:實際上uuid都是128位的 只不過當你將type指定為ble_uuid_type_ble時表示使用藍芽規範中定義的標準基準uuid (msb)00000000—0000—1000—8000—00805f9b34fb 然後你設定的16位uuid會替換其中的12 13位元組(從0位元組數的)。 不過因為這個uuid是標準的所以並不需要像上面自定義uuid一樣需要傳輸完整128位uuid,而是只傳輸16位uuid,接收方的底層驅動會自動補全它而已

將uuid 設定成 ble_uuid_type_ble 後有寫軟體顯示uuid就只有你定義的 2位元組, 但是有的軟體還是會顯示128位,不過你可以發現,它就是標準的基準uuid和你定義的16位uuid組合,這僅僅只是顯示問題而已, 可能軟體認為既然是標準的基準uuid那就顯示2位元組就行了,有的就不管怎麼樣都顯示完整的16位元組。 總之uuid其實都是128位的。

nrf51822 廣播間隔

1.目的 設定廣播間隔,已達到乙個功耗最佳的狀態 2.分析 廣播間隔,指每次藍芽廣播之間的間隔,間隔越大功耗越低,間隔越小功耗越大 3.平台 協議棧版本 sdk10.0.0 編譯軟體 keil 5.14 硬體平台 nrf51822最小系統 4.步驟 在main.c static void adver...

nrf51822 修改藍芽名字

1.目的 修改藍芽的名字 2.分析 藍芽名字最長設定為20個位元組,超過20個位元組為無效 3.平台 協議棧版本 sdk10.0.0 編譯軟體 keil 5.14 硬體平台 nrf51822最小系統 4.步驟 首先,要知道設定名字的api 在ble gap.h brief set gap devic...

nrf51822 設定傳送功率

1.目的 設定藍芽傳送功率,達到省電的目的 2.分析 實際應用當中,時常需要需改藍芽的發射功率,以達到省電的目的。在nrf51822中可以設定為9個發射等級,分別是 40,30,20,16,12,8,4,0,和4 dbm 3.平台 協議棧版本 sdk10.0.0 編譯軟體 keil 5.14 硬體平...