版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
青風(fēng)帶你玩藍(lán)牙nRF51822系 -------------作者:青 作者 青 淘寶店 技術(shù) 硬件平臺(tái):青云QY-nRF51822開發(fā) 藍(lán)牙BLE之LED燈任務(wù)的讀 1:nRF51822藍(lán)牙協(xié)議的分層 首先是應(yīng)用層 主機(jī)主協(xié)議層詳細(xì)說明 本實(shí)驗(yàn)主要就是編寫主機(jī)層,因此下面需要來詳細(xì)說明 通用規(guī)范(GenericAccess 角 廣 掃 發(fā) 連 角 GATT的規(guī)范層 標(biāo)準(zhǔn)的定務(wù)和特 注:講到這里大家應(yīng)該清楚我們的任務(wù)就是要建立私有的profile了 如果定制私有profile服務(wù) 空中操作和性 廣 連接參 服 特 私有服務(wù)的實(shí) API設(shè) 實(shí)現(xiàn)數(shù)據(jù)結(jié)構(gòu) 服務(wù)初始 處理協(xié)議棧................................................................................................................應(yīng)用層實(shí) 使用調(diào) 包含服 加入本服務(wù)的UUID到廣播數(shù)據(jù)包 青風(fēng)帶你玩藍(lán)牙nRF51822系列 作者:青 青風(fēng)電子社作者 青:淘寶技術(shù)硬件平臺(tái):青云QY-nRF51822開發(fā)BLELED燈任務(wù)的讀通過BLE功能進(jìn)行通信的BLE應(yīng)用的簡(jiǎn)單演示。當(dāng)它運(yùn)行時(shí),你可以通過集中器觸發(fā)nRF51822上LED的輸出。關(guān)于集中器的概念等下來講。1:nRF51822藍(lán)牙協(xié)議的分層從藍(lán)牙特別小組SIG的上可以看到已經(jīng)發(fā)布的GATT規(guī)范列表,包括警告通知(alertnotificantion),血壓測(cè)量(bloodpressure),心率(heartrate),電牙特別小組SIG的進(jìn)行了解。1.2控制器的控3:物理層本實(shí)驗(yàn)主要就是編寫主機(jī)層,因此下面需要來詳細(xì)說明通用規(guī)范(GenericAccessGAP是應(yīng)用層能夠直接BLE協(xié)議棧的最底層,它包括管理廣播和連接的有關(guān)參數(shù)。GAP模塊代表了所有藍(lán)牙設(shè)備的共用基礎(chǔ)功能,如傳輸,協(xié)議或者應(yīng)用規(guī)范所使用的模式和過程。GAP的服務(wù)包括設(shè)備發(fā)現(xiàn),連接方式,安全,認(rèn)證,關(guān)聯(lián)模第3卷C部分。角BLE連接,引入了“角色”BLE設(shè)備不是集中器角色就是設(shè)備角色,這是根據(jù)是誰發(fā)起這個(gè)連接來確定的。集中器設(shè)備總是連接的發(fā)起者,而設(shè)備總是被連接者。集中器和設(shè)備的關(guān)系就像鏈路層中的主機(jī)和 除了集中器角色和設(shè)備角色,藍(lán)牙規(guī)范還定義了觀察者角色和廣播者角色,觀察者角色空中的,廣播者角色只是廣播信息而不接收信息。觀察者角色和廣播注意:在接的另一端的設(shè)備被稱為對(duì)等設(shè)備,不管它是集中器還是設(shè)備廣果它被設(shè)置成主動(dòng)掃描,設(shè)備將會(huì)發(fā)送一個(gè)掃描回應(yīng)做為對(duì)集中器請(qǐng)求的回應(yīng),掃描回應(yīng)最多可以攜帶31字節(jié)的數(shù)據(jù)。掃發(fā)起連接時(shí),集中器接收到一個(gè)廣播數(shù)據(jù)包之后將會(huì)發(fā)送接請(qǐng)求。連連接間隔必須在7.5ms到4s之間??梢酝ㄟ^在每接間隔中傳輸多個(gè)數(shù)據(jù)包以獲得更高的數(shù)據(jù)吞吐量,每一個(gè)傳稱為從機(jī)延時(shí)(slavelatency)。通用屬性配置文件(GenericAttributeGTTA角服務(wù)器而獲得數(shù)據(jù)的設(shè)備稱為GATT客戶端。以以BLELED應(yīng)用為例, GATT屬GATT表中可能有許多屬性,這些屬性能可能有相同的UUID。特GATT服務(wù)傳輸?shù)臄?shù)據(jù)必須映射成一系列的特性,可以把特性中的這些數(shù)據(jù)以BLELED應(yīng)用為例,設(shè)備(帶有LED)作為服務(wù)器,集中器作為客戶端獨(dú)立地改變,因此,可以讓它們成為獨(dú)立的特性,所以我們用一個(gè)特性用來表示當(dāng)前LED的狀態(tài)。描述 服GATT服務(wù)一般包含幾塊具有相關(guān)的功能,比如特定傳感器的和設(shè)置,人機(jī)接藍(lán)牙技術(shù)(SIG)而設(shè)計(jì),SIG建議根據(jù)它們的規(guī)范設(shè)計(jì)自己的profile。對(duì)于對(duì)于BLE profile(數(shù)據(jù)配置文件profileprofile文件包含需要的服務(wù)的信BLELEDprofileprofileprofile參加本文2.1接描述。標(biāo)準(zhǔn)的定務(wù)和特BLE服務(wù),那就意味著,只要協(xié)議棧支持GATT,就可能為一個(gè)應(yīng)用建立一個(gè)它需要的profile和服務(wù)。既然在一個(gè)應(yīng)用中可以支持profile和服務(wù),那么就可以在這個(gè)應(yīng)用中建立一個(gè)個(gè)人定制的服務(wù)。1注:講到這里大家應(yīng)該清楚我們的任務(wù)就是要建立私有的profile如果定制私有profile服務(wù)只要協(xié)議棧支持GATT,就可能為一個(gè)應(yīng)用建立一個(gè)它需要的profile和服務(wù)。因此該profile必須符合GATTGATT的說藍(lán)牙技術(shù)為了進(jìn)一步簡(jiǎn)化基本UUID,每一個(gè)藍(lán)牙技術(shù)定義的屬性有一個(gè)唯一的16位16UUID,因此它完整的128UUID為:屬性,必須使用另外完整的128位UUID。供應(yīng)商特定的UUID的方式使得應(yīng)用變?yōu)楦邮褂密浖RFgoStudio非常容易產(chǎn)生一個(gè)新的基本UUID,見29頁第4.4.3節(jié)“服BLELED藍(lán)牙規(guī)范沒有任何規(guī)則或是建議如何對(duì)加入基本UUID的16位UUID進(jìn)行分配,性的UUID。lllll指示:服務(wù)器發(fā)給指示給客戶端,需要客戶端發(fā)一個(gè)確認(rèn)給服務(wù)器寫和沒有回應(yīng)的讀通知和指通知和指示性質(zhì)允許GATT服務(wù)器在其某個(gè)特性改變的時(shí)候?qū)ATT客戶端進(jìn)行提醒,BLELEDLEDLEDLED特廣 中ble_gap_conn_sec_mode_tGAP 中ble_advdata_terr_codeerr_code=err_code=ble_advdata_set(&advdata);必須通過err_codeerr_code=連接參SDK提供了一個(gè)名為ble_conn_params的模塊用于管理連接參數(shù)更新,它通過SoftDeviceAPI函數(shù)是經(jīng)過封裝后的函數(shù),無法查看源函數(shù),大家只要通過幫助文檔查找函數(shù)意義,所有帶sd前綴的函數(shù)名就是SoftDeviceAPI函數(shù)。CCCD,是否使用連接參數(shù),發(fā)送更新請(qǐng)求的延時(shí)等等。大家可以查看源碼,在BLE_CONN_PARAMS.H文件內(nèi)在初始化函數(shù)ble_conn_params_init()中,使用封裝了初始化連接參數(shù)err_codeerr_code=ble_conn_paramsSDK模塊確保與主機(jī)(集中器)的連接參數(shù)相適應(yīng),如服err_codeerr_code&p_lbs->service_handle特全局變量,它包含了特性可能用到的性質(zhì)(讀,寫,通知等)3個(gè)參數(shù)是值屬性err_codeerr_code=sd_ble_gatts_characteristic_add(p_lbs->service_handle,APIuint32_tuint32_tble_lbs_init(ble_lbs_t*p_lbs,constble_lbs_init_t*p_lbs_init);voidble_lbs_on_ble_evt(ble_lbs_t*p_lbs,ble_evt_t*p_ble_evt);在上面的代碼中,ble_lbs_t用于這個(gè)服務(wù)實(shí)例,在后面還會(huì)用到。而用到的數(shù)據(jù)結(jié)構(gòu)還沒有定義:ble_lbs_tble_lbs_init_t.typedeftypedef{ }typedeftypedefvoid(*ble_lbs_led_write_handler_t)(ble_lbs_t*p_lbs,uint8_tl服務(wù)的句柄l特性的句柄l連接的句柄lUUID類型lLED寫的回調(diào)函數(shù)服務(wù)結(jié)構(gòu)體定義如下typedeftypedefstruct{}服務(wù)初始就是來完成上面定義的結(jié)構(gòu)體ble_lbs_t的調(diào)用。p_lbs->led_write_handlerp_lbs->led_write_handler=p_lbs_init-技術(shù)所定義的UUID。 這就產(chǎn)生了一個(gè)隨機(jī)的UUID,可以用于你的定務(wù)中。#define#defineLBS_UUID_BASE{0x23,0xD1,0xBC,0xEA,0x5F,0x78,0x23,0x15,0xDE,0xEF,0x12,0x12,0x00,0x00,0x00,0x00}#define#defineble_lbs_init()中只添加一次:ble_uuid128_tble_uuid128_tbase_uuid=if(err_code!={return}ble_uuid.type=p_lbs->uuid_type;ble_uuid.type=p_lbs->uuid_type;err_codeif(err_code!={return}增加寫的性質(zhì)代替通知性質(zhì)(給這個(gè)特性使能寫性質(zhì))char_md.char_props.writechar_md.char_props.write= = =1; =NULL; =NULL; =ble_uuid.type=p_lbs->uuid_type;ble_uuid.type=p_lbs->uuid_type;&p_lbs->led_char_handles增加特////Adderr_code=led_char_add(p_lbs,p_lbs_init);if(err_code!=NRF_SUCCESS){return}returnLED特性,為了讓通知功能更好地APIble_lbs_on_ble_evt,可以使用簡(jiǎn)單的switch-case語句通過返回頭部的id號(hào)來區(qū)分不同的,voidvoidble_lbs_on_ble_evt(ble_lbs_t*p_lbs,ble_evt_t*{switch(p_ble_evt-{casecasecase}}CCCD寫的處SoftDeviceLED特性以在on_write()函數(shù)中實(shí)現(xiàn)這樣的功能。ble_gatts_evt_write_t*p_evt_write=ble_gatts_evt_write_t*p_evt_write=if((p_evt_write->handle==p_lbs->led_char_handles.value_handle)(p_evt_write->len==1)(p_lbs->led_write_handler!={} SDK4.1.0以后,當(dāng)錯(cuò)誤發(fā)生時(shí),默認(rèn)的應(yīng)用層錯(cuò)誤處理是復(fù)位,但是對(duì)于voidvoidapp_error_handler(uint32_terror_code,uint32_tline_num,constuint8_t*{//[Commentremovedfromsnippetforbrevity]//Onassert,thesystemcanonlyrecoverwitha}使用調(diào)在開始使用的模板中,默認(rèn)使能了調(diào)度功能。如果你不想使用它,你可以刪除它n循環(huán)中對(duì)它的調(diào)用elei_se_eee),設(shè)置DK(odee_nler,_i_t)。包含服 服務(wù)#include#include件上點(diǎn)擊右鍵,單擊Addfile,選擇ble_led.c文件。staticstatic 量經(jīng)常會(huì)出現(xiàn),指向它的指針為p_lbs。staticstaticvoid{ init_terr_code=ble_lbs_init(&m_lbs,&init);}LED特性寫”led_write_handlerLED特設(shè)置LED輸出狀態(tài)值,它是函數(shù)的一個(gè)輸入?yún)?shù):StaticStaticvoidled_write_handler(ble_lbs_t*p_lbs,uint8_t{if{}{}}staticstaticvoidble_evt_dispatch(ble_evt_t*{ble_lbs_on_ble_evt(&m_lbs,p_ble_evt);}加入本服務(wù)的UUIDmain.cadvertising_init()中,設(shè)置廣播數(shù)據(jù)結(jié)構(gòu)體,并staticstaticvoid{ flags=//YOUR_JOB:UseUUIDsforservice(s)usedinyourble_uuid_tadv_uuids[]={{LBS_UUID_SERVICE,//Buildandsetadvertisingdata= ===memset(&scanrsp,0,t=sizeof(adv_uuids)plete.p_u
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 高壓瓷介電容器項(xiàng)目年度分析報(bào)告
- 石河子大學(xué)《應(yīng)急決策理論與方法》2022-2023學(xué)年第一學(xué)期期末試卷
- 初一上冊(cè)語文3篇
- 石河子大學(xué)《數(shù)學(xué)文化》2021-2022學(xué)年第一學(xué)期期末試卷
- 石河子大學(xué)《編譯原理》2021-2022學(xué)年第一學(xué)期期末試卷
- 沈陽理工大學(xué)《數(shù)理統(tǒng)計(jì)與隨機(jī)過程》2021-2022學(xué)年第一學(xué)期期末試卷
- 沈陽理工大學(xué)《控制工程基礎(chǔ)與信號(hào)處理》2021-2022學(xué)年期末試卷
- 2022-23-1 本 概論學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 沈陽理工大學(xué)《常微分方程》2022-2023學(xué)年第一學(xué)期期末試卷
- 國際貨物買賣合同術(shù)語條款
- 百合干(食品安全企業(yè)標(biāo)準(zhǔn))
- 肺血栓栓塞癥臨床路徑(縣級(jí)醫(yī)院版)
- 國開成本會(huì)計(jì)第10章綜合練習(xí)試題及答案
- 《西游記》-三打白骨精(劇本臺(tái)詞)精選
- T∕CSCS 012-2021 多高層建筑全螺栓連接裝配式鋼結(jié)構(gòu)技術(shù)標(biāo)準(zhǔn)-(高清版)
- 充電站項(xiàng)目合作方案-高新
- 天然水晶介紹PPT
- 急診科臨床診療指南-技術(shù)操作規(guī)范更新版
- 精通版六年級(jí)上冊(cè)小學(xué)英語 Unit 3 單元知識(shí)點(diǎn)小結(jié)
- 名字的來歷-完整版PPT
- 公路新建工程標(biāo)準(zhǔn)化質(zhì)量管理手冊(cè)
評(píng)論
0/150
提交評(píng)論