開發(fā)人員需要滿足各個市場對支持藍(lán)牙的便攜式多傳感器設(shè)計的快速增長需求;但尋找有效解決方案一直是個挑戰(zhàn)。為了把握稍縱即逝的機(jī)會,除了滿足對超低功耗性能的基本要求之外,他們還必須能夠在設(shè)備到云端的物聯(lián)網(wǎng) (IoT) 應(yīng)用中快速開發(fā)原型、評估和定制這類設(shè)計,這一點(diǎn)至關(guān)重要。
本文將介紹來自 ON Semiconductor 的超低功耗藍(lán)牙處理器片上系統(tǒng) (SoC),并展示該 SoC 或相關(guān)的系統(tǒng)級封裝 (SiP) 版本如何滿足對電池供電型設(shè)計的基本要求。相關(guān)的評估板和物聯(lián)網(wǎng)開發(fā)環(huán)境可進(jìn)一步大幅簡化開發(fā)多傳感器設(shè)備到云端應(yīng)用的過程。
低功耗藍(lán)牙應(yīng)用
在可穿戴健身設(shè)備、醫(yī)療監(jiān)測設(shè)備、照明、鎖具、電器、汽車等諸多智能產(chǎn)品應(yīng)用中,支持藍(lán)牙的電池供電型設(shè)備可提供連接和處理功能。用戶期望和競爭壓力不斷驅(qū)動市場對更全面應(yīng)用的需求,而這些應(yīng)用需要由更多數(shù)量傳感器提供的更精確數(shù)據(jù)來推動。在工業(yè)應(yīng)用等一些領(lǐng)域,多傳感器功能對于檢測運(yùn)動、振動、沖擊、溫度及濕度水平或其他數(shù)據(jù)是必不可少的,而這些數(shù)據(jù)是確保員工安全、設(shè)備狀態(tài)或基本資產(chǎn)管理所必需的。
在用戶的日?;顒又?,這些設(shè)備不僅必須從多個傳感器可靠地傳輸數(shù)據(jù),還必須減少頻繁更換電池或?yàn)殡姵爻潆姷男枨蟆_@一點(diǎn)對于實(shí)現(xiàn)滿意的用戶體驗(yàn)至關(guān)重要。同時,底層解決方案必須有助于降低電池供電型藍(lán)牙產(chǎn)品設(shè)計通常會帶來的相關(guān)成本和復(fù)雜性。
來自 ON Semiconductor 的 NCH-RSL10-101WC51-ABG RSL10 SoC 正是這樣一種解決方案,它能滿足超低功耗工作的要求,同時還為 SiP 和評估板提供了硬件基礎(chǔ),幫助加快最終產(chǎn)品的開發(fā)。基于 RSL10 的集成解決方案可與 ON Semiconductor 軟件配合使用進(jìn)行定制開發(fā),或者與 Digi-Key 的 DK IoT Studio 配合使用實(shí)現(xiàn)快速開發(fā),讓開發(fā)人員能夠快速部署和評估超低功耗多傳感器應(yīng)用。
深入探討 RSL10 藍(lán)牙無線 SoC
RSL10 是一款藍(lán)牙 5 認(rèn)證無線 SoC,專為滿足可穿戴設(shè)備、移動產(chǎn)品和其他互聯(lián)產(chǎn)品對超低功耗設(shè)計日益增長的需求而設(shè)計。RSL10 具有一組全面的集成子系統(tǒng)和功能模塊,可提供單芯片解決方案,能夠滿足支持藍(lán)牙的典型物聯(lián)網(wǎng)設(shè)備和可穿戴設(shè)備的要求(圖 1)。
圖 1:ON Semiconductor 的 RSL10 SoC 集成了處理器和無線電子系統(tǒng),為藍(lán)牙 5 認(rèn)證設(shè)備提供了完整的超低功耗解決方案。(圖片來源:ON Semiconductor)
該器件的主要處理模塊包括 Arm? Cortex?-M3 核心、專有 LPDSP32 32 位雙哈佛架構(gòu)數(shù)字信號處理 (DSP) 核心、完整的藍(lán)牙 5 認(rèn)證無線電子系統(tǒng) — 所有這些都由專用的共享存儲器區(qū)域提供支持。為了保護(hù)代碼和數(shù)據(jù),有一個 IP 模塊提供了相關(guān)機(jī)制,禁止從外部訪問器件的片上閃存、隨機(jī)存取存儲器 (RAM) 或核心。除了全套標(biāo)準(zhǔn)串行外設(shè)之外,該器件還提供了四通道模數(shù)轉(zhuǎn)換器 (ADC)、通用 IO (GPIO) 和音頻接口。通過使用一系列穩(wěn)壓器單獨(dú)為內(nèi)部功率域供電,該器件能以單一電壓源輸出 1.1 伏特到 3.3 伏特范圍的電壓。
雖然 RSL10 能夠支持各種 802.15.4 低數(shù)據(jù)速率無線個人局域網(wǎng) (WPAN) 協(xié)議,但仍可通過內(nèi)置硬件和軟件的組合,提供全面的藍(lán)牙支持。硬件支持基于實(shí)現(xiàn)藍(lán)牙物理層 (PHY) 的集成射頻 (RF) 前端搭建?;鶐?a target="_blank">控制器與射頻前端配合使用,為藍(lán)牙協(xié)議堆棧的數(shù)據(jù)包和幀處理層提供硬件支持。在這里,由一個很小的內(nèi)置軟件內(nèi)核提供事件和信息處理服務(wù),用于射頻流量管理、信息交換和定時器功能。最后,藍(lán)牙庫和相關(guān)的配置文件庫在 Arm Cortex-M3 處理器上運(yùn)行,構(gòu)成了完整的應(yīng)用軟件藍(lán)牙堆棧(圖 2)。
圖 2:ON Semiconductor 的 RSL10 SoC 通過將在 Arm Cortex-M3 核心中運(yùn)行的軟件與專用硬件(包括基帶處理器和底層射頻前端)組合在一起,提供了完整的藍(lán)牙堆棧。(圖片來源:ON Semiconductor)
軟件堆棧基于射頻前端和基帶處理器中的硬件支持構(gòu)建,將較低級別的低功耗藍(lán)牙 (BLE) 協(xié)議服務(wù)層組合在一起,包括邏輯鏈路控制和適配協(xié)議 (L2CAP)、屬性協(xié)議 (ATT)、安全管理器協(xié)議 (SMP)、用于定義連接的通用訪問配置文件 (GAP)、用于基于服務(wù)和特性定義數(shù)據(jù)交換的通用屬性配置文件 (GATT)。
除了此藍(lán)牙協(xié)議堆棧之外,RSL10 配置文件庫還支持在可穿戴設(shè)備應(yīng)用中經(jīng)常使用的幾種標(biāo)準(zhǔn)藍(lán)牙配置文件(包括心率、葡萄糖監(jiān)測、血壓),并支持 Rezence 無線充電配置文件和人機(jī)界面設(shè)備 (HID),以及用于定位、跑步、騎車等應(yīng)用的配置文件。
高能效
對于設(shè)計人員而言,最重要的優(yōu)勢也許是 RSL10 消耗的電流相對較小,同時還以 62.5 至 2000 kbps 的數(shù)據(jù)速率提供藍(lán)牙連接。使用 1.25 伏特電源 (VBAT) 時,峰值接收 (Rx) 電流為 5.6 毫安 (mA),使用 3 伏特 VBAT 時,該電流僅為 3.0 毫安。在發(fā)射功率為 0 dBm(分貝數(shù)基準(zhǔn)為一毫瓦)的情況下,使用 1.25 伏特 VBAT 時的峰值發(fā)射 (Tx) 電流為 8.9 毫安,使用 3 伏特 VBAT 時的峰值發(fā)射電流僅為 4.6 毫安。
RSL10 通過其架構(gòu)實(shí)現(xiàn)了高能效,在 EEMBC 的 ULPMark 認(rèn)證測試中,其 Core Profile 分?jǐn)?shù)達(dá)到了 1090 分(使用 3 伏特電源時)和 1260 分(使用 2.1 伏特電源時),在行業(yè)中處于領(lǐng)先水平。
開發(fā)人員可通過在 RSL10 處于全速運(yùn)行模式時有選擇地禁用硬件模塊,或在空閑期間將器件置于低功耗待機(jī)或深度休眠模式,進(jìn)一步提升效率。值得注意的是,RSL10 自動采用這些功率模式機(jī)制,在收發(fā)器事件之間保持 BLE 連接。因此,該器件能夠在所有三個藍(lán)牙廣告通道上執(zhí)行藍(lán)牙廣告操作,間隔為 5 秒,消耗的電流僅為 1.1 mA。
待機(jī)模式為開發(fā)人員提供了一種選擇,在器件持續(xù)保持低活動量達(dá)幾百毫秒 (ms) 至僅幾毫秒的時間后進(jìn)入該模式,以節(jié)省電能。
在待機(jī)模式期間,RSL10 對邏輯和存儲器使用時鐘選通,并降低供電電壓,從而減少漏電電流,實(shí)現(xiàn)僅 30 mA 的典型功耗。由于片上電源電路保持活動狀態(tài),器件可以相對快速地恢復(fù)到工作狀態(tài)。
深度休眠模式提供了多個選項(xiàng),在顯著降低功耗水平的同時,保持了響應(yīng)外部事件的能力。在此模式下工作時,該器件提供 8 KB 的 RAM 保持,并在使用 1.25 伏特 VBAT 的情況下僅消耗 300 毫微安 (nA) 電流,在使用 3 伏特 VBAT 的情況下僅消耗 100 nA 電流。當(dāng)處于最深度的休眠模式時,該器件在 1.25 伏特電壓下僅消耗 50 nA 電流(在使用 3 伏特 VBAT 時消耗 25 nA 電流),同時能夠喚醒,以響應(yīng)在專用 WAKEUP 引腳上接收的信號。
一體化設(shè)計
RSL10 的豐富功能有助于開發(fā)人員打造功率優(yōu)化的設(shè)計,同時不影響性能或藍(lán)牙連接。它的高集成度有助于簡化硬件設(shè)計。集成電容器等特性消除了傳統(tǒng)的外部電容器要求,即將 32 kHz 晶體用于實(shí)時時鐘 (RTC),或?qū)?48 MHz 晶體振蕩器用于射頻前端和主系統(tǒng)時鐘。因此,RSL10 只需少量外部元器件便可完成設(shè)計(圖 3)。
圖 3:如以上降壓模式工作配置所示,憑借高集成度,ON Semiconductor 的 RSL10 SoC 可以使用相對較少的元器件來提供完整的設(shè)計。(圖片來源:ON Semiconductor)
該器件集成了多個可編程穩(wěn)壓器,用于為數(shù)字、存儲器和射頻前端模塊供電。充電泵提供了模擬模塊和閃存所需的更高電壓電平。借助這些集成的電源系統(tǒng),該器件能以單一電源輸出 1.1 伏特至 3.3 伏特范圍的電壓。
當(dāng)電壓電平低于 1.4 伏特時,設(shè)計人員可使用內(nèi)部的低壓差 (LDO) 穩(wěn)壓器為器件供電。當(dāng)高于此電壓電平時,該器件的集成降壓轉(zhuǎn)換器可借助一個額外的電感器,幫助提升效率。這兩種電源配置的電路設(shè)計唯一區(qū)別是,在 LDO 模式下工作時,無需在 VCC 和 VDC 引腳之間使用額外電感器,如圖 3 所示。ON Semiconductor 會提供有關(guān) RSL10 的印刷電路板元器件貼裝和物理設(shè)計指導(dǎo)原則。
使用 RSL10 的系統(tǒng)設(shè)計
對于沒有時間或資源來構(gòu)建這些硬件接口的開發(fā)人員,ON Semiconductor 的 NCH-RSL10-101S51-ACG RSL10 SiP 提供了有效的替代方案,用于系統(tǒng)設(shè)計的定制硬件實(shí)現(xiàn)。RSL10 SiP 的外形尺寸為 6 mm x 8 mm x 1.5 mm,將 RSL10 SoC、無線電天線、全套必需元器件集成在單個封裝中。使用 RSL10 SiP,設(shè)計人員能夠?qū)⑼暾某凸乃{(lán)牙認(rèn)證硬件解決方案置入自己的設(shè)計中,并專注于滿足定制硬件要求。
同樣,ON Semiconductor 的 RSL10 軟件包也能幫助他們將軟件開發(fā)工作的重點(diǎn)放在定制要求上。ON Semiconductor 的 RSL10 軟件開發(fā)套件 (SDK) 基于 Arm Cortex 微控制器軟件接口標(biāo)準(zhǔn) (CMSIS) 硬件抽象層 (HAL) 構(gòu)建,可提供在 RSL10 CMSIS-Pack 中分發(fā)的驅(qū)動程序、實(shí)用工具和樣例代碼(圖 4)。
圖 4:ON Semiconductor 的 RSL10 軟件環(huán)境在基準(zhǔn)軟件包中提供一系列的服務(wù)和實(shí)用工具,另外還提供其他軟件包,以支持藍(lán)牙網(wǎng)狀網(wǎng)絡(luò)和藍(lán)牙物聯(lián)網(wǎng)開發(fā)。(圖片來源:ON Semiconductor)
該軟件包提供了更專業(yè)的服務(wù),包括藍(lán)牙支持、FreeRTOS 實(shí)時操作系統(tǒng) (RTOS) 和無線固件更新 (FOTA) 實(shí)用工具。此外,ON Semiconductor 還通過單獨(dú)的藍(lán)牙網(wǎng)狀網(wǎng)絡(luò)軟件包和藍(lán)牙物聯(lián)網(wǎng)開發(fā) (B-IDK) 軟件包,為更專業(yè)的功能提供支持。例如,B-IDK CMSIS-Pack 提供與物聯(lián)網(wǎng)相關(guān)的服務(wù),包括傳感器驅(qū)動程序、云連接支持以及相關(guān)的應(yīng)用級軟件樣例。
要進(jìn)行定制開發(fā),軟件工程師只需將基準(zhǔn)軟件包和可選軟件包載入集成開發(fā)環(huán)境 (IDE) 中便可。RSL10 軟件分發(fā)支持 ON Semiconductor 自有的 IDE,還支持 Arm Keil μVision 和 IAR Embedded Workbench 環(huán)境。加載軟件包之后,開發(fā)人員可以研究樣例應(yīng)用程序,學(xué)習(xí)關(guān)鍵特性的實(shí)現(xiàn)。
可隨時部署的 BLE 多傳感器板
通過將 RSL10 SiP 和 RSL10 SDK 配合使用,可以快速開始開發(fā)支持藍(lán)牙功能并可滿足嚴(yán)格的超低功耗工作要求的定制設(shè)備。但對于某些應(yīng)用,我們可能沒有,甚至不必要投入構(gòu)建定制解決方案所需的時間和資源。
例如,工業(yè)多傳感器監(jiān)控器或智能鎖和電燈開關(guān)可能需要一個支持藍(lán)牙的小型器件,該器件還要能夠延長電池壽命,同時提供來自多種傳感器的數(shù)據(jù)。對于這些應(yīng)用,ON Semiconductor 的 RSL10-SENSE-GEVK 多傳感器評估套件能夠提供即時硬件解決方案。該評估套件的板件經(jīng)過國際認(rèn)證,能夠隨時在超低功耗應(yīng)用中部署。
RSL10-SENSE-GEVK 板包括 RSL10 SiP、多個傳感器、ON Semiconductor 的 N24RF64DWPT3G 64 KB 近場通信 (NFC) EEPROM、RGB LED、可編程按鈕。該板占用直徑不足 30 毫米的圓形基底面。這個基底面只比套件中包括的 CR2032 鈕扣電池和柔性 NFC 天線稍大一點(diǎn)(圖 5)。
圖 5:ON Semiconductor 的 RSL10-SENSE-GEVK 評估板將 RSL10 SiP 與可穿戴設(shè)備和物聯(lián)網(wǎng)設(shè)備中通常需要的一系列傳感器組合在一起。(圖片來源:ON Semiconductor)
該評估板已預(yù)裝固件,適用于演示板上多個傳感器的工作情況,包括:
環(huán)境光傳感器 (ON Semiconductor NOA1305)
慣性測量裝置 (Bosch Sensortec BHI160),帶有三軸加速計和三軸陀螺儀
三軸數(shù)字地磁傳感器 (Bosch Sensortec BMM150)
環(huán)境傳感器 (Bosch Sensortec BME680),包括氣體、壓力、濕度和溫度傳感器
數(shù)字麥克風(fēng)
為了幫助開發(fā)人員使用 RSL10-SENSE-GEVK 評估板來快速評估傳感器集合和 RSL10 性能,ON Semiconductor 提供了 RSL10 Sense and Control 移動應(yīng)用,可通過 Android 和 iOS 應(yīng)用商店獲取該應(yīng)用。
這款應(yīng)用在支持藍(lán)牙功能的移動設(shè)備上運(yùn)行,讓開發(fā)人員能夠以不同的傳感器、采樣間隔和周期配置來監(jiān)控功耗,并監(jiān)控 RSL10 功率模式以及其他參數(shù)。在該應(yīng)用中設(shè)置所需的傳感器配置之后,該應(yīng)用將在一系列窗格中顯示結(jié)果(圖 6)。
圖 6:ON Semiconductor 的 RSL10 Sense and Control 移動應(yīng)用提供了一種即用型解決方案,用于評估 RSL10-SENSE-GEVK 評估板的多傳感器性能。(圖片來源:ON Semiconductor)
開發(fā)人員可使用上文提及的 CMSIS-Pack 分發(fā)和 IDE 選項(xiàng),查看和修改演示代碼。生成新固件之后,開發(fā)人員需要使用 10 引腳排針和適配器(例如 Tag-Connect 的 TC2050-IDC-NL)來加載映像。雖然該適配器未包括在 RSL10-SENSE-GEVK 多傳感器評估套件中,但套件的調(diào)試版本 RSL10-SENSE-DB-GEVK 提供了焊接的 10 引腳調(diào)試插頭以及 Segger Microcontroller Systems 用于連接此插頭的 J-Link LITE Cortex 調(diào)試器。
使用 DK IoT Studio 進(jìn)行快速開發(fā)
使用 RSL10-SENSE-GEVK 多傳感器評估板,我們無需為要求延遲電池壽命的各種多傳感器應(yīng)用進(jìn)行硬件開發(fā)。對于其中很多應(yīng)用,Digi-Key 提供了單獨(dú)的在線開發(fā)工具,因此無需進(jìn)行軟件編碼,便能快速開發(fā)原型甚至生產(chǎn)系統(tǒng)。DK IoT Studio 與 RSL10-SENSE-GEVK 評估板配合使用,可提供無代碼的開發(fā)方法,讓開發(fā)人員能夠快速部署完整的傳感器到云端應(yīng)用。
使用 DK IoT Studio 的圖形界面,開發(fā)人員能夠?qū)υ剡M(jìn)行拖放式操作,這些元素代表了在物聯(lián)網(wǎng)應(yīng)用中使用的眾多硬件和軟件項(xiàng)目。硬件元素涵蓋了單獨(dú)的 GPIO 引腳到完整的傳感器器件,包括 RSL10-SENSE-GEVK 評估板中包含的那些器件。軟件元素涵蓋了典型的低級功能(例如在任何程序中使用的循環(huán)和條件語句),一直到云服務(wù)接口。
使用這些元素的組合,開發(fā)人員能夠在 DK IoT Studio 圖形界面的單獨(dú)選項(xiàng)卡中,定義在 RSL10、輔助 DK IoT Studio 應(yīng)用中及在云端運(yùn)行的各種操作,而無需編寫任何軟件代碼。
這種方法的基礎(chǔ)是與任意元素關(guān)聯(lián)的一系列“能力”和“事件”。例如,BME680 集成環(huán)境傳感器具有一系列溫度、壓力和濕度讀取能力。其他功能元素(例如間隔元素)具有定期觸發(fā)事件的能力,這些事件則會導(dǎo)致執(zhí)行元素能力。此外還有其他一些元素,代表了與支持藍(lán)牙功能的移動設(shè)備(例如智能手機(jī))的藍(lán)牙通信。
使用這種方法構(gòu)建應(yīng)用非常簡單,Digi-Key 提供了 RSL10-SENSE-GEVK 評估板的多個演示項(xiàng)目。例如,在 BME680 演示項(xiàng)目中,一個間隔元素觸發(fā)了 BME680 傳感器每 1000 毫秒讀取一次溫度、壓力和濕度的能力。接下來,每個傳感器輸出所關(guān)聯(lián)的藍(lán)牙元素導(dǎo)致這些傳感器讀數(shù)傳輸?shù)剿{(lán)牙設(shè)備(圖 7)。
圖 7:在 Digi-Key 的 DK IoT Studio 器件選項(xiàng)卡中,開發(fā)人員將元素組合在一起,定期從 RSL10-SENSE-GEVK 評估板上的環(huán)境傳感器讀取數(shù)據(jù),并通過藍(lán)牙連接將傳感器數(shù)據(jù)傳輸?shù)捷o助移動應(yīng)用。(圖片來源:Digi-Key Electronics)
在應(yīng)用選項(xiàng)卡中,開發(fā)人員可以在 Digi-Key 移動應(yīng)用內(nèi)構(gòu)建用戶界面,用于顯示通過藍(lán)牙接收的數(shù)據(jù)。在 BME680 項(xiàng)目演示中,該應(yīng)用不僅顯示溫度、壓力和濕度,還將所有傳感器讀數(shù)發(fā)送至云元素(圖 8)。
圖 8:Digi-Key 的 DK IoT Studio 應(yīng)用選項(xiàng)卡提供了一個畫布,用于在相關(guān)移動應(yīng)用中顯示傳感器數(shù)據(jù),另外還提供了一個窗格,用于生成顯示的數(shù)據(jù)和在移動應(yīng)用中執(zhí)行其他操作,例如將數(shù)據(jù)發(fā)送至云端。(圖片來源:Digi-Key Electronics)
這種使用中間應(yīng)用以中繼方式將傳感器數(shù)據(jù)傳輸至云應(yīng)用,通常是為了避免需要從物聯(lián)網(wǎng)設(shè)備直接連接到云端。對于需要內(nèi)置 Wi-Fi 通信功能的設(shè)備,當(dāng)然可以將傳感器數(shù)據(jù)直接發(fā)送至云端,DK IoT Studio 提供了 Wi-Fi 元素,以及其他支持這種方法的元素。無論哪一種情況,云操作都在云選項(xiàng)卡中指定。在本例中,溫度、壓力和濕度結(jié)果均存儲在 DK IoT Studio 附帶提供的云數(shù)據(jù)存儲服務(wù)中(圖 9)。
圖 9:在 DK IoT Studio 的云選項(xiàng)卡中,開發(fā)人員定義基于云的操作,例如將傳感器數(shù)據(jù)存儲在云存儲中。(圖片來源:Digi-Key Electronics)
完成設(shè)備、應(yīng)用和云角色的定義之后,用戶可通過點(diǎn)擊編譯圖標(biāo),在 DK IoT Studio 中編譯項(xiàng)目。代碼生成之后,用戶可將生成的固件載入到 RSL10-SENSE-GEVK。這時,一個在用戶系統(tǒng)上運(yùn)行的小型實(shí)用工具可以完成從 DK IoT Studio 到連接至該系統(tǒng)的評估板的傳輸。應(yīng)用和云代碼集自動保存在 DK IoT Studio 云環(huán)境中。
雖然這種方法無需開發(fā)應(yīng)用代碼,但要在一系列軟件例程中定義與每個元素相關(guān)聯(lián)的事件和能力,這些例程稱為嵌入式元件庫 (EEL),并在 DK IoT Studio 開發(fā)環(huán)境中運(yùn)行。
例如,BME680 的“讀取溫度”能力會調(diào)用在 BME680 C 語言模塊中定義的抽象 bme680_get_sensor_()(清單 1)。
BME680_Status_t BME680_GetTempData( float *tempC )
{ _BME680_StartMeasurement(); struct bme680_field_data data; int8_t retval = bme680_get_sensor_data( &data, &_BME680_DriverConfig ); if ( retval != 0 ) {?
ATMO_PLATFORM_DebugPrint(?
“Error getting sensor data!%d\r\n”, retval ); *tempC = 0; } else { *tempC = data.temperature / 100.0; } _BME680_Sleep(); return BME680_Status_Success; }
清單 1:在 DK IoT Studio 圖形界面底層,與每個元素關(guān)聯(lián)的代碼可實(shí)現(xiàn)特定的功能,例如在每次觸發(fā)“讀取溫度”能力時都會調(diào)用的以上函數(shù)。(代碼來源:Digi-Key Electronics)
同一模塊中的低級例程實(shí)現(xiàn)了位處理操作,這些操作需要用于從更低級例程 bme680_get_regs() 所讀取的傳感器寄存器中提取所需的數(shù)據(jù)(清單 2)。
static int8_t read_field_data( struct bme680_field_data *data, struct bme680_dev *dev ) {
int8_t rslt;
uint8_t buff[BME680_FIELD_LENGTH] = { 0 };
uint8_t gas_range;
uint32_t adc_temp;
uint32_t adc_pres;
uint16_t adc_hum;
uint16_t adc_gas_res;
uint8_t tries = 10;
rslt = null_ptr_check( dev );
do
{
if ( rslt == BME680_OK )
{
rslt = bme680_get_regs( ( ( uint8_t ) ( BME680_FIELD0_ADDR ) ), buff, ( uint16_t ) BME680_FIELD_LENGTH,
dev );
data-》status = buff[0] & BME680_NEW_DATA_MSK;
data-》gas_index = buff[0] & BME680_GAS_INDEX_MSK;
data-》meas_index = buff[1];
adc_pres = ( uint32_t ) ( ( ( uint32_t ) buff[2] * 4096 ) | ( ( uint32_t ) buff[3] * 16 )
| ( ( uint32_t ) buff[4] / 16 ) );
adc_temp = ( uint32_t ) ( ( ( uint32_t ) buff[5] * 4096 ) | ( ( uint32_t ) buff[6] * 16 )
| ( ( uint32_t ) buff[7] / 16 ) );
adc_hum = ( uint16_t ) ( ( ( uint32_t ) buff[8] * 256 ) | ( uint32_t ) buff[9] );
adc_gas_res = ( uint16_t ) ( ( uint32_t ) buff[13] * 4 | ( ( ( uint32_t ) buff[14] ) / 64 ) );
gas_range = buff[14] & BME680_GAS_RANGE_MSK;
data-》status |= buff[14] & BME680_GASM_VALID_MSK;
data-》status |= buff[14] & BME680_HEAT_STAB_MSK;
if ( data-》status & BME680_NEW_DATA_MSK )
{ data-》temperature = calc_temperature( adc_temp, dev );
data-》pressure = calc_pressure( adc_pres, dev );
data-》humidity = calc_humidity( adc_hum, dev );
data-》gas_resistance = calc_gas_resistance( adc_gas_res, gas_range, dev );
break;
}
dev-》delay_ms( BME680_POLL_PERIOD_MS );
} tries--;
} while ( tries );
if ( !tries ) {
rslt = BME680_W_NO_NEW_DATA;
} return rslt; }
清單 2:與 DK IoT Studio 中的每個元素關(guān)聯(lián)的代碼將來自更高級服務(wù)的更抽象函數(shù)調(diào)用轉(zhuǎn)換為具體操作,例如從環(huán)境傳感器寄存器提取數(shù)據(jù)。(代碼來源:Digi-Key Electronics)
正如上文所述,元素提供了各種方法,例如通常由軟件開發(fā)人員使用的條件語句,以及通常由硬件開發(fā)人員使用的 GPIO 控制。在 DK IoT Studio 環(huán)境中,相應(yīng)的元素提供了簡單的拖放式方法,用于測試條件和執(zhí)行相應(yīng)的操作。例如,另一個演示項(xiàng)目展示了當(dāng) RSL10-SENSE-GEVK 板的環(huán)境光傳感器輸出超過某個指定值時,如何開啟板上的 LED(圖 10)。
圖 10:DK IoT Studio 提供了必要的元素來執(zhí)行更抽象的邏輯,例如值檢驗(yàn)以及各種低級操作,包括設(shè)置與 ON Semiconductor 的 RSL10-SENSE-GEVK 評估板上的 LED 相關(guān)聯(lián)的 GPIO。(圖片來源:Digi-Key Electronics)
在云端,可以使用類似的測試為移動應(yīng)用生成元數(shù)據(jù)。這種情況下,可在應(yīng)用中使用元數(shù)據(jù)來設(shè)置警報圖標(biāo),指示傳感器檢測到的問題(圖 11)。
圖 11:DK IoT Studio 支持在云端和移動應(yīng)用中執(zhí)行更復(fù)雜的操作,例如這種為應(yīng)用設(shè)置狀態(tài)元數(shù)據(jù)并將數(shù)據(jù)保留到云存儲的條件檢查。(圖片來源:Digi-Key Electronics)
在執(zhí)行負(fù)責(zé)開關(guān) LED 的底層代碼之后,需要進(jìn)行一系列的調(diào)用,從調(diào)用與底層環(huán)境中的該事件相關(guān)的更高級別函數(shù)開始。該函數(shù) SetPinState 是在初始化過程中設(shè)置的一個函數(shù)指針,其指向?qū)崿F(xiàn)所需功能的更低級別函數(shù) ATMO_ONSEMI_GPIO_SetPinState(),最終調(diào)用 ON Semiconductor 的 RSL10 SDK 庫函數(shù) Sys_DIO_Config() 設(shè)置指定的引腳(清單 3)。
ATMO_GPIO_Status_t ATMO_GPIO_SetPinState( ATMO_DriverInstanceHandle_t instance, ATMO_GPIO_Device_Pin_t pin, ATMO_GPIO_PinState_t state ) { if ( !( instance 《 numberOfGPIODriverInstance ) ) { return ATMO_GPIO_Status_Invalid; } return gpioInstances[instance]-》SetPinState( gpioInstancesData[instance], pin, state ); }
清單 3:DK IoT Studio 提供了一組在更低級別服務(wù)層實(shí)現(xiàn)的常見抽象,以實(shí)現(xiàn)硬件特定的操作,例如設(shè)置 GPIO 位。(代碼來源:Digi-Key Electronics)
為了充分體現(xiàn)簡易性,DK IoT Studio 提供了高度靈活的開發(fā)環(huán)境。開發(fā)人員可依賴元素的 EEL 代碼,這些代碼既可按原樣使用,也可根據(jù)應(yīng)用需求進(jìn)行修改。在開發(fā)過程中,DK IoT Studio 的器件選項(xiàng)卡提供了一個面板,包含與放置在選項(xiàng)卡畫布上的元素相關(guān)聯(lián)的底層高級別代碼(如圖 7 所示)。對于需要一些特殊處理的應(yīng)用,開發(fā)人員可以在該面板中即時修改代碼。其他功能,例如“函數(shù)”元素,可在代碼中添加空函數(shù)定義,以便開發(fā)人員利用環(huán)境中的可用功能和函數(shù)來補(bǔ)充執(zhí)行。
實(shí)際上,DK IoT Studio 的方法將無代碼拖放式開發(fā)的簡易性與靈活性和性能結(jié)合在一起,唯一的限制是底層硬件設(shè)備的內(nèi)存大小和處理器能力。這種方法用于 RSL10-SENSE-GEVK 板,讓開發(fā)人員能夠快速部署功能全面且具有設(shè)備到云端連接和移動應(yīng)用支持的原型。
總結(jié)
多傳感器設(shè)備的新型應(yīng)用在各個市場上層出不窮,包括在消費(fèi)、汽車和工業(yè)領(lǐng)域。對于其中很多應(yīng)用,藍(lán)牙連接和更長的電池壽命至關(guān)重要,同時,設(shè)計人員還需要支持性生態(tài)系統(tǒng)能夠提供靈活的設(shè)計方法,以應(yīng)對長期存在的上市時間壓力。為了應(yīng)對這些挑戰(zhàn),ON Semiconductor 推出了 RSL10 SoC、RSL10 SiP 和 RSL10-SENSE-GEVK 評估板,它們提供了一系列解決方案,分別符合定制設(shè)計、集成模塊和完整的多傳感器解決方案的需求。借助這些硬件平臺,開發(fā)人員可以利用 RSL10 軟件開發(fā)套件和相關(guān)的軟件分發(fā)包來實(shí)現(xiàn)定制應(yīng)用。
為了幫助快速開發(fā)設(shè)備到云端多傳感器應(yīng)用,可結(jié)合使用 ON Semiconductor 的 RSL10-SENSE-GEVK 評估板和 DK IoT Studio IDE,提供功能強(qiáng)大的快速開發(fā)平臺,在完整的設(shè)備到云端應(yīng)用中實(shí)現(xiàn)超低功耗的多傳感器解決方案。綜合運(yùn)用 RSL10 硬件和可用的軟件選項(xiàng),獲取高度靈活的平臺,用于開發(fā)和部署能夠滿足更長電池壽命要求的藍(lán)牙認(rèn)證設(shè)備。
評論
查看更多