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

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

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

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

基于Cypress CYW20719藍(lán)牙MCU的WICED開發(fā)環(huán)境

電子設(shè)計(jì) ? 2018-09-28 09:22 ? 次閱讀

移動(dòng)設(shè)備普遍提供藍(lán)牙功能,藍(lán)牙非常適合消費(fèi)者以無線方式輕松訪問智能產(chǎn)品。然而,對于物聯(lián)網(wǎng)開發(fā)人員而言,構(gòu)建藍(lán)牙連接的傳感器網(wǎng)絡(luò)存在一些挑戰(zhàn),例如實(shí)現(xiàn)電池壽命最大化、優(yōu)化藍(lán)牙協(xié)議以及確保設(shè)備之間安全連接等。

本文將說明,使用Cypress Semiconductor提供的先進(jìn)藍(lán)牙器件和相關(guān)開發(fā)環(huán)境,開發(fā)人員可以加快解決這些問題,并快速實(shí)現(xiàn)安全的藍(lán)牙集線器傳感器網(wǎng)絡(luò)。

為什么使用藍(lán)牙?

智能手機(jī)和其他移動(dòng)設(shè)備廣泛支持藍(lán)牙,這使其成為將消費(fèi)者與可穿戴設(shè)備和醫(yī)療設(shè)備等個(gè)人電子設(shè)備連接起來的首選無線技術(shù)。隨著藍(lán)牙 5 的出現(xiàn),物聯(lián)網(wǎng)開發(fā)人員既可利用這些優(yōu)勢,又能滿足傳感器網(wǎng)絡(luò)和其他物聯(lián)網(wǎng)應(yīng)用對更長通信距離和更高數(shù)據(jù)速率不斷增長的需求。

為了構(gòu)建針對這些應(yīng)用的設(shè)計(jì),開發(fā)人員可以借助越來越多的支持藍(lán)牙 5 的器件。這些器件結(jié)合了完整的 RF 子系統(tǒng)和處理器內(nèi)核,能夠執(zhí)行與藍(lán)牙通信相關(guān)的低級事務(wù)。然而,物聯(lián)網(wǎng)網(wǎng)絡(luò)需要維持低功耗并確保安全連接,這樣一來,在這些應(yīng)用中部署藍(lán)牙會(huì)更加復(fù)雜。

集成解決方案

Cypress SemiconductorCYW20719經(jīng)過專門設(shè)計(jì),可滿足物聯(lián)網(wǎng)、可穿戴設(shè)備、個(gè)人電子產(chǎn)品和其他低功耗應(yīng)用對電池供電型藍(lán)牙連接設(shè)計(jì)不斷增長的需求。除了功耗低之外,它還支持先進(jìn)的藍(lán)牙 5 特性,包括自適應(yīng)跳頻,這在與此類應(yīng)用相關(guān)的繁忙無線電環(huán)境中是一個(gè)重要優(yōu)勢。

該器件集成了低功耗藍(lán)牙無線電子系統(tǒng)、帶浮點(diǎn)單元 (FPU) 的 Arm? Cortex?-M4 內(nèi)核及多個(gè)外設(shè)塊(圖 1)。此外,片載安全引擎可加速公鑰加密,并提供所需的關(guān)鍵加密功能來幫助確保藍(lán)牙操作的安全性。最后,片載電源管理單元 (PMU) 為開發(fā)人員提供了一種靈活的機(jī)制來滿足藍(lán)牙設(shè)備日益增長的超低功耗運(yùn)行要求。

Cypress Semiconductor CYW20719 示意圖

圖 1:Cypress Semiconductor CYW20719 結(jié)合了 Arm? Cortex?-M4、完整的藍(lán)牙子系統(tǒng)和內(nèi)置軟件服務(wù),為低功耗設(shè)計(jì)提供完整的支持藍(lán)牙 5 的無線 MCU。(圖片來源:Cypress Semiconductor)

CYW20719 無線電子系統(tǒng)包括完整的 2.5 GHz RF 信號路徑,用于發(fā)射 (Tx) 和接收 (Rx) 操作。對于 Rx 信號路徑,此器件會(huì)衰減帶外信號,實(shí)現(xiàn) -95.5 dBm Rx 靈敏度,且在需要時(shí),開發(fā)人員無需額外的片外濾波器即可使用該器件。Tx 信號路徑包括一個(gè)集成功率放大器 (PA),旨在支持從 -24 dBm 到最大 +4 dBm 的可配置發(fā)射功率等級。除了集成物理層 (PHY) 之外,該器件還包括一個(gè)完整的片載藍(lán)牙 5 介質(zhì)訪問控制 (MAC) 層。憑借優(yōu)化的 Rx 和 Tx 信號路徑,該器件僅消耗 5.9 mA Rx 電流或 5.6 mA (@ 0 dBm) Tx 電流。

為了進(jìn)一步降低功耗,該器件提供由集成電源管理單元 (PMU) 管理的多種功率模式。PMU 設(shè)計(jì)用于提供獨(dú)立的 RF 和數(shù)字功率域,結(jié)合了一個(gè)集成降壓穩(wěn)壓器、一個(gè)用于數(shù)字電路的低壓差穩(wěn)壓器 (LDO) 和一個(gè)用于 RF 電路的獨(dú)立 LDO(圖 2)。此外,PMU 還包括一個(gè)獨(dú)立的旁路 LDO (BYPLDO),如果電源 VBAT 電壓低于 2.1 V,它會(huì)自動(dòng)旁路降壓穩(wěn)壓器,為數(shù)字和 RF LDO 供電。

Cypress CYW20719 PMU 示意圖

圖 2:Cypress CYW20719 PMU 管理獨(dú)立的多個(gè)功率域,在不同低功耗模式下可以選擇性地禁用功率域,以降低低功耗設(shè)計(jì)的電流消耗。(圖片來源:Cypress Semiconductor)

在運(yùn)行中,PMU 根據(jù)選定的功率模式(包括完全活動(dòng)模式、空閑模式和三種休眠模式)調(diào)整功率域。在功耗最低的關(guān)斷休眠 (SDS) 模式下,除 I/O 電源、實(shí)時(shí)時(shí)鐘 (RTC)、專用低功耗振蕩器(用作某些塊和喚醒定時(shí)的時(shí)鐘源)之外,PMU 關(guān)閉所有器件塊。

即使只使用最少量的資源,SDS 模式下的 CYW20719 也能與另一個(gè)先前配對的藍(lán)牙設(shè)備保持連接,在此過程中消耗的電流小于 70 微安 (μA)。但是,該模式下的器件不會(huì)保留存儲器內(nèi)容,需要熱啟動(dòng)恢復(fù)狀態(tài)后才能繼續(xù)執(zhí)行更復(fù)雜的操作。另外兩種休眠模式是省電休眠 (PDS) 和休眠狀態(tài),可維持包括存儲器內(nèi)容保留在內(nèi)的較高器件活動(dòng)水平,而功耗則相應(yīng)地遞增。即便如此,功率預(yù)算有限的開發(fā)人員可以利用 PDS 模式進(jìn)行低功耗藍(lán)牙廣告(約 125 μA)和支持活動(dòng)連接(約 170 μA)。通過管理器件功率模式,開發(fā)人員可以輕松實(shí)現(xiàn)超低功耗運(yùn)行而不影響功能。

系統(tǒng)集成

雖然 CYW20719 有靈活的工作模式和豐富的功能,但它仍需要少量額外元器件來完成系統(tǒng)設(shè)計(jì)中的硬件集成。由于其集成了片載關(guān)鍵元器件,開發(fā)人員只需添加幾個(gè)電阻器耦合電容器、2.2 μH 電感(如MurataLQH2MCN2R2M52L)及鐵氧體磁珠(如 MurataBLM15AG601SN1D)(圖 3)。此外,最好在 CYW20719 和天線匹配元件之間放置一個(gè)帶通濾波器以減少諧波。

Cypress CYW20719 示意圖(點(diǎn)擊放大)

圖 3:Cypress CYW20719 集成了所有關(guān)鍵功能,因此開發(fā)人員只需添加幾個(gè)元器件(包括推薦的帶通濾波器以減少諧波)即可完成硬件集成。(圖片來源:Cypress Semiconductor)

該器件擁有豐富的片載存儲器,包括 1 MB 閃存、512 KB RAM 和 2 MB ROM,因此亦有助于簡化軟件集成。閃存和 RAM 為開發(fā)人員提供應(yīng)用程序存儲區(qū)域,片載 ROM 則保留用于器件固件和藍(lán)牙配置文件。為了在需要時(shí)支持固件補(bǔ)丁,該器件提供了補(bǔ)丁 RAM——一個(gè)通過補(bǔ)丁控制邏輯連接的 RAM 區(qū)域(參見上圖 1)。最后,該器件提供一個(gè)不間斷存儲器 (AON) 區(qū)域,讓器件即使在低功耗模式下也能存儲數(shù)據(jù)(如 SDS,會(huì)關(guān)閉易失存儲器)。

與其他先進(jìn)器件相比,該器件芯片上提供的 RAM 和閃存看起來可能很有限,但 ROM 內(nèi)置的廣泛軟件支持可確保典型應(yīng)用有充足的內(nèi)存可用。Cypress 為片載 ROM 配置了一個(gè)全面的軟件堆棧,從最低的硬件抽象層 (HAL) 一直到用于WICED(嵌入式設(shè)備無線互聯(lián)網(wǎng)連接)環(huán)境的應(yīng)用程序編程接口 (API)(圖 4)。

圖 4:Cypress CYW20719 的 2 MB ROM 固件提供包括實(shí)時(shí)操作系統(tǒng)在內(nèi)的完整軟件堆棧,降低了開發(fā)人員應(yīng)用程序代碼的復(fù)雜度和占用空間。(圖片來源:Cypress Semiconductor)

以 HAL 為基礎(chǔ),ROM 固件執(zhí)行內(nèi)置實(shí)時(shí)操作系統(tǒng)并處理與 CYW20719 硬件的所有交互。同時(shí),ROM 固件包含全套藍(lán)牙服務(wù)層,包括支持基本藍(lán)牙通用屬性配置文件 (GATT) 和通用訪問配置文件 (GAP) 的服務(wù)層。

對于典型應(yīng)用,開發(fā)人員代碼從 RAM 運(yùn)行,使用 WICED API 訪問 RTOS、外設(shè)和其他特性。雖然 RAM 需求可能有很大差異,但 CYW20719 的大多數(shù)應(yīng)用程序代碼通常會(huì)為數(shù)據(jù)或工作內(nèi)存留下充足的可用 RAM。例如,后面描述的 hello_sensor 應(yīng)用程序留下了大約 240 KB 的可用 RAM。

但對于代碼庫特別大的應(yīng)用程序,開發(fā)人員可以利用 CYW20719 的一項(xiàng)特性 — 從片載閃存就地執(zhí)行 (XIP) 應(yīng)用程序代碼。這種情況下,WICED 環(huán)境將開發(fā)人員指定的代碼和只讀數(shù)據(jù)部分加載到片載閃存中,并將其余部分放入 RAM 中。這種方法固然會(huì)減少應(yīng)用程序的 RAM 占用空間,但可能會(huì)影響性能。因此,開發(fā)人員在指定 XIP 代碼部分時(shí)需要小心,確保將時(shí)間關(guān)鍵型功能置于 RAM 中。

應(yīng)用開發(fā)

盡管 CYW20719 簡化了設(shè)計(jì)集成,但專注于安全低功耗藍(lán)牙應(yīng)用的開發(fā)人員仍可能在完成硬件設(shè)計(jì)和應(yīng)用開發(fā)時(shí)面臨嚴(yán)重延遲。CypressCYW920719Q40EVB-01評估套件旨在演示基于 CYW20719 的應(yīng)用,可與 Cypress WICED 軟件環(huán)境配合使用,為創(chuàng)建符合藍(lán)牙 5.0 標(biāo)準(zhǔn)的物聯(lián)網(wǎng)應(yīng)用提供參考設(shè)計(jì)和綜合開發(fā)平臺。

評估套件圍繞一個(gè)載波模塊構(gòu)建,載波模塊包括圖 3 設(shè)計(jì)中的 CYW20719,外加一個(gè)Torex SemiconductorXC6119N測壓器,后者連接到 CYW20719 的 RST_N 引腳以執(zhí)行復(fù)位。載波模塊焊接到套件基板,基板包括STMicroelectronicsLSM9DS1TR9 軸運(yùn)動(dòng)傳感器、MurataNCU 系列NTC 熱敏電阻、CYW20719 GPIO 端口、調(diào)試連接、Arduino 兼容擴(kuò)展針座,以及用作簡單用戶界面的開關(guān)和 LED(圖 5)。

圖 5:Cypress CYW920719Q40EVB-01 評估套件將載波模塊上的 CYW20719 與多個(gè)基板元器件結(jié)合在一起,可支持典型物聯(lián)網(wǎng)應(yīng)用。(圖片來源:Cypress Semiconductor)

Cypress 示例軟件使用 CYW20719 和其他元器件,廣泛演示由多個(gè)傳感器和一個(gè)中央集線器組成的代表性物聯(lián)網(wǎng)網(wǎng)絡(luò)中的安全藍(lán)牙連接(圖 6)。通過此示例應(yīng)用,開發(fā)人員可以探索傳感器和集線器配對的不同安全級別,并評估這些不同安全級別對數(shù)據(jù)交換的影響。

圖 6:Cypress 示例應(yīng)用設(shè)計(jì)用于配合多個(gè) CYW920719Q40EVB-01 套件和 Cypress WICED 開發(fā)環(huán)境使用,可在代表性物聯(lián)網(wǎng)應(yīng)用中演示安全藍(lán)牙連接。(圖片來源:Cypress Semiconductor)

關(guān)于應(yīng)用的硬件,開發(fā)人員將一個(gè)單獨(dú)的 CYW920719Q40EVB-01 套件配置為安全集線器,并將其他套件配置為網(wǎng)絡(luò)中的傳感器。一臺 PC 串行連接到各套件,為設(shè)置參數(shù)、查看數(shù)據(jù)、打印調(diào)試消息及與示例應(yīng)用的其他交互提供一個(gè)控制臺。

此類典型應(yīng)用唯一剩下的要素是連接到移動(dòng)設(shè)備以執(zhí)行應(yīng)用監(jiān)測和控制功能,不過本示例應(yīng)用中未包括此項(xiàng)。這里,串行連接的 PC 基本上就是起這個(gè)作用。

Cypress 將此示例應(yīng)用的軟件捆綁在 WICED 開發(fā)環(huán)境下的 CYW20917BLE Secure HubC 語言包中。在本例中,該軟件包有兩個(gè)項(xiàng)目,對應(yīng)于示例應(yīng)用中的兩個(gè)獨(dú)立角色。一個(gè)項(xiàng)目 (secure_hub) 設(shè)計(jì)為在指定為安全集線器的套件上運(yùn)行,它使集線器能夠支持多種藍(lán)牙協(xié)議角色。具體而言,集線器軟件旨在以不同安全級別與作為從設(shè)備運(yùn)行的不同套件進(jìn)行配對。

配置為從設(shè)備的套件運(yùn)行傳感器項(xiàng)目 (hello_sensor),用于演示以配對期間建立的安全級別進(jìn)行數(shù)據(jù)收集和通信。每個(gè)項(xiàng)目都包含若干頭模塊和代碼模塊以支持相應(yīng)的功能角色。在這些文件中,secure_hub 和 hello_sensor 項(xiàng)目各包含通用屬性配置文件 (GATT) 頭文件 (gatt_db.h) 和代碼文件 (gatt_db.c)。

在藍(lán)牙協(xié)議中,一個(gè)稱為 GATT 數(shù)據(jù)庫 (DB) 的查找表通過一組已定義服務(wù)來定義藍(lán)牙連接的屬性和功能,每個(gè)服務(wù)包括一組支持的特征。例如,藍(lán)牙規(guī)范包括預(yù)定義的 GATT 服務(wù),范圍從提醒通知和設(shè)備信息等實(shí)用功能到血壓和脈搏血氧儀服務(wù)等專用功能。設(shè)備的藍(lán)牙通用訪問配置文件 (GAP) 所起的作用比 GATT 服務(wù)更為基礎(chǔ),其定義設(shè)備如何在網(wǎng)絡(luò)中宣傳自己的存在,以及設(shè)備經(jīng)發(fā)現(xiàn)后如何建立連接。

secure_hub 項(xiàng)目和 hello_sensor 項(xiàng)目中的 gatt_db.h 頭文件和 gatt_db.c 代碼文件分別定義配置為安全集線器和傳感器的套件的 GAP 和 GATT 服務(wù)。對于此演示應(yīng)用,每個(gè)項(xiàng)目根據(jù)其角色定義一個(gè)定制 GATT 服務(wù)。例如,hello_sensor 項(xiàng)目頭文件包含一個(gè)定義強(qiáng)制性 GATT 和 GAP 服務(wù)句柄的 Cenum類型,以及用于傳感器服務(wù)的定制 GATT 定義(列表 1a)。該項(xiàng)目的 gatt_db.c 文件進(jìn)而使用這些定義來構(gòu)建藍(lán)牙協(xié)議所需的 GATT DB(列表 1b)。

副本

typedef enum

{

HANDLE_HSENS_GATT_SERVICE = 0x1, // service handle

HANDLE_HSENS_GAP_SERVICE = 0x14, // service handle

HANDLE_HSENS_GAP_SERVICE_CHAR_DEV_NAME, // characteristic handl

HANDLE_HSENS_GAP_SERVICE_CHAR_DEV_NAME_VAL, // char value handle

HANDLE_HSENS_GAP_SERVICE_CHAR_DEV_APPEARANCE, // characteristic handl

HANDLE_HSENS_GAP_SERVICE_CHAR_DEV_APPEARANCE_VAL,// char value handle

HANDLE_HSENS_SERVICE = 0x28,

HANDLE_HSENS_SERVICE_CHAR_UART, // characteristic handl

HANDLE_HSENS_SERVICE_CHAR_UART_VAL, // char value handle

HANDLE_HSENS_SERVICE_CHAR_CFG_DESC, // charconfig desc handl

HANDLE_HSENS_SERVICE_CHAR_BLINK, // characteristic handl

HANDLE_HSENS_SERVICE_CHAR_BLINK_VAL, // char value handle

HANDLE_HSENS_SERVICE_CHAR_TEMP, // characteristic handl

HANDLE_HSENS_SERVICE_CHAR_TEMP_VAL, // char value handle

HANDLE_HSENS_SERVICE_CHAR_TEMP_CFG_DESC, // charconfig desc handl

(A)

副本

/* Permissions for custom characteristics */

#define LED_BLINK_CHAR_PERMISSION LEGATTDB_PERM_WRITE_REQ | LEGATTDB_PERM_AUTH_WRITABLE | LEGATTDB_PERM_READABLE

#define TEMP_CHAR_PERMISSION LEGATTDB_PERM_READABLE

#define UART_CHAR_PERMISSION LEGATTDB_PERM_READABLE

uint8_t paired_security_level;

static void temp_notificaition_timeout( uint32_t count );

const uint8_t hello_sensor_gatt_database[]=

{

// Declare mandatory GATT service

PRIMARY_SERVICE_UUID16( HANDLE_HSENS_GATT_SERVICE, UUID_SERVICE_GATT ),

// Declare mandatory GAP service.Device Name and Appearance are mandatory

// characteristics of GAP service

PRIMARY_SERVICE_UUID16( HANDLE_HSENS_GAP_SERVICE, UUID_SERVICE_GAP ),

// Declare mandatory GAP service characteristic: Dev Name

CHARACTERISTIC_UUID16( HANDLE_HSENS_GAP_SERVICE_CHAR_DEV_NAME, HANDLE_HSENS_GAP_SERVICE_CHAR_DEV_NAME_VAL,

UUID_CHARACTERISTIC_DEVICE_NAME, LEGATTDB_CHAR_PROP_READ, LEGATTDB_PERM_READABLE ),

// Declare mandatory GAP service characteristic: Appearance

CHARACTERISTIC_UUID16( HANDLE_HSENS_GAP_SERVICE_CHAR_DEV_APPEARANCE, HANDLE_HSENS_GAP_SERVICE_CHAR_DEV_APPEARANCE_VAL,

UUID_CHARACTERISTIC_APPEARANCE, LEGATTDB_CHAR_PROP_READ, LEGATTDB_PERM_READABLE ),

// Declare proprietary Hello Service with 128 byte UUID

PRIMARY_SERVICE_UUID128( HANDLE_HSENS_SERVICE, UUID_HELLO_SERVICE ),

// Declare characteristic used to notify/indicate change

CHARACTERISTIC_UUID128( HANDLE_HSENS_SERVICE_CHAR_UART, HANDLE_HSENS_SERVICE_CHAR_UART_VAL,

UUID_HELLO_CHARACTERISTIC_NOTIFY, LEGATTDB_CHAR_PROP_READ | LEGATTDB_CHAR_PROP_NOTIFY | LEGATTDB_CHAR_PROP_INDICATE, UART_CHAR_PERMISSION ),

// Declare client characteristic configuration descriptor

// Value of the descriptor can be modified by the client

// Value modified shall be retained during connection and across connection

// for bonded devices.Setting value to 1 tells this application to send notification

// when value of the characteristic changes.Value 2 is to allow indications.

CHAR_DESCRIPTOR_UUID16_WRITABLE( HANDLE_HSENS_SERVICE_CHAR_CFG_DESC, UUID_DESCRIPTOR_CLIENT_CHARACTERISTIC_CONFIGURATION,

LEGATTDB_PERM_READABLE | LEGATTDB_PERM_WRITE_REQ ),

// Declare characteristic Hello Configuration

// The configuration consists of 1 bytes which indicates how many times to

// blink the LED when user pushes the button.

CHARACTERISTIC_UUID128_WRITABLE( HANDLE_HSENS_SERVICE_CHAR_BLINK, HANDLE_HSENS_SERVICE_CHAR_BLINK_VAL,

UUID_HELLO_CHARACTERISTIC_LED_BLINK,

LEGATTDB_CHAR_PROP_READ | LEGATTDB_CHAR_PROP_WRITE,

LED_BLINK_CHAR_PERMISSION ),

CHARACTERISTIC_UUID128( HANDLE_HSENS_SERVICE_CHAR_TEMP, HANDLE_HSENS_SERVICE_CHAR_TEMP_VAL,

UUID_HELLO_CHARACTERISTIC_TEMP, LEGATTDB_CHAR_PROP_READ | LEGATTDB_CHAR_PROP_NOTIFY | LEGATTDB_CHAR_PROP_INDICATE, TEMP_CHAR_PERMISSION ),

// Declare client characteristic configuration descriptor

// Value of the descriptor can be modified by the client

// Value modified shall be retained during connection and across connection

// for bonded devices.Setting value to 1 tells this application to send notification

// when value of the characteristic changes.Value 2 is to allow indications.

CHAR_DESCRIPTOR_UUID16_WRITABLE( HANDLE_HSENS_SERVICE_CHAR_TEMP_CFG_DESC, UUID_DESCRIPTOR_CLIENT_CHARACTERISTIC_CONFIGURATION,

LEGATTDB_PERM_READABLE | LEGATTDB_PERM_WRITE_REQ ),

(B)

列表 1:Cypress BLE Secure Hub 應(yīng)用的 hello_sensor 項(xiàng)目中包含一個(gè)頭文件,其為不同特征定義了一個(gè)枚舉類型 (A),供相應(yīng)的代碼模塊用以構(gòu)建藍(lán)牙運(yùn)行所需的 GATT 數(shù)據(jù)庫。(代碼來源:Cypress Semiconductor)

嵌入在這些定義中的 GATT 傳感器服務(wù)還定義其底層服務(wù)特征是否可以讀取、寫入、通知或指示信息(使用相連的控制臺)。例如,LED 閃爍特征(列表 1a 中聲明并在列表 1b 中應(yīng)用的HANDLE_HSENS_SERVICE_CHAR_BLINK)包括位掩碼(列表 1b 中的LEGATTDB_CHAR_PROP_READ | LEGATTDB_CHAR_PROP_WRITE),指示該特征可讀可寫。

hello_sensor 項(xiàng)目的 gatt_db.c 文件則將這些定義與實(shí)現(xiàn)對該特征的安全訪問的代碼結(jié)合在一起。也就是能讓 LED 閃爍,閃爍次數(shù)由開發(fā)者鍵入控制臺的字符指示。就本示例應(yīng)用而言,訪問此功能要求通過藍(lán)牙中間人 (MITM) 配對,使用配對期間從控制臺輸入的用戶提供的密鑰,建立與該傳感器套件的連接。

一般而言,當(dāng)請求調(diào)用某一功能時(shí),相應(yīng)的處理程序執(zhí)行專用任務(wù),并且同時(shí)考慮已定義特征和安全訪問要求。對于 LED 閃爍示例,當(dāng)請求執(zhí)行 LED 閃爍功能時(shí),用于確保權(quán)限和授權(quán)訪問的實(shí)際代碼非常簡單。

為了更改 LED 閃爍特征值 (HANDLE_HSENS_SERVICE_CHAR_BLINK_VAL),代碼使用一個(gè)條件語句來確認(rèn)寫入權(quán)限和訪問授權(quán)(列表 2)。針對寫入權(quán)限,條件語句將請求的權(quán)限 (LEGATTDB_PERM_AUTH_WRITABLE) 與實(shí)際 LED 器件的閃爍權(quán)限設(shè)置LED_BLINK_CHAR_PERMISSION(列表 1b 的頂部定義)進(jìn)行比較。針對授權(quán),條件語句檢查當(dāng)前配對安全級別 (paired_security_level) 是否是通過 MITM 配對 (BTM_SEC_LINK_PAIRED_WITH_MITM) 創(chuàng)建的(列表 2)。

副本

/*

* Process write request or write command from peer device

*/

wiced_bt_gatt_status_t hello_sensor_gatts_req_write_handler( uint16_t conn_id, wiced_bt_gatt_write_t * p_data )

{

wiced_bt_gatt_status_t result = WICED_BT_GATT_SUCCESS;

uint8_t *p_attr = p_data->p_val;

uint8_t sec_flag, key_size;

WICED_BT_TRACE("write_handler: conn_id:%d hdl:0x%x prep:%d offset:%d len:%d ", conn_id, p_data->handle, p_data->is_prep, p_data->offset, p_data->val_len );

switch ( p_data->handle )

{

.

.

.

case HANDLE_HSENS_SERVICE_CHAR_TEMP_CFG_DESC:

if ( p_data->val_len != 2 )

{

return WICED_BT_GATT_INVALID_ATTR_LEN;

}

WICED_BT_TRACE( "Temp Notif Enabled ");

hello_sensor_hostinfo.temp_characteristic_client_configuration = p_attr[0] | ( p_attr[1] << 8 );

break;

case HANDLE_HSENS_SERVICE_CHAR_BLINK_VAL:

if ( p_data->val_len != 1 )

{

return WICED_BT_GATT_INVALID_ATTR_LEN;

}

if ((!(paired_security_level & BTM_SEC_LINK_PAIRED_WITH_MITM))&& (LED_BLINK_CHAR_PERMISSION & LEGATTDB_PERM_AUTH_WRITABLE))

{

WICED_BT_TRACE("Write Failed: Insufficient Authentication ");

return WICED_BT_GATT_INSUF_AUTHENTICATION;

}

hello_sensor_hostinfo.number_of_blinks = p_attr[0];

if ( hello_sensor_hostinfo.number_of_blinks != 0 )

{

WICED_BT_TRACE( "hello_sensor_write_handler:num blinks: %d ", hello_sensor_hostinfo.number_of_blinks );

wiced_bt_app_hal_led_blink(250, 250, hello_sensor_hostinfo.number_of_blinks );

}

break;

default:

result = WICED_BT_GATT_INVALID_HANDLE;

break;

}

return result;

}

列表 2:在 Cypress BLE Secure Hub 應(yīng)用的這個(gè)代碼片段中,當(dāng)請求執(zhí)行 LED 閃爍特征時(shí),首先需要通過權(quán)限和安全授權(quán)檢查(突出顯示部分)。(代碼來源:Cypress Semiconductor)

通過適用于傳感器項(xiàng)目和集線器項(xiàng)目的 GATT DB 定義和支持代碼,本示例應(yīng)用為開發(fā)人員提供了與三種不同安全級別相關(guān)的基本設(shè)計(jì)模式,包括任何級別的配對、此處描述的 MITM 配對和藍(lán)牙低功耗安全配對。后一種配對方法使用基于橢圓曲線 Diffie-Hellman (ECDH) 密鑰交換的驗(yàn)證方法,安全性最高。CYW20719 的集成安全引擎包含 ECDH 加速器,因此開發(fā)人員可以運(yùn)用此方法而不會(huì)影響性能。

總結(jié)

隨著集成式藍(lán)牙無線 MCU 的出現(xiàn),開發(fā)人員爭相將此類器件集成到其設(shè)計(jì)中。然而,為了實(shí)現(xiàn)安全的藍(lán)牙網(wǎng)絡(luò),開發(fā)人員在創(chuàng)建藍(lán)牙兼容服務(wù)和編寫能夠安全使用這些器件的應(yīng)用程序時(shí)面臨多重挑戰(zhàn)。

Cypress Semiconductor CYW920719Q40EVB-01 藍(lán)牙評估套件和 WICED 開發(fā)環(huán)境基于 Cypress CYW20719 藍(lán)牙 MCU,為構(gòu)建這些應(yīng)用提供了一個(gè)綜合性平臺。將該套件和 WICED 環(huán)境與 Cypress BLE Secure Hub 軟件包結(jié)合使用,開發(fā)人員可以快速評估安全藍(lán)牙應(yīng)用,并將其迅速擴(kuò)展到能夠利用藍(lán)牙 5 的增強(qiáng)速度和范圍的定制應(yīng)用中。

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

    關(guān)注

    114

    文章

    5844

    瀏覽量

    170778
  • FPU
    FPU
    +關(guān)注

    關(guān)注

    0

    文章

    42

    瀏覽量

    21347
  • PMU
    PMU
    +關(guān)注

    關(guān)注

    1

    文章

    108

    瀏覽量

    21643
收藏 人收藏

    評論

    相關(guān)推薦

    采用CYW207XX 藍(lán)牙芯片和WICED開發(fā)環(huán)境的全新藍(lán)牙模組系列

    賽普拉斯隆重推出采用CYW207XX 藍(lán)牙芯片和WICED開發(fā)環(huán)境的全新藍(lán)牙模組系列,提供行業(yè)領(lǐng)
    的頭像 發(fā)表于 09-25 15:23 ?1.4w次閱讀

    如何在CYW20706和CYW20719上使用HID?

    大家好, 我想在我的 CYW20706 和 CYW20719上使用 HID。 我 CAN在ModusToolbox中找不到任何HID示例。
    發(fā)表于 03-01 11:24

    CYW20719設(shè)備之間無法重新連接是為什么?

    環(huán)境如下所示 1. 準(zhǔn)備 20EA CYW20719 SPP 設(shè)備 將一組(A組)與10ea CYW20719設(shè)備作為主設(shè)備 創(chuàng)建另一個(gè)組(B組),其中10ea CYW20719作為從
    發(fā)表于 03-01 10:58

    請問cyw20719cyw20721是否支持RTOS?

    請確認(rèn) cyw20719cyw20721 是否支持 RTOS? 我們希望使用 RTOS 控制外設(shè) SPI、I2C、PWM、ADC 等。 如果有,您有移植指南嗎?
    發(fā)表于 05-20 06:39

    如何為CYW20719器件進(jìn)行射頻測試

    你好,我是新來的物聯(lián)網(wǎng)、&;我想考“cyw20719藍(lán)牙設(shè)備的射頻參數(shù),請幫我把AT命令保持裝置在手動(dòng)模式下進(jìn)行Tx、接收測試。 以上來自于百度翻譯 以下為原文Hi, I'm new
    發(fā)表于 09-03 16:07

    20719 SPI主時(shí)鐘配置問題

    嗨隊(duì),如何配置SPI時(shí)鐘SCLK = 50000赫茲速度為主人(clkspeed參數(shù)在函數(shù)wiced_hal_pspi_init())當(dāng)cyw20719使用一個(gè)24 MHz的晶體振蕩器(晶振)?我們
    發(fā)表于 09-05 15:37

    WICED 6.2是否支持CYW20706和CYW20719上的A2DP AAC編解碼器?

    :版本1。I2S總線可以是主或從:CYW20706A2、CYW20719B1、CYW433W、CYW4340根據(jù)“http://Cultual.Cy
    發(fā)表于 09-11 14:39

    在哪里可以找到CYW20719的I2S驅(qū)動(dòng)程序和API?

    ;wiced_hal_pcm.h" Can you tell me where to find the I2S drivers/API in WICED for the CYW20719?
    發(fā)表于 10-16 17:31

    什么時(shí)候可以使用基于CYW20719的模塊?

    嗨!我的一個(gè)客戶需要一個(gè)BT音頻連接到一個(gè)智能電話,并與一個(gè)遠(yuǎn)程連接的BLE連接。認(rèn)證模塊優(yōu)先。!主機(jī)處理器需要I2S接口。何時(shí)會(huì)有基于CYW20719的模塊可用?QTy/Y20K謝謝你Roland
    發(fā)表于 12-25 15:40

    CYW20719可以運(yùn)行FreeRtos嗎?

    嗨,親愛的我想在CYW20719中運(yùn)行FRIERTOS,我們有一些示例代碼。謝謝!伊桑 以上來自于百度翻譯 以下為原文Hi Dears I want to run FreeRTOS in CYW20719, do we have some example code. T
    發(fā)表于 01-02 16:35

    求一種Cypress CYW20719的集成解決方案

    為什么使用藍(lán)牙Cypress Semiconductor CYW20719有什么優(yōu)點(diǎn)?Cypress Semiconductor CYW20719
    發(fā)表于 07-02 07:54

    基于賽普拉斯CYW207XX和WICED開發(fā)環(huán)境的全新藍(lán)牙模組套件

    基于賽普拉斯CYW207XX藍(lán)牙芯片和WICED開發(fā)環(huán)境的全新藍(lán)牙模組套件,賽普拉斯合作伙伴中易
    的頭像 發(fā)表于 10-13 10:13 ?8489次閱讀

    貿(mào)澤開售支持藍(lán)牙網(wǎng)狀網(wǎng)絡(luò)的Cypress CYW20719 SoC

    專注于引入新品推動(dòng)行業(yè)創(chuàng)新的電子元器件分銷商貿(mào)澤電子(Mouser Electronics)即日起備貨Cypress Semiconductor的CYW20719雙模藍(lán)牙 無線微控制器。
    的頭像 發(fā)表于 08-18 10:09 ?3522次閱讀

    基于CYW20719的無線基帶處理器解決方案

    Cypress公司的CYW20719是兼容BT 5.0單獨(dú)可用的基帶處理器,集成了帶BLE,EDR和BR的2.4GHz收發(fā)器;采用先進(jìn)的40nm CMOS低功耗制造工藝,實(shí)現(xiàn)了高度集成以降低了外接元件,因此最小化應(yīng)用占位面積和成本。
    的頭像 發(fā)表于 04-05 22:33 ?5155次閱讀
    基于<b class='flag-5'>CYW20719</b>的無線基帶處理器解決方案

    CYPRESS 集成開發(fā)環(huán)境(IDE)WICED Studio的使用

    環(huán)境,適用于cypress收購broadcom IOT的單芯片開發(fā);當(dāng)然現(xiàn)在cypress已經(jīng)發(fā)布了整合PSoc Creator和WICED
    發(fā)表于 11-13 21:06 ?48次下載
    <b class='flag-5'>CYPRESS</b> 集成<b class='flag-5'>開發(fā)</b><b class='flag-5'>環(huán)境</b>(IDE)<b class='flag-5'>WICED</b> Studio的使用
    主站蜘蛛池模板: 123成人网| 中文字幕一区2区3区| 亚洲精品理论| 手机看片福利国产| 天天干天天看| 久久天天躁夜夜躁狠狠躁2020| 欧美影院| bt天堂在线最新版在线| 日本黄色xxxx| 亚洲一区二区三区中文字幕5566| 男人j桶进女人j的视频| 国产性做久久久久久| 新版天堂中文资源官网| 色偷偷免费| 免费高清一级欧美片在线观看| 国内自拍露脸普通话对白在线| 91桃色国产线观看免费| 天天爽夜夜爽视频| 高颜值露脸极品在线播放| 67pao强力打造高清免费| 中国一级特黄特级毛片| 色多多视频在线观看播放| 可以免费观看的一级毛片| www.色av.com| 免费簧片视频| 中文字幕一区二区在线观看| 优优优色| 欧美成人天天综合在线视色| www日本黄色| 免费观看午夜在线欧差毛片| 8x8x极品国产在线| 亚洲日韩色综合视频| 人人澡人人草| 东方天堂网| 久久久久久国产精品免费免费| 91在线视频观看| 性欧美video视频另类| 麦克斯奥特曼在线观看| 午夜精品在线观看| 2021最新国产成人精品视频| 高h上错人1v1|