1科技教程nrf52832開發(fā)指南下冊_第1頁
1科技教程nrf52832開發(fā)指南下冊_第2頁
1科技教程nrf52832開發(fā)指南下冊_第3頁
1科技教程nrf52832開發(fā)指南下冊_第4頁
1科技教程nrf52832開發(fā)指南下冊_第5頁
已閱讀5頁,還剩242頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、艾克姆科技nRF52832 開發(fā)指南-下冊基于 Nordic 藍牙低功耗/2.4GHz Soc-nRF52832艾克姆科技飛宇團隊2018.11.17:https:/a: 艾克姆科技發(fā)布本文檔技術支持:強光手電本文檔以艾克姆科技 IK-52832DK 開發(fā)板為硬件平臺,BLE 開發(fā),從基本概念和新建 BLE 工程模板開始,一步步講解藍牙 BLE 程序框架及功能的實現目錄第一章:藍牙BLE 技術簡介91.2.學習目的9藍牙技術的...2.5.什么是藍牙低功耗(BLE)9藍牙版本及 4.0 和BLE 的關系10藍牙的三種標志和設備類型11BLE 的體系結構12BLE

2、廣播、掃描和連接...3.廣播掃描連接..Profile、Service 、Characteristic 和 UUID17第二章:新建BLE 工程模板191.2.學習目的19新建BLE 工程模板..2.5.工程目錄19建立工程目錄、拷貝庫文件20新建工程20添加需要的庫文件25新建 main.c 文件并添加到工程。283.配置工程30..3.5.配置“Target”選項卡30配置“Output”選項卡31配置“C/C+”選項卡32配置“Linker”選項卡33配置“Debug”選項

3、卡344.協(xié)議?!癟arget”3..新建協(xié)議?!癟arget”36配置“Output”選項卡37配置“Debug”選項卡38防止協(xié)議棧丟失39第三章:實現BLE 基本功能4.學習目的41實現的功能41BLE 程序結構42編寫代碼434.1.日志打印4...Log 功能作用43加入 Log46Log 配置(UART 作為輸出終端)47Log 配置(RTT 作為輸出終端)484.2.初始化 APP 定時器524.2.1.APP 定時器作用5.2.3.加入APP 定時器初始化代碼53本節(jié)留下的

4、問題534.3.指示燈初始化5..3.指示燈作用54編寫指示燈初始化代碼54本節(jié)留下的問題5.初始化和運行電源管理55BLE 協(xié)議棧初始化5..3.初始化步驟56配置低頻時鐘62BLE 協(xié)議棧使能和內存配置644.6.配置 GAP 參數6...4.6.5.GAP 作用67GAP.68GAP 安全模式70GAP 服務71代碼編寫80.GATT 初始化82廣播初始化8..3.配置廣播數據和模式83編寫代碼85本節(jié)留下的問題874.9.服

5、務初始化8.9.2.初始化排隊寫入模塊87本節(jié)留下的問題884.10.連接參數協(xié)商初始化8.0.3.連接參數協(xié)商88連接參數協(xié)商模塊的參數和.89編寫代碼92.啟動廣播93實驗步驟94第四章:全面掌握廣播981.2.3.學習目的98基本概念和流程98廣播數據包報文結構9...前導100接入地址100報頭100長度102數據(AdvData)102校驗1044.5.廣播可以包含的數據104設備地址1055.1.公共地址1065.2.隨機地址10..3.隨機

6、靜態(tài)地址107不可私有地址110可私有地址1135.3.隨機靜態(tài)地址讀寫實驗1.3.2.代碼編寫113實驗步驟1145.4.設置私有地址實驗1.4.2.代碼編寫115實驗步驟1166.本地設備名稱1.使用本地名稱的步驟118廣播中加入設備名稱實驗1.2.2.代碼編寫119實驗步驟1207.外觀1.加入外觀的步驟122廣播中加入外觀實驗1.2.2.代碼編寫123實驗步驟1258.9.Flags126等級12.等級的定義127等級實驗127廣播中加入.2.2.代

7、碼編寫127實驗步驟12810.服務的 UUID129.10.3.UUID129加入服務UUID 的步驟130廣播中加入 UUID 列表實驗1330.3.2.代碼編寫133實驗步驟13411.服務數據136服務數據的定義136加入服務UUID 的步驟136加入服務數據實驗138...代碼編寫138實驗步驟13912.從設備連接間隔范圍140.12.3.從設備連接間隔范圍定義140加入從設備連接間隔范圍的步驟141廣播中加入從設備連接間隔范圍實驗142.3.2.代碼編寫143

8、實驗步驟14413.廠商自定義數據145.13.3.廠商自定義數據的定義145加入廠商自定義數據的步驟145廣播中加入廠商自定義數據實驗1473.3.2.代碼編寫147實驗步驟148第五章:創(chuàng)建定時任務150.學習目的150APP 定時器150使用APP 定時器151機創(chuàng)建定時任務實驗15....1.6.添加需要的文件155頭文件和路徑設置155工程配置156代碼編寫157硬件連接161實驗步驟1615.BLE 應用創(chuàng)建定時任務實驗16..3.代碼編寫162硬

9、件連接163實驗步驟163第六章:實現一個標準的Profile1651.2.學習目的165配置文件、服務和特征16.2.3.Profile(配置文件)165Service(服務)166Characteristic(特征) 和描述符1673.需求描述16. 170需求表和依據17.....7.廣播數據172廣播參數172首選連接參數和連接參數協(xié)商173GAP 服務173包含的服務174數據傳輸175皮膚接觸檢測狀態(tài)更新1784.代碼實現17...新建

10、文件和路徑設置178工程配置180廣播數據和廣播參數180首選連接參數和連接參數協(xié)商182GAP 服務183添加心率服務18...6.1.3.心率服務結構體185心率服務初始化結構體185定義心率服務實例186初始化心率服務1894.7.加入設備信息服務19..3.定義服務句柄變量196設備信息服務初始化結構體196初始化設備信息服務1975.數據和傳感器接觸狀態(tài)更新199心率測量特征通知199傳感器接觸狀態(tài)更新204驗證20.6.第十一章:固件更新(DFU)2097.1.學習目的209概述2091.1.

11、.DFU 功能的重要性209Nordic Secure DFU209相關術語、縮略詞2102.3.需要的工具軟件210操作步驟(詳細版)2.安裝 gcc-arm-none-eabi211安裝 MinGW2..3.安裝214配置環(huán)境變量216驗證安裝是否。. 2.工程中加入 micro-ecc 源碼218生成 micro_ecc_lib_nrf52.lib2.4.2.生成步驟218該步驟問題總結2203.5.安裝 python-2.72...安裝221

12、配置環(huán)境變量。224驗證安裝是否。. 225該步驟問題總結2263.6.安裝 pc-nrfutil 和生成 key22.6.2.安裝 pc-nrfutil226生成 private key 和 public key2273.7.編譯和燒寫 Bootloader22.7.2.編譯Bootloader228燒寫B(tài)ootloader22.升級文件打包229執(zhí)行DFU23.9.2.首次無線DFU231再次無線DFU2334.代碼的燒寫和合并23.生成 settings 和代碼的燒寫235使用 mergehex 合并燒寫23

13、65.BLE 串口透傳中加入DFU 服務23..5.5.需要加入的文件和的頭文件238工程配置239使能 logs241需要增加的代碼241該步驟問題總結246參考文獻247修訂歷史Revision Records日期Date版本Version編制Written By審核Checked By說明Explanation2018.10.27A強光手電飛宇以 SDK15.2 為基礎編寫B(tài)LE開發(fā)。第一章:藍牙 BLE 技術簡介1.學習目的1.本章的目的是為了讓讀者對低功耗藍牙技術有個大致的了解,尤其對于初次接觸低功耗藍牙的讀者,應當先對 BLE 有一個總體的了解,熟悉

14、BLE 的一些常用概念,這些基本的概念對于后續(xù)的編程很重要。通過本章,讀者應了解什么是單模和雙模、BLE 和藍牙 4.x 的區(qū)別以及藍牙 5.0 的三大特點等概念。2.2.藍牙技術的nl藍牙的創(chuàng)始人是瑞典愛立信公司。愛立信早在 1994 年就已進行研發(fā)。1997 年,愛立信與其他設備生產商,并激發(fā)了他們對該項技術的濃厚。l1998 年 2 月,5 個大公司,包括愛立信、諾基亞、IBM、東芝及 Intel 組成了一個l特殊小組(SIG),他們共同的目標是建立一個全球性的小范圍無線通信技術,即現在的藍牙。藍牙技術是以 10 世紀的一位丹麥國王命名的?!八{牙(Bluetooth)”一詞來源于 10

15、世紀的丹麥國王Harald Blåtand(英文姓名為 HaroldnBluetooth)。這位國王將四分五裂的局面統(tǒng)一起來的行為,與這種傳輸技術將各種設備無線連接起來,有相似的地方。為了紀念他,SIG 將的無線技術取名“藍牙”。2.1. 什么是藍牙低功耗(BLE)BLE 是藍牙低功耗的簡稱(Bluetooh Low Energy)。藍牙低功耗(BLE)技術是低成本、短距離、可互操作的魯棒性無線技術,工作在免就設計為超低功耗(ULP)無線技術。它利用許多智能l 低成本,低功耗。l 快速啟動,瞬間連接。最快 3ms 低延遲。l 傳輸距離的提高。的 2.4GHz ISM 射頻頻段。它從一

16、開始最大限度地降低功耗。l 高安全性。使用 AES-128 加密算法進行數據報加密認證。藍牙低功耗在短距離無線通信領域占據著越來越重要的地位,在很多應用場合均可見到藍牙低功耗的身影:l 醫(yī)療和健康設備,如血糖儀、數字血壓計、血氣計、心率監(jiān)視器、數字體溫計等。l 運動休閑,如心率監(jiān)測儀、體溫計、計步器、節(jié)拍器、測高儀等。l 鼠標、鍵盤、。l Beacons。l 智能家居,如燈光全性解決方案。、溫度、濕度、安全鎖、門窗的低功耗、高安2.2. 藍牙版本及 4.0 和 BLE 的關系藍牙技術: (Bluetooth Special Interest Group, SIG),是藍牙規(guī)格版本及藍牙技術的管

17、理者,本身不負責具體的藍牙主要的版本:的設計和生產等。藍牙技術的發(fā)展經歷了下面幾個1.2.3.藍牙 1.0:基本碼率,Basic Rate,BR。藍牙 2.0:增強碼率,Enhanced Data Rata,EDR。藍牙 3.0:引入全新的交替射頻技術(AMP:Alternate MAC/PHY),藍牙協(xié)議棧針對任一任務動態(tài)地選擇正確射頻,通過瞬間使用消費者設備中已存在的輔助無線電提供更快的吞吐量。藍牙 4.0 是第一個綜合性規(guī)范,其加入了全新的藍牙低功耗技術,即藍牙 4.0 集三種規(guī)格于一體,最重要的特點就是省電,可以使一粒紐扣電池連續(xù)工作數年。4.圖 1-1:藍牙 4.0 技術規(guī)范藍牙 4

18、.0 包括三個子規(guī)范,即傳統(tǒng)藍牙技術、高速藍牙技術和新的藍牙低功耗技術。BLE是藍牙 4.0 的一部分。最常見的兩種藍牙規(guī)格:BR/EDR 和BLE。5.藍牙 4.2 提升了 BLE 數據傳輸速度,支持長包傳輸,單個數據包最大可傳輸 255 個字節(jié)。同時了隱私保護程度。6.藍牙 5.0 相對于藍牙 4.2,具有 2 倍的數據速率、4 倍的覆蓋范圍和 8 倍的廣播能力。l 高速模式:支持 2Mbps 數據速率,實現了數據吞吐量翻倍。l 遠距模式:通過 500kbps 和 125kbps 速率的全新編碼物理層 (PHY) 實現遠距離覆蓋。l 廣播擴展:藍牙 BLE 有 3 個廣播信道,之前的藍牙

19、BLE 版本中廣播載荷通過全部三個廣播通道進行,藍牙 5.0 中這三個通道僅用于指針,顯示載荷的時間和地點,廣播載荷僅在一個數據通道上傳輸一次。2.3. 藍牙的三種標志和設備類型1.藍牙的三種標志(Logo)為了更好地區(qū)分藍牙的版本,SIG 發(fā)布了三種標志用于人們分辨這三個版本之間的區(qū)別和兼容性,圖 1-2:藍牙的三種標志Bluetooth Smart Ready:適用于任何雙模藍牙 4.0 的電子,如蘋果公司4Sl及以后的和安裝了安卓 4.3 以上的系統(tǒng),并且藍牙支持 4.0 的。Bluetooth Smart:單模設備,如智能手環(huán)。標準Bluetooth:傳統(tǒng)藍牙設備,如用于傳輸語音的藍牙

20、耳機。ll2.設備類型低功耗藍牙分為單模(Bluetooth Smart)和雙模(Bluetooth Smart Ready)兩種設備: 單模設備:只支持藍牙低功耗 (BLE),如用 nRF51822 開發(fā)的藍牙設備即為單模設備, 單模設備對低功耗的要求很高。雙模設備:既支持傳統(tǒng)藍牙也支持藍牙低功耗,這兩種技術使用同一個射頻前端和天線,雙模設備一般都有足夠的供電能力,對低功耗的要求不高。ll圖 1-3:典型的單模和雙模設備兼容性l圖 1-4:單模和雙模設備的兼容性雙模設備之間:可以通過 LE 通信,也可以通過傳統(tǒng)藍牙通信;雙模設備和單模設備通過 LE 通信;雙模設備和傳統(tǒng)藍牙通過傳統(tǒng)藍牙通信。

21、單模設備之間:通過 LE 通信。傳統(tǒng)藍牙:通過傳統(tǒng)藍牙通信。單模設備和傳統(tǒng)藍牙:不能通信。lll2.4. BLE 的體系結構藍牙低功耗包含三個部分:器、主機和應用程序。圖 1-5:BLE 體系結構1.l物理層(Physical Layer)調制方式:GFSK,高斯頻移鍵控。工作在 2.4GHz ISM 頻段。頻率范圍:2.400-2.4835 GHzISM 頻段:(Industrial Scientific Medical Band)主要是開放給工業(yè)、科學和醫(yī)用 3 個主要ll機構使用的頻段。ISM 頻段屬于無(Free License)頻段。2.4G ISM 頻段是唯一一個在所有都無需的頻段

22、,只需要遵守一定的即可。我們熟知的無線局域網、藍牙、ZigBee 等無線網絡,均可工作在 2.4GHz ISM 頻段上。2.4G 被劃分為 40 個RF 信道(f=2402+k*2 MHz, k=0, ,39),信道間隔 2MHz,其中: 廣播信道:3 個,固定。數據信道:37 個,自適應跳頻。無線速率:1Mbps、2Mbps。ll2.鏈路層(LL)鏈路層負責廣播、掃描、建立和維護連接,以及確保數據包按照正確的方式組織、正確地校驗值和加密序列等。1)鏈路層狀態(tài)機圖 1-6:鏈路層狀態(tài)機鏈路層設備有 5 種狀態(tài):l 就緒態(tài):上電后,鏈路層進入并保持就緒態(tài),直到接收到主機態(tài),處于其它狀 態(tài)下都可以

23、進入到此狀態(tài)。令。狀態(tài)機的中心狀l 廣播態(tài):廣播報文和掃描響應。l 掃描態(tài):偵聽廣播設備。l 發(fā)起態(tài):發(fā)起連接。l 連接態(tài):唯一一個用到數據信道的狀態(tài),兩個設備只有在連接態(tài)中才能互相傳送數據。鏈路層可能同時存在多個鏈路,同時擁有多個成為主從機。的狀態(tài)機,但是鏈路層永遠不能同時鏈路層狀態(tài)機有助于我們清晰相關概念,如設備上電后,他不可能直接進入到連接態(tài),必須由廣播態(tài)或發(fā)起態(tài)才能進入到連接態(tài)。² 需要特別注意的是:這里說的是鏈路層的狀態(tài)機,而不是整個系統(tǒng)的。2)鏈路層信道圖 1-7: 鏈路層信道廣播信道:37 、38、39,對應的中心頻率是 2402MHz,2426MHz,2480MHz。

24、廣播信道之間至少相差 24MHz。每次廣播,都會在 3 個信道上將廣播數據一次,這能有效地避免干擾,即使一個信道存在干擾,另外的信道也可以很好地工作,而三個信道同時的情況極少。擾² 為什么廣播信道是 3 個,而不是?廣播信道越多,各個信道同時受到干擾的幾率越小性越強。但是廣播信道越多,發(fā)射數據占用的時間就越長,功耗也就越高。所以,在綜合考慮SIG 將廣播設定為 3 個。性和功耗的情況下,3.主機主機器接口(HCI)器接口HCI(Host controller interface)在 Host 和Controller 之間提供一個標準化的接口,該層可以由應用程序接口 API 實現或者使

25、用硬件接口UART、SPI 或 USB 來。器通過 HCI數據和給主機,主機通過HCI命令和數據給器。4.l邏輯鏈路和適配協(xié)議(L2CAP)L2CAP 層向上層提供數據封裝服務,從而使邏輯上端到端的數據通信。L2CAP 提供可復用,分割和重組的面向連接或者無連接的數據服務。L2CAP 數據包可l以達到 64K。L2CAP每個 L2CAP 通道流控和重傳。5.安全管理層(SM)安全管理層 SM(Security Manager)提供配對和密鑰的分發(fā)。6.屬性協(xié)議(ATT)屬性協(xié)議(ATT)規(guī)定了怎樣去對端設備的數據,數據在屬性服務器的“屬性”里,供屬性客戶端進行讀寫操作。7.通用屬性配置文件(G

26、ATT)通用屬性配置文件(GATT)建立在屬性協(xié)議的基礎上,GATT 通過使用 ATT 協(xié)議層定義了如何發(fā)現與使用服務、特征和描述符的標準方法。nl客戶端與服務器架構:GATT 定義了兩個:服務器和客戶端。服務器:客戶端提供數據服務,就是數據中心??蛻舳耍簭姆掌髯x寫應用數據,就是數據者。l²特別注意:下面三個概念是完全的,他們是不同的層。如主機既可以是GATT客戶端,也可以是 GATT 服務器。而從機也一樣,既可以是 GATT 客戶端,也可以是GATT 服務器。服務器:客戶端提供數據服務,就是數據中心。客戶端:從服務器讀寫應用數據,就是數據者。l主機、從機:設備、層。設備:GAP

27、定義的l。l8.通用配置文件(GAP)GAP 層負責處理設備的接入方式和過程,包括設備發(fā)現,鏈路建立,鏈路終止以及實現綁定。9.應用層應用層定義了三種種類型:特征(characteristic)、服務(service)和配置文件(profile)。特征:采用已知格式、以通用唯一識別碼(UUID)作為表示的一個小塊數據,由于特征要求能夠重復使用,因而設計時沒有涉及行為,特征被定義為計算機的可讀格式,當l計算機遇到一個從未接觸過的特征時,計算機可以去更新這個特征的規(guī)則,從而正確特征,并向用戶展示的特征。服務:服務是人類可讀的一組特征及其相關的行為規(guī)范,只定義了位于服務器上的相關特性和行為,而不定義

28、客戶端的行為。服務有兩種類型,首要服務和次要服務,一個服務是首要服務還是次要服務取決于服務的定義,首要服務表征一個給定的設備主要做些什么。正是通過這些服務,用戶才了解到該設備是做什么的。次要服務是那些協(xié)助主要業(yè)務或其他次要服務的服務。l配置文件:是用例或應用的最終體現。配置文件是描述一個或多個設備的說明,每一個設備提供一個或多個服務,配置文件描述了如何發(fā)現和連接設備,從而為每臺設備確定了拓展結構,配置文件還描述的客戶端的行為,用于發(fā)現服務和服務特性。l2.5. BLE 廣播、掃描和連接2.5.1.廣播l 通用廣播:最常用的廣播方式,可以被掃描,接收到連接請求時可以作為從設備進入一個連接。l 定

29、向廣播:于快速建立連接的需求,定向廣播會占滿整個廣播信道,數據凈荷只包含廣播者和發(fā)起者地址,發(fā)起者收到發(fā)給的定向廣播后,會立即連接請求。l 不可連接廣播:廣播數據,而不進入連接態(tài)。l 可發(fā)現廣播:不可連接,但可以響應掃描。BLE 廣播間隔:是指兩次廣播之間的最小時間間隔,一般取值范圍在 20ms-10.24S之間,鏈路層會在每次廣播時間期間產生一個隨機廣播延時時間(0ms-10ms)。2.5.2.掃描每次掃描,設備打開間參數掃描窗口和掃描間隔:去廣播設備,這稱為一個掃描,掃描有兩個時l 掃描窗口(scan window):一次掃描進行的時間寬度。l 掃描間隔(scan interval):兩個

30、連續(xù)的掃描窗口的起始時間之間的時間差,包括掃描休息的時間和掃描進行的時間。圖 1-8:掃描間隔和掃描窗口2.5.3.連接接是指主設備和從設備之間相互數據包的過程。ll 所有的都是通過連接來完成。l 每個發(fā)生在某個數據通道(036)。接中,主從設備依靠連接交換數據。ll 設備連接后,無論有無數據收發(fā),連接直到一方停止響應。都在按照設置的連接參數周而復始的進行著,l 主機與從機可在單次連接進行多次數據傳輸。圖 1-9:連接1)l連接參數連接間隔:必須是 1.25ms 的倍數,范圍是從最小值 6(7.5ms)到最大值 3200(4.0s)。間隔參數包括兩個 16 位的值,第一個為最小連接間隔,第二個

31、為最大連接間隔。從機延遲:這個參數描述了從機跳過連接的次數。這使設備具有一定的靈活性,l如果它不具有任何數據傳送,它可以選擇跳過連接,并保持睡眠,從而提供了一些積蓄力量。這一決定取決于設備。之間間隔的最大值。如果超過這個時間還未出現成監(jiān)督超時:這是兩個的連接l功的連接,那么設備將會考慮失去連接,返回一個未連接狀態(tài)。這個參數值使用10ms 的步進(10ms 的倍數)。監(jiān)督超時時間從最小 10(100ms)到最大 3200(32.0s)。同時超時時間必須大于有效連接。2)連接參數和功耗、傳輸速度的關系不同的應用也許需要不同的連接間隔,一個長時間的連接間隔將會節(jié)約的能量,因為設備可以在兩個連接之間睡

32、眠更長的時間。但是他會導致數據不及時,如果有數據要那么他只能夠在下一次連接到來時才能被。表 1-1:連接參數和功耗、傳輸速度的關系2.6. Profile、Service 、Characteristic 和 UUID1.profile(配置文件)profile 是 Service 的集合,它是預定義的,并不是實際存在于設備中,所以在設備的代碼中,我們看不到 profile 的實現代碼。Profile 分為標準的和自定義的,標準的 profile短連接間隔高功耗,高數據吞吐量,等待時間短。長連接間隔低功耗,低數據吞吐量,等待時間長。低或者 0 潛伏值從機在沒有數據的情況下高功耗,從機可以快速的收

33、到主機的數據。高潛伏值從機在沒有數據的情況下可以低功耗;從機無法及時收到主機的數據,但主機收到從機的數據。是由 SIG 定義和發(fā)布的,如心率 profile、防丟 profile,自定義的 profile 是由開發(fā)者定如義,如 SDK 中的藍牙串口透傳的 profile。標準的 profile 可以在 SIG 的下:https:/specifications/gatt上查到,一個 profile 文件可以包含一個或者多個服務,如心率 profile 包含了Heart Rate Service(心率服務)和 Device Information Service(設備信息服務),從 SIG上心率

34、profile,打開后可以看到心率傳感器服務需求表格,由表中可以看到心率 profile 規(guī)定必須包含HeartRate Service 和Device Information Service。M:強制要求的。2.Service(服務)服務是一組特征和它們公開的行為的集合,一個服務可以包含一個或多個特性。Service也分為標準的和自定義的,標準的 Service 是由 SIG 定義和發(fā)布的,如心率 Service、防丟Service,自定義的 Service 是由開發(fā)者定義,如 SDK 中的藍牙串口透傳的 Service。標準的 Service 可以在SIG 的上查到(同 profile)。

35、3.Characteristic(特征)特征是具有特定意義的數值,如心率、溫度值等等。BLE 主從機之間的數據傳輸實際傳輸的就是特征值。4.UUIDUUID(Universally Unique Identifier)是一個 128 位的數字,用來標志屬性的類型。Service和 Characteristic 都是一種屬性,都需要一個唯一的UUID 來標識。既然UUID 是 128 位的數字,那么為什么有 16 位的 UUID? 因為128 位的UUID 相當長,設備間為了識別數據的類型需要長達16 字節(jié)的數據。為了提高傳輸效率,藍牙技術(SIG)定義了一個“UUID 基數”,結合一個較短的

36、16 位數使用。二者仍然遵循通用唯一識別碼的分配規(guī)則,只不過在設備間傳輸常用的 UUID 時,只較短的 16 位版本,接收方收到后補上藍牙 UUID 基數即可。第二章:新建 BLE 工程模板1.學習目的藍牙BLE 工程模板是學習 NORDIC 藍牙BLE 程序開發(fā)的切入點,BLE 工程模板完成了 Nordic BLE 程序開發(fā)的基本框架,功能類似于一個 BLE 的“最小系統(tǒng)”。通過本章的新建BLE 工程模板,我們需要了解和掌握以下內容:1.2.3.了解BLE 工程的建立過程和配置項目。了解對于一個基本的 BLE 工程,需要加入哪些文件以及這些文件在工程中的分組。掌握利用 MDK 新建協(xié)議?!癟

37、arget”的方法,建立協(xié)議?!癟arget”后,即可使用 MDK協(xié)議棧 HEX 文件。(該方式不僅可以載其他 HEX 文件均可參考此方法)。協(xié)議棧 HEX 文件,如需要使用 MDK 下2.新建BLE 工程模板2.1.工程目錄和 機新建工程一樣,在建立工程之前,我們需要先考慮一下工程文件的組織,也就是工程文件在計算機中的存放目錄。清晰的工程目錄既方便我們管理工程中的各個文件,也方便日后的維護和移植,我們可以根據的習慣和喜好來建立的工程目錄,但是也不要太隨意,文件目錄應該一目了然,目錄中各個文件夾的名字要能準確地指示里面的內容。下面是我們建立工程時使用的工程目錄,供大家參考,其中:nnApp 文

38、件夾:用于存放 main.c 文件和我們Project 文件夾:編寫的應用程序文件。l Config 文件夾:用于存放工程配置向導(sdk_config.h)。l mdk5 文件夾:用于存放工程文件。doc 文件夾:用于存放說明之類的文檔。components、integration、modules 等:從SDK 中拷貝的庫文件。nn圖 2-1:工程存放目錄2.2. 建立工程目錄、拷貝庫文件按照上文中描述的工程目錄新建用于存放工程各個模塊的文件夾。先在 D 盤新建一個名字為 ble_app_templete 的文件夾,然后在這個文件夾下面新建 3 個名字分別為 project、doc 和 ap

39、p 的文件夾,之后在 project 文件夾里面再新建 config 和 mdk5 兩個文件夾,其中 config 文件夾用于存放工程配置向導(sdk_config.h),mdk5 文件夾用于存放工程文件。之后,解壓 SDK.15.2,并將需要的庫文件(包含 components、integration、modules 和external 文件)拷貝到BLE 工程模板目錄下,如下圖所示。圖 2-2:拷貝庫文件2.3. 新建工程建立工程存放文件夾和拷貝庫文件之后,我們就可以開始建立工程了。工程名取為:ble_app_templete_s132(這樣取名是為了符合 Nordic 的 SDK 命名規(guī)

40、則, 其中 ble 表示這是一個ble 的工程,app 表示應用程序,templete 表示模板,s132 表示使用的協(xié)議棧是 s132),工程存放到 D 盤 ble_app_templete 文件夾。1.啟動 MDK,點擊【Project】,在彈出的下拉菜單中選擇【New uVision Project】。圖 2-3:新建工程窗口2.設置工程名和工程保存路徑,設置完成后點擊【保存】。²工程路徑和工程名設置注意事項:工程路徑和工程名不能包含漢字字符(雖然有些計算機使用漢字字符沒有問題,但是還是建議不要使用漢字字符,因為 MDK 對漢字字符的支持比較差),同時路徑不要過深,否則打開工程

41、或時可能會出現問題。圖 2-4:設置工程路徑和工程名保存后,工程名稱是:ble_app_templete_s132,工程保存路徑是:“ble_app_templeteprojectmdk5 ble_app_templete_s132”。3.保存工程后,會彈出器件選擇窗口,選擇好器件后點擊【確定】。開發(fā)板上使用的 nRF52832 型號是:nRF52832-QFAA,所以,在下圖的器件列表中需要選擇這個型號。選中器件后,右邊的文本框中會顯示該器件的描述信息。圖 2-5:選擇器件4.配置 RTE(Run-Time Environment),選擇完成后點擊【OK】。勾選兩個必選項:CMSIS 中的C

42、ORE 和DEVICE 中的 StartUp。注意他們的版本號,SDK版本不一樣,對應的 CMSIS 和 StartUp 版本號可能會不一樣,本文使用的 SDK 版本是SDK15.2,SDK15.2 對應的 CORE 版本是 4.5.0,StartUp 版本是 8.17.0。下圖中,我們可以看到CORE 的版本只能選擇 5.0.1,StartUp 版本只能選擇 8.17.0,這是因為安裝MDK5.23 時會自動安裝 5.0.1 的 CORE,而 MDK 新建工程時只會顯示已安裝的最新的 CORE 和 StartUp 版本,所以,這里只能選擇這兩個版本。工程建立好了之后,我們可以在工程配置中修改

43、,以保持和 SDK15.2 一致,后面在工程配置章節(jié)會說明修改方法。圖 2-6:配置 RTE² 注意事項:再次說明一下,新建工程配置 RTE 時,對于 CORE 和 StartUp,MDK 會自動選擇最新的版本,在這個步驟我們直接選擇最新版本,后面配置工程時再根據需要修改為需求的版本即可。5.管理 MDK 工程目錄。主要是添加組(也就是在 MDK 中添加文件夾)、修改組名稱和軟件包(pack),目的是為了目錄清晰,方便添加文件和管理文件。這里我們使用的工程目錄是參考 SDK 里面的 BLE工程的,這么做的好處是和 SDK 保持一致,以方便我們閱讀 SDK 里面的參考代碼。圖 2-7:

44、整理工程目錄1)l整理目錄時會用到下面幾個操作:修改組名稱:先選中需要修改名稱的組,然后單擊即可修改名稱。注意,不是雙擊。添加組:選中 Target(即整理后的目錄中的 IK-52832DK),右鍵選中“Add Group”,即可添加一個組。調整組的順序(如果組中添加了文件,也可以在這里調整文件的順序)。點擊工程項目管理圖標ll圖 2-8:打開工程項目管理窗口按照下圖所示根據件的順序。的習慣調整組的順序,如果組中添加了文件,也可以調整組中文圖 2-9:調整組的順序2)管理軟件包:這里不需要過多操作,我們可以在這修改 StartUp 的版本和選擇是否自動使用安裝的最新的軟件包。設置是否自動使用安

45、裝的最新的軟件包:勾選“Use latest versions of all installed Software Packs”即可打開自動使用安裝的最新的l軟件包,不勾選即可以使用指定的版本。l 修改 StartUp 和 CORE 的版本:如我們的計算機中安裝了 Nordic nRF5x 幾個版本的器件包,就會顯示多個版本的器件包,因為 SDK15.2 使用的CMSISI 版本是 4.5,器件包版本是 8.17.0,所以我們要選擇 CMSIS 的版本是 4.5,器件包的版本是 8.17.0,同時去掉自動選擇最新版本的勾選,如下圖所示。點擊下圖所示的圖標,打開軟件包管理窗口。圖 2-10:打開

46、軟件包管理窗口圖 2-11:修改 StartUp 和 CORE 的版本這里設置下面 3 項,這么設置是為了讓我們建立的工程使用確定的軟件版本,這樣就可以避免因為自動最新版本引起問題的風險。l 關閉自動使用最新的軟件包功能。l CMSIS 版本設置為 4.5.0,并設置版本fixed。l pack 版本設置為 8.17.0,并設置版本fixed。2.4. 添加需要的庫文件1.Board Definition 組“Board Definition”組中需要加入板卡定義文件“boards.c”,該文件于具體板卡,主要要用來定義板卡的指示燈、按鍵、IO 輸出電壓(僅 nRF52840 具有此功能)以及

47、常用的操作函數。對于 IK-52832DK 開發(fā)板(兼容 Nordic 的 PCA10040),設計了 4 個指示燈和按鍵,在“boards.c”文件中,我們可以看到這些按鍵和指示燈的初始化函數以及一些基本功能如點亮、熄滅、翻轉的操作函數。表 2-1:“Board Definition”組中加入的文件2.Board Support 組“Board Support”組加入的是板卡支持包文件,即 BSP 文件,主要用于實現指示燈和按鍵的驅動,如下表所示。表 2-2:“Board Support”組中加入的文件3.UTF8/UTF16 converter 組“UTF8/UTF16 converter

48、”組只需加入一個實現 UTF8/UTF16 編碼轉換的文件,如下表所示。表 2-3:“UTF8/UTF16 converter”組中加入的文件4.nRF_BLE 組“nRF_BLE”組加入的是 BLE 相關的庫文件,如廣播、連接參數協(xié)、配對管理等等,“nRF_BLE”組中加入的文件如下表所示。表 2-4:“nRF_BLE”組中加入的文件文件名路徑ble_advdata.c. componentsblecommonble_conn_params.c. componentsblecommonble_conn_state.c. componentsblecommonmon.c. componentsblecommonble_advertising.c. componentsbleble_advertisingnrf_ble_gatt.c. componentsblenrf_ble_gattnrf_ble_qwr.c. componentsblenrf_ble_qwr文件名路徑utf.c. externalutf_converter文件名路徑bsp.c. components

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論