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

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

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

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

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

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

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

為什么使用藍牙?

智能手機和其他移動設(shè)備廣泛支持藍牙,這使其成為將消費者與可穿戴設(shè)備和醫(yī)療設(shè)備等個人電子設(shè)備連接起來的首選無線技術(shù)。隨著藍牙 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è)計,開發(fā)人員可以借助越來越多的支持藍牙 5 的器件。這些器件結(jié)合了完整的 RF 子系統(tǒng)和處理器內(nèi)核,能夠執(zhí)行與藍牙通信相關(guān)的低級事務(wù)。然而,物聯(lián)網(wǎng)網(wǎng)絡(luò)需要維持低功耗并確保安全連接,這樣一來,在這些應(yīng)用中部署藍牙會更加復(fù)雜。

集成解決方案

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

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

Cypress Semiconductor CYW20719 示意圖

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

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

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

Cypress CYW20719 PMU 示意圖

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

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

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

系統(tǒng)集成

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

Cypress CYW20719 示意圖(點擊放大)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

secure_hub 項目和 hello_sensor 項目中的 gatt_db.h 頭文件和 gatt_db.c 代碼文件分別定義配置為安全集線器和傳感器的套件的 GAP 和 GATT 服務(wù)。對于此演示應(yīng)用,每個項目根據(jù)其角色定義一個定制 GATT 服務(wù)。例如,hello_sensor 項目頭文件包含一個定義強制性 GATT 和 GAP 服務(wù)句柄的 Cenum類型,以及用于傳感器服務(wù)的定制 GATT 定義(列表 1a)。該項目的 gatt_db.c 文件進而使用這些定義來構(gòu)建藍牙協(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 項目中包含一個頭文件,其為不同特征定義了一個枚舉類型 (A),供相應(yīng)的代碼模塊用以構(gòu)建藍牙運行所需的 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 項目的 gatt_db.c 文件則將這些定義與實現(xiàn)對該特征的安全訪問的代碼結(jié)合在一起。也就是能讓 LED 閃爍,閃爍次數(shù)由開發(fā)者鍵入控制臺的字符指示。就本示例應(yīng)用而言,訪問此功能要求通過藍牙中間人 (MITM) 配對,使用配對期間從控制臺輸入的用戶提供的密鑰,建立與該傳感器套件的連接。

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

為了更改 LED 閃爍特征值 (HANDLE_HSENS_SERVICE_CHAR_BLINK_VAL),代碼使用一個條件語句來確認寫入權(quán)限和訪問授權(quán)(列表 2)。針對寫入權(quán)限,條件語句將請求的權(quán)限 (LEGATTDB_PERM_AUTH_WRITABLE) 與實際 LED 器件的閃爍權(quán)限設(shè)置LED_BLINK_CHAR_PERMISSION(列表 1b 的頂部定義)進行比較。針對授權(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)用的這個代碼片段中,當(dāng)請求執(zhí)行 LED 閃爍特征時,首先需要通過權(quán)限和安全授權(quán)檢查(突出顯示部分)。(代碼來源:Cypress Semiconductor)

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

總結(jié)

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

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

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

    關(guān)注

    114

    文章

    5843

    瀏覽量

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

    關(guān)注

    0

    文章

    42

    瀏覽量

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

    關(guān)注

    1

    文章

    108

    瀏覽量

    21643
收藏 人收藏

    評論

    相關(guān)推薦

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

    賽普拉斯隆重推出采用CYW207XX 藍牙芯片和WICED開發(fā)環(huá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. 準備 20EA CYW20719 SPP 設(shè)備 將一組(A組)與10ea CYW20719設(shè)備作為主設(shè)備 創(chuàng)建另一個組(B組),其中10ea CYW20719作為從
    發(fā)表于 03-01 10:58

    請問cyw20719cyw20721是否支持RTOS?

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

    如何為CYW20719器件進行射頻測試

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

    20719 SPI主時鐘配置問題

    嗨隊,如何配置SPI時鐘SCLK = 50000赫茲速度為主人(clkspeed參數(shù)在函數(shù)wiced_hal_pspi_init())當(dāng)cyw20719使用一個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ū)動程序和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

    什么時候可以使用基于CYW20719的模塊?

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

    CYW20719可以運行FreeRtos嗎?

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

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

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

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

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

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

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

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

    Cypress公司的CYW20719是兼容BT 5.0單獨可用的基帶處理器,集成了帶BLE,EDR和BR的2.4GHz收發(fā)器;采用先進的40nm CMOS低功耗制造工藝,實現(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的使用