在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

面向 Bluetooth Smart 應(yīng)用的低功耗無線 MCU

電子設(shè)計 ? 來源:網(wǎng)友電子設(shè)計發(fā)布 ? 作者:網(wǎng)友電子設(shè)計發(fā)布 ? 2021-12-29 14:32 ? 次閱讀

CC2640 R2是德州儀器推出的一款面向 Bluetooth Smart 應(yīng)用的低功耗無線 MCU。該芯片集成有Cortex M3內(nèi)核,可以運(yùn)行TI的BLE協(xié)議棧,具有功耗低,外設(shè)種類豐富,射頻性能好等特點(diǎn)。與CC2640相比,R2版本的芯片將部分協(xié)議棧遷移到了片內(nèi)的ROM中,留給客戶的應(yīng)用程序更多的Flash空間。CC2640R2芯片架構(gòu)及核心特點(diǎn)如下圖1所示。

而CC2640R2F本身集成有可以支持藍(lán)牙5.0的PHY,TI協(xié)議棧支持部分藍(lán)牙5.0的協(xié)議,如High speed,Long Range等等?;贑C2640R2F可以實(shí)現(xiàn)很多炫酷的應(yīng)用。不過有時候,有些應(yīng)用并沒有按鍵或者屏幕等輸入設(shè)備,要求APP輸入密碼與BLE從機(jī)配對后方可讀取BLE設(shè)備的數(shù)據(jù),這篇文章就跟大家詳細(xì)聊聊如何用用戶自定義的密碼進(jìn)行配對。

本文所使用的軟硬件平臺如下:

IDE環(huán)境 IAR 8.11.2
藍(lán)牙協(xié)議棧版本 1_50_00_62
實(shí)驗(yàn)所用工程 .\examples\rtos\CC2640R2_LAUNCHXL\bleapps\hid_emu_kbd
硬件平臺 LAUNCHXL-CC2640R2
手機(jī)Android版本 4.4.4
手機(jī)IOS版本 11.3.1

本文是以hid_emu_kbd例程為參考。其他工程比如SimpleBLEPeripheral或者其他,都可以參照這個來修改。HID設(shè)備對BLE來說比較特殊,BLE的HID profile是規(guī)定HID設(shè)備必須配對和綁定的。

下圖是配對和綁定的基本流程。Initiator是連接中的主設(shè)備,responder是連接中的從設(shè)備。

BLE的配對與綁定則發(fā)生在連接之后。綁定是在配對之后發(fā)生的事,需不需要綁定取決于用戶在代碼里的設(shè)置。

上圖的phase 1和phase2是配對的過程。Phase 3是綁定的過程。要不要進(jìn)行phase 3,在phase 1發(fā)送配對請求的時候就已經(jīng)決定了,這個決定就是用戶在代碼里面的配置。

如果要用戶在配對過程中人為輸入密碼或進(jìn)行其他認(rèn)為操作,是在phase 2。而具體的誤認(rèn)為操作方式,也是在phase 1中決定,這個決定也是用戶在代碼里面的配置。其實(shí)phase 2能用到的配對有很多種方式,最簡單的就是just works的方式,用大家都知道的000000作為配對密碼,這個方式很不安全,非常容易被破解。其實(shí)BLE到了4.2以上的版本,已經(jīng)有了用DH(Diffie–Hellman key exchange)方式交換密碼,這個方式已經(jīng)很安全,且密碼也是隨機(jī)產(chǎn)生的。

有些應(yīng)用場景可能需求比較特殊,產(chǎn)品需要自定義的配對密碼,所以要達(dá)到這個目的,就需要我們靈活配置配phase 1中的各個參數(shù),這也是這篇文章的目的。

我們繼續(xù)以hid_emu_kbd為例,BLE配對phase 1所需要的幾個重要參數(shù)的配置在hidemukbd.c里,如下:

第一個關(guān)鍵參數(shù)是PAIRING_MODE,配對是由GAPBOND_PAIRING_MODE_INITIATE一端發(fā)起的,可以是主機(jī),也可以是從機(jī)。本文中由手機(jī)(手機(jī))發(fā)起配對請求,從機(jī)(CC2640R2)則被動等待,所以需要將宏定義配置為GAPBOND_PAIRING_MODE_WAIT_FOR_REQ。

第二個關(guān)鍵參數(shù)是MITM_MODE,MITM即Man In The Middle保護(hù),如果MITM為FALSE,則說明不需要人參與中間,后面相應(yīng)的IO capabilities設(shè)置也會被忽略,但是為了使配對需要Passcode才能成功,必須要把MITM_MODE的宏定義設(shè)置為TRUE。

第三個關(guān)鍵參數(shù)是IO_CAPABILITIES,表示本機(jī)是否有輸入或者顯示的功能,比如GAPBOND_IO_CAP_DISPLAY_ONLY,表示可以將密碼顯示在屏幕上給操作人看,如果有I/O接口可以輸入密碼,也可以選擇GAPBOND_IO_CAP_KEYBOARD_ONLY。本文中將I/O capabilities的屬性設(shè)置為GAPBOND_IO_CAP_DISPLAY_ONLY,如下:

這樣做的目的就是告訴主機(jī),我這邊能顯示配對密碼,最終用戶作為MITM,需要在主機(jī)那邊(手機(jī)上)跳出的窗口里輸入我從機(jī)這邊顯示的配對密碼就行。到這一步,phase 2要用的配對的方式就確定好了。但是這樣設(shè)置的話從機(jī)這邊顯示的密碼是隨機(jī)產(chǎn)生的6位數(shù),并不是我們想要的自定義的固定6位數(shù)。

×注意,即使實(shí)際的從設(shè)備產(chǎn)品不帶顯示功能(沒屏幕),IO_CAPABILITIES配置成GAPBOND_IO_CAP_DISPLAY_ONLY,也是可以的,前提就是用自定義的固定6位數(shù)作為配對密碼,不然就會導(dǎo)致產(chǎn)生的6位隨機(jī)數(shù)沒地方顯示,就會無法完成配對。

接下來就來設(shè)置固定的6位數(shù)配對密碼來達(dá)到我們的目的。

CC2640R2的修改方式CC2541不同,CC2541可以參考這個帖子:https://e2echina.ti.com/question_answer/wireless_connectivity/bluetooth/f/103/t/112619

首先看一下哪里設(shè)置這個自定義配對密碼passcode的6位數(shù)。CC2640R2的這個Passcode隱藏的比較深,在bcomdef.h里,把宏定義改成你自己需要的密碼就可以了。這里設(shè)置成123412,注意這個密碼必須是6位。

那么這個默認(rèn)自定義passcode是怎么被用上的呢?

首先,就是要在初始化的時候注冊bond manager的回調(diào):

這個回調(diào)的HidDev_PasscodeCB()就是處理passcode請求的回調(diào)函數(shù)。

當(dāng)配對的phase 2被配置成前面提到的方式時,配對過程會觸發(fā)passcode請求,就會調(diào)用HidDev_passcodeCB()。最終會觸發(fā)HidDev_processPasscodeEvt():

所以可以看到,只要其中pHidDevCB->passcodeCB這個回調(diào)為NULL,那么就會使用默認(rèn)自定義密碼,這樣就能達(dá)到目的。(如果這個回調(diào)不為NULL,那么就會調(diào)用這個回調(diào)來獲取密碼,那很有可能是應(yīng)用層用戶手動輸入密碼或者其他方式。)

pHidDevCB這個回調(diào)是在應(yīng)用層用戶自己初始化的:

第三個回調(diào)函數(shù)就是passcodeCB,這個修改為NULL。

這個回調(diào)結(jié)構(gòu)體是在HidDev_Register()被調(diào)用,并初始化給pHidDevCB指針的。

修改完了,為了調(diào)試的方便,我們把斷開連接后自動廣播打開,在IAR開發(fā)環(huán)境中,右擊工程 -> Options -> C/C++ Compiler -> Preprocessor中Define Symbols里,把AUTO_ADV的值改為TRUE。

如果是用iPhone作為主機(jī)的話,有幾個連接參數(shù)要改一下,不然iOS會拒絕連接參數(shù)更新請求。

下面到了見證奇跡的時刻,拿出你的手機(jī),以iPhone為例,由于是HID的工程,可以用iPhone自帶的藍(lán)牙界面:(如果不是HID工程,iOS上的lightblue app或者TI的sensorTag app都能做演示)

搜索到設(shè)備:

點(diǎn)擊搜索到的HID Keyboard,這樣會發(fā)起連接請求,自動跳出密碼框:

輸入正確的預(yù)設(shè)6位密碼123412并點(diǎn)擊配對:

配對成功連接建立完成:

如果輸入密碼錯誤,那么會連接建立失敗,重新回到最初界面:

為了加深理解,我們可以從空中抓包的log來看一下過程。下圖是配對成功后,連接進(jìn)行加密:

那么可以看到加密以后的數(shù)據(jù)就都是紅的,這是因?yàn)閟niffer沒法解析了,通過MITM方式配對是比較安全的模式。

那么如果iPhone上密碼輸入錯誤,非指定密碼,CC2640R2就會直接回復(fù)Pairing Failed給iPhone:

iPhone就會立即斷開連接:

最后,靈活運(yùn)用前面提到過的配對參數(shù)搭配,能達(dá)到不同的配對場景效果。我們這里只是舉了一個例子,讀者有興趣的話可以自己嘗試一下各種搭配,這樣對理解BLE的安全機(jī)制也會很有幫助。

審核編輯:何安

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • mcu
    mcu
    +關(guān)注

    關(guān)注

    146

    文章

    17691

    瀏覽量

    357786
  • 嵌入式處理
    +關(guān)注

    關(guān)注

    0

    文章

    341

    瀏覽量

    10227
收藏 人收藏

    評論

    相關(guān)推薦

    樂鑫ESP32-H4:支持 802.15.4 和 Bluetooth 5.4 (LE) 的低功耗 SoC

    5.4(LE)技術(shù)的新一代SoC在功耗、連接性能和內(nèi)存擴(kuò)展能力方面均進(jìn)行了顯著升級,能夠滿足市場對低功耗無線設(shè)備日益增長的需求。ESP32-H4的推出也標(biāo)志著樂鑫在自研
    的頭像 發(fā)表于 04-24 18:08 ?158次閱讀
    樂鑫ESP32-H4:支持 802.15.4 和 <b class='flag-5'>Bluetooth</b> 5.4 (LE) 的<b class='flag-5'>低功耗</b> SoC

    AG32 MCU 如何進(jìn)入低功耗模式

    AG32 MCU 如何進(jìn)入低功耗模式 AG32系列32位微控制器旨在為MCU用戶提供新的自由度和豐富的兼容外設(shè),以及兼容的引腳和功能。AG32系列產(chǎn)品提供卓越的品質(zhì),穩(wěn)定性和卓越的價格
    發(fā)表于 04-21 11:29

    低功耗MCU軟件設(shè)計技巧與選型

    低功耗MCU(微控制器)憑借其極低的功耗和高效的能量管理能力,正在快速滲透到多個新興領(lǐng)域,尤其在物聯(lián)網(wǎng)(IoT)、可穿戴設(shè)備、智能家居和醫(yī)療電子等領(lǐng)域展現(xiàn)出巨大的應(yīng)用潛力,國內(nèi)超低功耗
    的頭像 發(fā)表于 04-12 17:19 ?263次閱讀
    超<b class='flag-5'>低功耗</b><b class='flag-5'>MCU</b>軟件設(shè)計技巧與選型

    低功耗藍(lán)牙和經(jīng)典藍(lán)牙,到底怎么選?

    Bluetooth Smart兩者又有什么區(qū)別?我的應(yīng)用到底該選經(jīng)典藍(lán)牙技術(shù)還是低功耗藍(lán)牙技術(shù)?這是很多剛接觸藍(lán)牙技術(shù)的人經(jīng)常碰到的問題。 首先,在2010年以前,當(dāng)我們談?wù)撍{(lán)牙的時候,就是在說經(jīng)典藍(lán)牙,因?yàn)?/div>
    的頭像 發(fā)表于 04-07 16:01 ?321次閱讀
    <b class='flag-5'>低功耗</b>藍(lán)牙和經(jīng)典藍(lán)牙,到底怎么選?

    ?nRF54L05/nrf54系列—超低功耗無線 SoC 支持4Mbps速率

    nRF54L05與nRF54L15和nRF54L10共同組成了nRF54L系列。nRF54L系列中的所有無線SoC均集成了超低功耗多協(xié)議2.4GHz無線電和MCU(微控制器單元)功能,
    發(fā)表于 03-25 11:26

    低成本的低功耗MCU

    內(nèi)置24位ADC的MCU,需要低功耗,怎么找不到低于5元的呢?大家有嗎?
    發(fā)表于 02-13 22:13

    SiWx917 Wi-Fi6 SoC低功耗無線連接解決方案

    SiliconLabs (芯科科技)的SiWx917 Wi-Fi6 SoC是一款低功耗無線連接解決方案,非常適合需要 Wi-Fi 6、低功耗藍(lán)牙(Bluetooth LE)5.4、Ma
    的頭像 發(fā)表于 12-23 09:15 ?761次閱讀

    三款低功耗MCU,實(shí)現(xiàn)應(yīng)用產(chǎn)品的耐久續(xù)航力

    三款低功耗MCU,實(shí)現(xiàn)應(yīng)用產(chǎn)品的耐久續(xù)航力 低功耗MCU是趨勢所在 低功耗可說是MCU芯片重
    發(fā)表于 12-13 10:44

    基于Bluetooth低功耗技術(shù)的定位跟蹤方案

    隨著藍(lán)牙低功耗(BluetoothLow Energy,簡稱BLE)技術(shù)發(fā)展到5.2及更高版本,其中最重要的進(jìn)步之一就是定位跟蹤技術(shù),該技術(shù)可在室內(nèi)用于資產(chǎn)的移動和定位跟蹤。
    的頭像 發(fā)表于 11-14 09:39 ?594次閱讀
    基于<b class='flag-5'>Bluetooth</b><b class='flag-5'>低功耗</b>技術(shù)的定位跟蹤方案

    Simplelink? CC3301 Wi-Fi 6和低功耗Bluetooth? M.2插入卡

    電子發(fā)燒友網(wǎng)站提供《Simplelink? CC3301 Wi-Fi 6和低功耗Bluetooth? M.2插入卡.pdf》資料免費(fèi)下載
    發(fā)表于 11-08 13:51 ?0次下載
    Simplelink? CC3301 Wi-Fi 6和<b class='flag-5'>低功耗</b><b class='flag-5'>Bluetooth</b>? M.2插入卡

    Simplelink? CC3301 Wi-Fi 6和低功耗Bluetooth? BoosterPack?插件模塊(BP-CC3301)

    電子發(fā)燒友網(wǎng)站提供《Simplelink? CC3301 Wi-Fi 6和低功耗Bluetooth? BoosterPack?插件模塊(BP-CC3301).pdf》資料免費(fèi)下載
    發(fā)表于 11-07 10:15 ?0次下載
    Simplelink? CC3301 Wi-Fi 6和<b class='flag-5'>低功耗</b><b class='flag-5'>Bluetooth</b>? BoosterPack?插件模塊(BP-CC3301)

    【BearPi-Pico H3863星閃開發(fā)板體驗(yàn)連載】星閃超低功耗SLE透傳功能測試

    。BLE(Bluetooth Low Energy)是藍(lán)牙低功耗技術(shù),適用于低功耗、低時延的應(yīng)用,如鍵鼠、耳機(jī)等。 SLE(StarFlash Low Energy)是星閃低功耗技術(shù),
    發(fā)表于 10-25 22:23

    ST NPI 專區(qū) | 新上架產(chǎn)品【STM32WB09KEV7TR】

    STM32WB09xx32位MCU無線系列:Bluetooth低功耗5.4STM32WB09xx是輕量級、高性價比Bluetooth
    的頭像 發(fā)表于 08-13 08:27 ?505次閱讀
    ST NPI 專區(qū) | 新上架產(chǎn)品【STM32WB09KEV7TR】

    藍(lán)牙模塊選經(jīng)典藍(lán)牙還是低功耗藍(lán)牙?

    energy和Bluetooth smart兩者又有什么區(qū)別?我的應(yīng)用應(yīng)該選經(jīng)典藍(lán)牙技術(shù)還是低功耗藍(lán)牙技術(shù)?首先,在2010年以前,當(dāng)我們談?wù)撍{(lán)牙的時候,就是在說的經(jīng)典藍(lán)牙,因?yàn)槟莻€時候還沒有
    的頭像 發(fā)表于 05-23 17:57 ?1815次閱讀
    藍(lán)牙模塊選經(jīng)典藍(lán)牙還是<b class='flag-5'>低功耗</b>藍(lán)牙?

    TIDA-020032-汽車門禁低功耗 Bluetooth? + CAN衛(wèi)星模塊 PCB layout 設(shè)計

    電子發(fā)燒友網(wǎng)站提供《TIDA-020032-汽車門禁低功耗 Bluetooth? + CAN衛(wèi)星模塊 PCB layout 設(shè)計.pdf》資料免費(fèi)下載
    發(fā)表于 05-17 18:12 ?0次下載
    TIDA-020032-汽車門禁<b class='flag-5'>低功耗</b> <b class='flag-5'>Bluetooth</b>? + CAN衛(wèi)星模塊 PCB layout 設(shè)計
    主站蜘蛛池模板: 日日夜夜狠狠 | 五月天丁香婷婷网 | 色妞色综合久久夜夜 | 美女黄频 | 日本大片黄色 | xxx性欧美 | 毛片a区| 久草在线免费资源站 | 国产一区二区三区免费大片天美 | 亚洲男人的天堂成人 | 三级网址在线观看 | 爽死你个放荡粗暴小淫视频 | 天堂69亚洲精品中文字幕 | semimi亚洲综合在线观看 | 欧洲性开放大片免费观看视频 | 手机看片日韩福利 | 欧美经典三级春潮烂漫海棠红 | 国产欧美日韩va | 美女国产精品 | 97福利影院 | 国产色窝 | 日本黄色美女视频 | 91久久青草精品38国产 | 五月婷婷综合激情网 | 日本边添边爱边摸边做边爱 | 4338×亚洲全国最大色成网站 | 色视频网| 天天拍夜夜添久久精品中文 | 亚洲精品卡1卡二卡3卡四卡 | 久久久久久夜精品精品免费啦 | 青草国内精品视频在线观看 | 欧美网站在线 | 久久伦子沙发 | 亚洲精品久久久久久婷婷 | 久久99爰这里有精品国产 | 色视频在线免费 | 三级理论在线播放大全 | 久久精品国产99国产精品澳门 | 1000部啪啪未满十八勿入 | 性生大片一级毛片免费观看 | 一女被多男玩很肉很黄文 |