九九热最新网址,777奇米四色米奇影院在线播放,国产精品18久久久久久久久久,中文有码视频,亚洲一区在线免费观看,国产91精品在线,婷婷丁香六月天

歡迎來到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁 裝配圖網(wǎng) > 資源分類 > DOC文檔下載  

由淺入深藍(lán)牙4.0BLE協(xié)議棧開發(fā)攻略大全5

  • 資源ID:31545463       資源大?。?span id="24d9guoke414" class="font-tahoma">2.90MB        全文頁數(shù):52頁
  • 資源格式: DOC        下載積分:10積分
快捷下載 游客一鍵下載
會(huì)員登錄下載
微信登錄下載
三方登錄下載: 微信開放平臺(tái)登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要10積分
郵箱/手機(jī):
溫馨提示:
用戶名和密碼都是您填寫的郵箱或者手機(jī)號(hào),方便查詢和重復(fù)下載(系統(tǒng)自動(dòng)生成)
支付方式: 支付寶    微信支付   
驗(yàn)證碼:   換一換

 
賬號(hào):
密碼:
驗(yàn)證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會(huì)被瀏覽器默認(rèn)打開,此種情況可以點(diǎn)擊瀏覽器菜單,保存網(wǎng)頁到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無水印,預(yù)覽文檔經(jīng)過壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標(biāo)題沒有明確說明有答案則都視為沒有答案,請知曉。

由淺入深藍(lán)牙4.0BLE協(xié)議棧開發(fā)攻略大全5

本系列教程將結(jié)合TI推出的CC254x SoC 系列,講解從環(huán)境的搭建到藍(lán)牙4.0協(xié)議棧的開發(fā)來深入學(xué)習(xí)藍(lán)牙4.0的開發(fā)過程。教程共分為六部分,本文為第五部分:第五部分知識(shí)點(diǎn):第二十一節(jié) DHT11溫濕度傳感器第二十二節(jié) 藍(lán)牙協(xié)議棧之從機(jī)通訊第二十三節(jié) 藍(lán)牙協(xié)議棧主從一體之主機(jī)通訊第二十四節(jié) OAD空中升級(jí)第二十五節(jié) SBL串口升級(jí)有關(guān)TI 的CC254x芯片介紹,可點(diǎn)擊下面鏈接查看:主流藍(lán)牙BLE控制芯片詳解(1):TI CC2540同系列資料推薦:由淺入深,藍(lán)牙4.0/BLE協(xié)議棧開發(fā)攻略大全(1)由淺入深,藍(lán)牙4.0/BLE協(xié)議棧開發(fā)攻略大全(2)由淺入深,藍(lán)牙4.0/BLE協(xié)議棧開發(fā)攻略大全(3)由淺入深,藍(lán)牙4.0/BLE協(xié)議棧開發(fā)攻略大全(4)有關(guān)本文的工具下載,大家可以到以下這個(gè)地址:朱兆祺ForARM第二十一節(jié) DHT11溫濕度傳感器DHT11簡介DHT11數(shù)字溫濕度傳感器是一款含有已校準(zhǔn)數(shù)字信號(hào)輸出的溫濕度復(fù)合傳感器,它應(yīng)用專用的數(shù)字模塊采集技術(shù)和溫濕度傳感技術(shù),確保產(chǎn)品具有極高的可靠 性和卓越的長期穩(wěn)定性。傳感器包括一個(gè)電阻式感濕元件和一個(gè)NTC測溫元件,并與一個(gè)高性能8位單片機(jī)相連接。因此該產(chǎn)品具有品質(zhì)卓越、超快響應(yīng)、抗干擾 能力強(qiáng)、性價(jià)比極高等優(yōu)點(diǎn)。每個(gè)DHT11傳感器都在極為精確的濕度校驗(yàn)室中進(jìn)行校準(zhǔn)。校準(zhǔn)系數(shù)以程序的形式存在OTP內(nèi)存中,傳感器內(nèi)部在檢測型號(hào)的處 理過程中要調(diào)用這些校準(zhǔn)系數(shù)。單線制串行接口,使系統(tǒng)集成變得簡易快捷。超小的體積、極低的功耗,使其成為給類應(yīng)用甚至最為苛刻的應(yīng)用場合的最佳選擇。產(chǎn) 品為4針單排引腳封裝,連接方便。技術(shù)參數(shù)供電電壓: 3.35.5V DC輸 出: 單總線數(shù)字信號(hào)測量范圍: 濕度20-90%RH, 溫度050測量精度: 濕度+-5%RH, 溫度+-2分 辨 率: 濕度1%RH,溫度1互 換 性: 可完全互換 ,長期穩(wěn)定性: < 1%RH/年DHT11 數(shù)字濕溫度傳感器采用單總線數(shù)據(jù)格式。即,單個(gè)數(shù)據(jù)引腳端口完成輸入輸出雙向傳輸。其數(shù)據(jù)包由 5Byte(40Bit)組成。數(shù)據(jù)分小數(shù)部分和整數(shù)部分,一次完整的數(shù)據(jù)傳輸為40bit,高位先出。DHT11 的數(shù)據(jù)格式為:8bit 濕度整數(shù)數(shù)據(jù)+8bit 濕度小數(shù)數(shù)據(jù)+8bit 溫度整數(shù)數(shù)據(jù)+8bit 溫度小數(shù)數(shù)據(jù)+8bit 校驗(yàn)和。其中校驗(yàn)和數(shù)據(jù)為前四個(gè)字節(jié)相加。傳感器數(shù)據(jù)輸出的是未編碼的二進(jìn)制數(shù)據(jù)。數(shù)據(jù)(濕度、溫度、整數(shù)、小數(shù))之間應(yīng)該分開處理。例如,某次從 DHT11 讀到的數(shù)據(jù)如圖所示:協(xié)議棧DHT11測試打開DHT11Example工程,我們在啟動(dòng)事件中對DHT11進(jìn)行初始化。如果初始化失敗則說明沒有接傳感器。然后在定時(shí)事件中定時(shí)的讀取溫濕度的值。并將結(jié)果通過UART顯示到PC端。從其中可以看到當(dāng)前的溫度為29攝氏度,濕度為30%,往傳感器器哈一口氣可以看到溫濕度都上升了。第二十二節(jié) 藍(lán)牙協(xié)議棧之從機(jī)通訊之前都是外圍模塊的驅(qū)動(dòng)程序,這一節(jié)開始,我們進(jìn)入藍(lán)牙4.0協(xié)議棧的核心部分,從機(jī)通訊的程序設(shè)計(jì)。接下來的章節(jié)是藍(lán)牙4.0協(xié)議棧最為核心的程序設(shè)計(jì)部分。前面的大都是外圍器件的實(shí)驗(yàn),這節(jié)我們介紹藍(lán)牙通訊中從機(jī)的角色,從機(jī)的主要工作是對外廣播,接受主機(jī)的連接,并且接受主機(jī)發(fā)送過來的數(shù)據(jù)。這里介紹兩個(gè)函數(shù):bStatus_t GAPRole_SetParameter( uint16 param, uint8 len, void *pValue );這個(gè)函數(shù)主要是用來配置從機(jī)的一些參數(shù),第一個(gè)參數(shù)表示需要配置哪個(gè)參數(shù),例如我們需要時(shí)能從機(jī)廣播,則需要這樣調(diào)用:uint8 initial_advertising_enable = TRUE;GAPRole_SetParameter( GAPROLE_ADVERT_ENABLED, sizeof( uint8 ), &initial_advertising_enable );第二個(gè)函數(shù)是特征值改變時(shí)的回調(diào)函數(shù),當(dāng)主機(jī)給從機(jī)發(fā)送數(shù)據(jù)時(shí),從機(jī)就會(huì)回調(diào)這個(gè)函數(shù)來告知應(yīng)用層有數(shù)據(jù)送達(dá)。static void simpleProfileChangeCB( uint8 paramID );在低功耗藍(lán)牙中,數(shù)據(jù)的傳輸是通過特征值的讀寫來實(shí)現(xiàn)的。BLE協(xié)議棧的GATT層用于應(yīng)用程序在兩個(gè)連接設(shè)備之間的數(shù)據(jù)通信的。從GATT層的角度看,當(dāng)設(shè)備連接后,將充當(dāng)一下兩種角色中的一個(gè):GATT Client 從GATT服務(wù)器讀/寫數(shù)據(jù)的設(shè)備。GATT Server 包含客戶端需要讀/寫的數(shù)據(jù)的設(shè)備。重要的是要注意,GATTClient和Server 的角色完全獨(dú)立于BLE的鏈路層的 slave和master的角色,或GAP層peripheral和central的角色。一個(gè)slave 可以是GATT Client或GATT Server,一個(gè)master同樣可以是GATT Client或GATT Server。 一個(gè)GATT Server可以有多個(gè)完成一個(gè)特定的功能或特性GATT Server組成。在SimpleBLEPeripheral應(yīng)用程序中有三個(gè)GATT服務(wù):Mandatory GAP Service:這個(gè)服務(wù)包含設(shè)備和訪問信息,比如設(shè)備名稱、供應(yīng)商和產(chǎn)品標(biāo)識(shí)。Mandatory GATT Service :這個(gè)服務(wù)包含有關(guān)服務(wù)UUID相關(guān)信息。SimpleGATTProfile Service這個(gè)服務(wù)是一個(gè)示例配置文件,供測試和演示。Profile簡介為了更容易的保持Bluetooth 設(shè)備之間的兼容,Bluetooth規(guī)范中定義了 Profile。Profile 定義了設(shè)備如何實(shí)現(xiàn)一種連接或者應(yīng)用,你可以把 Profile 理解為連接層或者應(yīng)用層協(xié)議。Bluetooth 的一個(gè)很重要特性,就是所有的 Bluetooth 產(chǎn)品都無須實(shí)現(xiàn)全部的 Bluetooth 規(guī)范,你可根據(jù)所需要的產(chǎn)品實(shí)現(xiàn)需要的Profile,不必給開發(fā)帶來更大的開銷。這就是說當(dāng)需要利用藍(lán)牙提供數(shù)據(jù)傳輸功能時(shí)就必須建立對應(yīng)的 Profile,TI的BLE協(xié)議棧為我們提供了部分Profile,其中一部分是非標(biāo)準(zhǔn)的Profile。其中非標(biāo)準(zhǔn)的有 SimpleGATTProfile和SimpleKeysProfile,我們將通過對這兩個(gè)Profile的介紹及實(shí)驗(yàn)來了解Profile的特性和 使用。每個(gè) Profile 初始化其響應(yīng)的服務(wù)和內(nèi)部寄存器。GATT 服務(wù)器將整個(gè)服務(wù)加到屬性表中,并為每個(gè)屬性分配唯一的句柄。 GATTProfile用于存儲(chǔ)和處理GATT服務(wù)器中的數(shù)據(jù)。在下面的實(shí)驗(yàn)中需要用到的都是我們自己新建的Profile,即非標(biāo)準(zhǔn)的Profile。 其中主要要注意Profile、UUID、handle、CharacteristicValues。SimpleGATTProfile及Btool的使用SimpleGATTProfile中包含5個(gè)特征值,每一個(gè)的屬性都不同:SimpleGATTProfile 特征值屬性:Btool是PC端工具,使用特定的HCI命令與CC2540通信,PC端需要通過串口或 USB 連接 CC2540,CC2540 使用 HostTestRelease 工程,硬件可以使用 USBDongle(對應(yīng)CC2540USB)或我們提供的USBDongle。USBDongle連接從機(jī)使用饅頭科技有限公司的USBDongle,燒寫HostTestRelease固件,連接電腦后就可以用Btool軟件來連接從機(jī)設(shè)備。將從機(jī)工程編譯下載到開發(fā)板,連接串口到PC端,我們通過串口來觀察設(shè)備的運(yùn)行,運(yùn)行后可以看到設(shè)備處于廣播。這是我們插入U(xiǎn)SBDongle到電腦,可以看到識(shí)別到一個(gè)串口插入,如圖,這就是USBDongle用CDC的方式實(shí)現(xiàn)的串口。打開Btool,按左圖配置,可以看到右圖的信息,這是說明Btool已經(jīng)識(shí)別到了USBDongle。Btool的界面可以分為4個(gè)區(qū):1. 設(shè)備信息展示2. 歷史記錄3. 設(shè)備控制4. 連接信息確保周圍存在設(shè)備可發(fā)現(xiàn),點(diǎn)擊Discover/Connect標(biāo)簽的scan按鈕,CC2540 就會(huì)進(jìn)行10s的掃描過程,在這期間可通過Cancle按鈕停止掃描。可以看到,我們周邊有兩個(gè)設(shè)備,其中一個(gè)就是我們的開發(fā)板,根據(jù)串口輸出的信息我們知道我們設(shè)備的地址是0X7C669D9F6297,下面我們點(diǎn)擊establish來連接我們的開發(fā)板。連接后可以看到兩邊都同時(shí)顯示了連接信息。開發(fā)板輸出連接:Btool連接的設(shè)備信息:特征值的讀寫接下來我們用Btool對SimpleProfile 進(jìn)行使用操作。剛剛我們已經(jīng)列出了SimpleProfile中的各個(gè)特征值。使用UUID讀取特征值,CHAR1具有讀寫屬性,這里對 SimpleProfile 的第一特征值 CHAR1進(jìn)行讀取操作,UUID 為0xfff1。選擇 Read/Write 選項(xiàng)頁并選擇 ReadUsing Characteristic UUID 功能,在Characteristic UUID選項(xiàng)填入f1:ff(高字節(jié)在前),點(diǎn)擊Read按鈕。讀取特征值成功:下面對此特征值進(jìn)行寫入操作,寫入操作必須使用Handle值進(jìn)行,而無法使用UUID來操作,那CHAR1的Handle值的什么呢?其實(shí)剛剛在我們讀取CHAR1的值的時(shí)候就已經(jīng)獲取到了它的Handle。如圖,CHAR1的Handle為0x0025。CHAR1的Handle值:下面我們通過這個(gè)Handle對CHAR1寫入十進(jìn)制的10,如圖,我們寫入成功了。寫入成功:在SimpleBLEPeripheral設(shè)備的串口輸出中可以看到設(shè)備提示CHAR1的值變?yōu)榱?0。下面來驗(yàn)證我們是否成功的將CHAR1改為了10,按照剛剛讀取CHAR1的步驟,重新讀取CHAR1的值。CHAR1的值改為了10:第二十二節(jié) 藍(lán)牙協(xié)議棧之從機(jī)通訊(下)#e#藍(lán)牙點(diǎn)燈上面我們已經(jīng)能夠成功的改寫一個(gè)特征值,那我們是不是可以通過發(fā)送特定的值來控制一個(gè)燈的亮滅呢?答案是肯定的。下面我們來實(shí)現(xiàn)這個(gè)功能。從機(jī)工程已經(jīng)有5個(gè)特征值了,我們現(xiàn)在增加一個(gè)特征值來控制燈的亮滅。那我們該如何來添加特征值呢?特征值的管理是在profile中實(shí)現(xiàn)的。所以我們需要對profile進(jìn)行修改。(1)修改simpleGATTProfile.h在simpleGATTProfile.h中可以看到現(xiàn)在定義的5個(gè)特征值的標(biāo)示符和UUID,我們添加一個(gè)1Byte的特征值來控制燈的亮滅。因?yàn)閟impleGATTProfile是共用的文件,為了不影響其它工程,我們使用一個(gè)宏來控制新增加的屬性。接下來我們需要修改simpleGATTProfile.c,這個(gè)文件需要修改的地方較多,下面我們一步一步來修改。(2)添加UUID(3)添加屬性(4)屬性表(5)屬性設(shè)置操作(6)屬性獲取操作(7)屬性讀操作(8)屬性寫操作Profile的改造完成后,我們將這個(gè)宏打開,配置工程。接著我們在staticvoid simpleProfileChangeCB( uint8 paramID )函數(shù)的switch中加入CHAR6的判斷即可。編譯燒錄后,按照我們前面說的在Btool中對FFF6的UUID進(jìn)行讀寫操作即可實(shí)現(xiàn)對LED的控制。第二十三節(jié) 藍(lán)牙協(xié)議棧之主機(jī)通訊隨著藍(lán)牙4.0模塊的大量使用,為了很多從未接觸過藍(lán)牙的工程師也能快速便捷地開發(fā)藍(lán)牙項(xiàng)目或者使用藍(lán)牙,主從一體、遠(yuǎn)控IO等等特性也成為藍(lán)牙模塊必 備的條件。其實(shí),聯(lián)合第二十一節(jié)和本節(jié)(第二十二節(jié)),我們就能將一個(gè)本無固件的裸片藍(lán)牙,使其開發(fā)為具備主從一體功能的藍(lán)牙模塊。這兩節(jié)的內(nèi)容,也是本 連載篇的重點(diǎn)部分之一。上一節(jié)我們對從機(jī)的工作流程有了一個(gè)整體的把握。我們現(xiàn)在接著來看主機(jī)的工作流程。主機(jī)的工作主要是掃描設(shè)備,對發(fā)現(xiàn)的設(shè)備發(fā)起連接,然后就是對特征值的讀寫操作了。手動(dòng)連接從機(jī)的對外廣播是在初始化的時(shí)候完成的,那主機(jī)的掃描是在哪里開始的呢?閱讀源碼可以發(fā)現(xiàn)主機(jī)的操作都在按鍵處理中完成的。主機(jī)通過五向按鍵中的五個(gè)按鍵實(shí)現(xiàn)不同的功能。static void simpleBLECentral_HandleKeys( uint8 shift, uint8 keys )(void)shift; / Intentionally unreferenced parameterif ( keys & HAL_KEY_UP ) / 向上/ Start or stop discoveryif ( simpleBLEState != BLE_STATE_CONNECTED ) / 如果沒有連接,開始掃描if ( !simpleBLEScanning )simpleBLEScanning = TRUE;simpleBLEScanRes = 0;LCD_WRITE_STRING( “Discovering.?!保?HAL_LCD_LINE_1 );LCD_WRITE_STRING( “”, HAL_LCD_LINE_2 );GAPCentralRole_StartDiscovery( DEFAULT_DISCOVERY_MODE,DEFAULT_DISCOVERY_ACTIVE_SCAN,DEFAULT_DISCOVERY_WHITE_LIST );elseGAPCentralRole_CancelDiscovery();else if ( simpleBLEState = BLE_STATE_CONNECTED && / 如果連接并且發(fā)現(xiàn)Handle進(jìn)行讀寫操作simpleBLECharHdl != 0 &&simpleBLEProcedureInProgress = FALSE )uint8 status;/ Do a read or write as long as no other read or write is in progressif ( simpleBLEDoWrite )/ Do a writeattWriteReq_t req;req.handle = simpleBLECharHdl;req.len = 1;req.value0 = simpleBLECharVal;req.sig = 0;req.cmd = 0;status = GATT_WriteCharValue( simpleBLEConnHandle, &req, simpleBLETaskId );else/ Do a readattReadReq_t req;req.handle = simpleBLECharHdl;status = GATT_ReadCharValue( simpleBLEConnHandle, &req, simpleBLETaskId );if ( status = SUCCESS )simpleBLEProcedureInProgress = TRUE;simpleBLEDoWrite = !simpleBLEDoWrite;if ( keys & HAL_KEY_LEFT ) / 左/ Display discovery resultsif ( !simpleBLEScanning && simpleBLEScanRes > 0 ) / 顯示掃描到的設(shè)備/ Increment index of current result (with wraparound)simpleBLEScanIdx+;if ( simpleBLEScanIdx >= simpleBLEScanRes )simpleBLEScanIdx = 0;LCD_WRITE_STRING_VALUE( “Device”, simpleBLEScanIdx + 1,10, HAL_LCD_LINE_1 );LCD_WRITE_STRING( bdAddr2Str( simpleBLEDevListsimpleBLEScanIdx.addr ),HAL_LCD_LINE_2 );if ( keys & HAL_KEY_RIGHT ) / 右/ Connection updateif ( simpleBLEState = BLE_STATE_CONNECTED ) / 如果連接,則更新連接GAPCentralRole_UpdateLink( simpleBLEConnHandle,DEFAULT_UPDATE_MIN_CONN_INTERVAL,DEFAULT_UPDATE_MAX_CONN_INTERVAL,DEFAULT_UPDATE_SLAVE_LATENCY,DEFAULT_UPDATE_CONN_TIMEOUT );if ( keys & HAL_KEY_CENTER ) / 中間鍵uint8 addrType;uint8 *peerAddr;/ Connect or disconnectif ( simpleBLEState = BLE_STATE_IDLE ) / 空閑則連接/ if there is a scan resultif ( simpleBLEScanRes > 0 )/ connect to current device in scan resultpeerAddr = simpleBLEDevListsimpleBLEScanIdx.addr;addrType = simpleBLEDevListsimpleBLEScanIdx.addrType;simpleBLEState = BLE_STATE_CONNECTING;GAPCentralRole_EstablishLink( DEFAULT_LINK_HIGH_DUTY_CYCLE,DEFAULT_LINK_WHITE_LIST,addrType, peerAddr );LCD_WRITE_STRING( “Connecting”, HAL_LCD_LINE_1 );LCD_WRITE_STRING( bdAddr2Str( peerAddr ), HAL_LCD_LINE_2 );else if ( simpleBLEState = BLE_STATE_CONNECTING | / 連接則斷開連接simpleBLEState = BLE_STATE_CONNECTED )/ disconnectsimpleBLEState = BLE_STATE_DISCONNECTING;gStatus = GAPCentralRole_TerminateLink( simpleBLEConnHandle );LCD_WRITE_STRING( “Disconnecting”, HAL_LCD_LINE_1 );if ( keys & HAL_KEY_DOWN ) / 下/ Start or cancel RSSI pollingif ( simpleBLEState = BLE_STATE_CONNECTED ) / 連接則讀取RSSi的值if ( !simpleBLERssi )simpleBLERssi = TRUE;GAPCentralRole_StartRssi( simpleBLEConnHandle, DEFAULT_RSSI_PERIOD );elsesimpleBLERssi = FALSE;GAPCentralRole_CancelRssi( simpleBLEConnHandle );LCD_WRITE_STRING( “RSSI Cancelled”, HAL_LCD_LINE_1 );因?yàn)閺臋C(jī)一直處于廣播狀態(tài),所以秩序?qū)⑸弦还?jié)中的從機(jī)程序燒錄進(jìn)開發(fā)板即可,然后將主機(jī)程序燒錄到另外一快開發(fā)板,通過五向按鍵來實(shí)現(xiàn)和從機(jī)的連接和讀寫功能。(1) 上電提示從機(jī)上電提示:主機(jī)上電提示:(2)根據(jù)主機(jī)的按鍵功能,我們按“UP”鍵,開始搜索周邊設(shè)備。搜索完成后,可以看到,掃描到了一個(gè)設(shè)備。(3)接著我們查看掃描到的設(shè)備地址,按左鍵。可以看到掃描到的設(shè)備地址為0x7C669D9F638A。這個(gè)地址正是我們的從機(jī)地址。(4)按中間鍵連接從機(jī),可以看到主機(jī)提示連接成功,從機(jī)也提示連接成功。(5)接著我們開始讀取從機(jī)的RSSI值,按下鍵。(6)再次按下鍵,取消RSSI值的讀取。(7)對從機(jī)的CHAR1進(jìn)行讀寫,再次按上鍵讀取到CHAR1的值為1。(8)接著按上鍵,對CHAR1寫入0,同時(shí)看到從機(jī)提示CHAR1的值被修改為0。主機(jī)寫入成功:從機(jī)提示CHAR1被改變:上電自動(dòng)連接上一節(jié)中我們通過五向按鍵實(shí)現(xiàn)了主機(jī)連接從機(jī)的功能,這一節(jié)中們來實(shí)現(xiàn)主機(jī)上電后自動(dòng)搜索連接從機(jī)。要實(shí)現(xiàn)連接,從機(jī)必須處于廣播狀態(tài),剩下的工作全部由主機(jī)完成,掃描、發(fā)起連接。主機(jī)的狀態(tài)也有回調(diào)函數(shù),主機(jī)啟動(dòng)后,第一個(gè)狀態(tài)是初始化,所以我們在初始化完成時(shí)開始掃描,這樣開機(jī)后主機(jī)就會(huì)開始掃描周邊設(shè)備,接下來我們在掃描完成后對掃描到的設(shè)備發(fā)起連接。將工程編譯下載后通過串口助手觀察主機(jī)和從機(jī)的輸出可以發(fā)現(xiàn)主機(jī)上電后自動(dòng)的完成了一系列的操作。第二十四節(jié) OAD空中升級(jí)通過仿真器更新程序或者通過USB更新固件那都是一般人都可以實(shí)現(xiàn)的操作,但是要想實(shí)現(xiàn)OAD空中升級(jí),這還是需要一定的技術(shù)能力。這一節(jié)我就帶著大家完善這一能力。OADn air download,指空中下載模式。當(dāng)我們的產(chǎn)品發(fā)布以后,有時(shí)需要對固件進(jìn)行升級(jí),OAD是升級(jí)方式中的一種。配置BIM(Boot Image Manger)打開IAR,打開BLE-CC254x-1.4.0下的工程C:TexasInstrumentsBLE-CC254x-1.4.0ProjectsbleutilBIMcc254xBIM.eww,然后編譯,下載到開發(fā)板中。配置Image A打開OADExample工程,配置工程,添加如下幾個(gè)宏FEATURE_OAD_BIMHAL_IMAGE_AFEATURE_OADOAD_KEEP_NV_PAGES(1) 打開simplePeripheral.c找到宏定義DEFAULT_ENABLE_UPDATE_REQUEST,將其改為FLASE。否則會(huì)影響B(tài)LEDevice Monitor對其進(jìn)行空中升級(jí),到時(shí)可以再改回來。(2) IAR左側(cè)導(dǎo)航中找到Profile文件夾,點(diǎn)擊右鍵添加oad_target.c和oad_target.h兩個(gè)文件,二文件位于 C:TexasInstrumentsBLE- CC254x-1.4.0ProjectsbleProfilesOAD中。(3) 在IAR導(dǎo)航中找到 HALTargetMT254xboardDriver,右鍵添加文件hal_crc.c,該文件位于C:TexasInstruments BLE-CC254x-1.4.0ComponentshaltargetMT254xboard中。(4) 在剛才的simplePeripheral.c文件中,找到simplePeripheral_Init()函數(shù),在里面添加OADTarget_AddService()函數(shù)。(5) 在simplePeripheral.c的前面,添加引用OAD的頭文件,OAD.h和OAD_target.h。(6) 點(diǎn)擊ProjectOption,或直接按Alt+F7,選擇BuildActions,在Post-buildcommand line中添加:“$PROJ_DIR$。commoncc2540cc254x_ubl_pp.bat”“$PROJ_DIR$” “ rodUBL”“$PROJ_DIR$CC2540-OAD-ImgAExeOADExample”注意,各雙引號(hào)之間只有一個(gè)空格。注意圖中紅框標(biāo)的部分,Image_A是和之前第1步對應(yīng)的。(7) 點(diǎn)擊ProjectOption,或直接按Alt+F7,選擇Linker,選擇Config,Linker Configurationfile中勾選Override default,添加C:TexasInstrumentsBLE-CC254x-1.4.0Projectsblecommon cc2540cc254x_f256_imgA.xcl。(8) 點(diǎn)擊ProjectOption,或直接按Alt+F7,選擇Linker,選擇Extra Output。(9) Extra Option添加Hex文件的輸出。(10) 點(diǎn)擊OK,編譯下載,如果出現(xiàn)如下錯(cuò)誤,是因?yàn)槲覀兪褂玫氖荌AR8051 8.30版本,如果你使用的是IAR8.20版本就沒有這問題。(11) 這個(gè)問題是因?yàn)槭褂昧颂摂M寄存器導(dǎo)致的,我們找到如下文件。(12) 對文件的115行進(jìn)行如下修改,將虛擬寄存器注釋掉。(13) 編譯后,可以看到我們生成的文件(14) 我們將hex文件疊加到BIM后面這樣ImageA就成功燒錄進(jìn)開發(fā)板了。配置Image B(1) 方法如Image A,其它要注意的幾個(gè)地方:點(diǎn)擊ProjectOption,或直接按Alt+F7,選擇C/C+Compiler,選擇Preprocessor,將Defined symbols中的HAL_IMAGE_A改成B。(2) 點(diǎn)擊ProjectOption,或直接按Alt+F7,選擇Linker,選擇Config,將Linker Configuration file中的文件改為B。(3) 保存后編譯,同樣的可以看到生成的文件。(4) 為了區(qū)分A和B鏡像,我們將最終結(jié)果改名??罩猩?jí)有了bin文件就可以進(jìn)行空中升級(jí)了,打開BLE Device Monitor(沒有安裝的需要安裝),打開后軟件會(huì)自動(dòng)掃描設(shè)備,如圖,我們掃描到了開發(fā)板。(2) 連接后,打開OAD(3) 點(diǎn)擊file,選擇Progame(OAD),選擇生成的bin文件,可以看到我們當(dāng)前運(yùn)行的是A固件(4) 點(diǎn)擊start,當(dāng)進(jìn)行到100%,就完成了固件空中升級(jí)。(5) 升級(jí)后再次打開OAD選項(xiàng),可以看到選擇運(yùn)行的固件已經(jīng)是B版本的了。注意:要把 BLE協(xié)議棧BLE-CC254x-1.4.0 安裝在C盤,在其他盤符下沒有生成bin文件。第二十五節(jié) SBL串口升級(jí)SBL升級(jí)和OAD升級(jí)的配置步驟都是一樣的,主要是配置的參數(shù)不一樣,下面我們來配置一個(gè)SBL升級(jí)的固件。配置SBL打開IAR,打開BLE-CC254x-1.4.0下的工程C:TexasInstrumentsBLE-CC254x-1.4.0ProjectsbleutilSBLiarcc254xsbl.eww,然后編譯,下載到開發(fā)板中。配置Bin文件(1) 添加宏MAKE_CRC_SHDWFEATURE_SBLOAD_KEEP_NV_PAGES(2) 添加build選項(xiàng)“$PROJ_DIR$。commoncc2540cc254x_ubl_pp.bat”“$PROJ_DIR$” “ProdUBL” “$PROJ_DIR$MT254xboardExeSBLExample”(3) Config選項(xiàng)(4) Extra Output選項(xiàng)(5) 保存編譯(6) 打開串口升級(jí)軟件SerialBootTool.exe,選擇SBLExample.bin文件。(7) Load Image這樣我們的SBL固件就制作完畢了。

注意事項(xiàng)

本文(由淺入深藍(lán)牙4.0BLE協(xié)議棧開發(fā)攻略大全5)為本站會(huì)員(仙***)主動(dòng)上傳,裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng)(點(diǎn)擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因?yàn)榫W(wǎng)速或其他原因下載失敗請重新下載,重復(fù)下載不扣分。




關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!