建立安全低功率的藍牙集線器與感測器網路

作者:Stephen Evanczuk

資料提供者:DigiKey 北美編輯群

行動裝置搭載藍牙的情況日益普遍,因此消費者能以此簡易的無線方式存取智慧型產品。但對 IoT 開發人員來說,建構藍牙連線式感測器網路有其挑戰,例如要達到最長電池續航力、藍牙通訊協定最佳化,還要確保裝置間有安全的連線。

本文中展示如何使用進階藍牙裝置以及 Cypress Semiconductor 所提供的相關開發環境,讓開發人員能夠快速處理這些問題,並更快實作安全的藍牙集線器感測器網路。

為何使用藍牙?

智慧型手機和其他行動裝置廣泛支援藍牙,使其成為讓消費者與穿戴式裝置、醫療裝置等個人電子裝置連結的首選無線技術。隨著藍牙 5 問世,物聯網開發者也能夠利用這些優勢,同時達成感測器網路和其他 IoT 應用對更長傳輸距離及更高資料傳輸速率的要求。

若要為這些應用打造專用的設計,開發人員可以尋求越來越多支援藍牙 5 的各種裝置。這些裝置結合了完整的 RF 子系統以及處理器核心,能夠執行與藍牙通訊相關的低階交易。但是,要維持低功耗並確保 IoT 網路的安全連線,在這些應用中部署藍牙的複雜度會更高。

整合式解決方案

Cypress Semiconductor 的 CYW20719 係針對電池驅動的藍牙連線設計,能滿足不斷增加的需求,用於 IoT、穿戴式裝置、個人電子裝置以及其他低功率應用。除了具備低功率特性,還支援包含適應性跳頻在內的各項先進藍牙 5 功能,能夠在這些應用所處的忙碌無線電環境中,提供重要的優勢。

這款元件整合了低功耗藍牙無線電子系統、含浮點單元 (FPU) 的 Arm® Cortex®-M4 核心以及多個週邊裝置區塊 (圖 1)。另外,晶片上安全引擎能夠加速公鑰加密,並提供所需的關鍵加密功能,幫助確保藍牙安全運作。最後,晶片上電源管理單元 (PMU) 為開發人員提供彈性的機制,能夠支援藍牙裝置日益增加的超低功率運作需求。

Cypress Semiconductor 的 CYW20719 裝置圖

圖 1:Cypress Semiconductor 的 CYW20719 結合了 Arm® Cortex®-M4、完整的藍牙子系統以及內建的軟體服務,能夠為低功耗設計提供完整支援藍牙 5 的無線 MCU。(圖片來源:Cypress Semiconductor)

CYW20719 無線電子系統內含完整的 2.5 GHz RF 訊號路徑,可進行發射 (Tx) 與接收 (Rx) 操作。對於 Rx 訊號路徑,此元件會衰減頻外訊號,達到 -95.5 dBm Rx 靈敏度,同時可讓開發人員無需使用額外的晶片外濾波器。其 Tx 訊號路徑包含整合式功率放大器 (PA),範圍從 -24 dBm 到最高 +4 dBm,專為支援可設定發射功率等級所設計。除了整合式實體層 (PHY) 能力之外,此元件還包含完整的晶片上藍牙 5 媒體存取控制 (MAC) 層。有了最佳化的 Rx 與 Tx 訊號路徑,僅需 5.9 mA Rx 電流或 5.6 mA (@ 0 dBm) Tx 電流。

為了進一步將功耗降到最低,該元件也提供多功率模式,由內建電源管理單元 (PMU) 進行管理。PMU 專為供應獨立 RF 及數位電源域所設計,結合一個整合式降壓穩壓器、一個用於數位電路的低壓降穩壓器 (LDO),以及一個用於 RF 電路的獨立 LDO (圖 2)。另外,PMU 還包含獨立的旁路 LDO (BYPLDO),當 VBAT 電源降至 2.1 V 以下時,會自動旁路降壓穩壓器,對數位與 RF LDO 進行供電。

Cypress 的 CYW20719 PMU 圖

圖 2:Cypress 的 CYW20719 PMU 管理獨立的不同電源域,這些電源域能夠在不同的低功率模式下選擇性停用,以降低低功率設計中的電流消耗。(圖片來源:Cypress Semiconductor)

運作時,PMU 會根據選定的電源模式來調整電源域,這些模式包含全主動模式、閒置模式以及三種不同的睡眠模式。在最低功率的關機睡眠 (SDS) 模式中,PMU 會關閉幾乎所有的元件區塊,剩餘的供電區塊為 I/O 電源、即時時脈 (RTC) 以及用於某些區塊與喚醒計時時脈來源之專用低功率振盪器 (LPO)。

即便僅使用這些極少量的資源,SDS 模式下的 CYW20719 還是能夠與先前配對的另一個藍牙裝置保持連線,過程中的耗電量少於 70 μA。但是,在這個模式下,裝置並不會維持記憶體,並且需要進行暖啟動以回復狀態,才能繼續進行較為複雜的作業。另外兩個睡眠模式為斷電睡眠 (PDS) 與睡眠狀態,會維持包含記憶體保存在內的較高裝置活動級別,而耗電量會同等增加。即便如此,耗電量預算十分有限的開發人員還是可以利用 PDS 模式的優點,實現低功耗藍牙廣告 (約 125 μA) 及主動連線 (約 170 μA) 功能。透過管理裝置的電源模式,開發人員便能夠輕鬆達到極低耗電量的運作,而不用對功能妥協。

系統整合

即便具有相當彈性的運作模式以及廣泛的功能,CYW20719 還是需要少量額外元件,以便在系統設計中完成硬體整合。因為晶片上已整合了關鍵的元件,因此開發人員只需要加入一些電阻、耦合電容、2.2 µH 電感 (如 MurataLQH2MCN2R2M52L),以及鐵氧體磁珠 (如 Murata 的 BLM15AG601SN1D) 即可 (圖 3)。而將旁路濾波器放在 CYW20719 與天線配對元件之間以降低諧波,仍然是明智的做法。

Cypress 的 CYW20719 圖 (按此放大)

圖 3:因為 Cypress 的 CYW20719 整合了所有關鍵功能,因此開發人員只需要幾個額外的元件,便能夠完成硬體整合,其中建議使用帶通濾波器以降低諧波。(圖片來源:Cypress Semiconductor)

這款元件具有多種晶片上記憶體,包含 1 MB 的快閃記憶體、512 KB 的 RAM 以及 2 MB 的 ROM,因此也能夠幫助簡化軟體整合。快閃記憶體和 RAM 能夠為開發人員提供應用程式所需的記憶體空間,而晶片上 ROM 則會保留供裝置上的韌體和藍牙設定檔使用。為了在有需要時支援韌體修補程式,此元件會提供修補程式 RAM:這一 RAM 區塊會透過修補程式控制邏輯進行連接 (請見上圖 1)。最後,此元件提供常開式記憶體 (AON) 區塊,讓元件甚至在 SDS 等可能關閉揮發性記憶體的低功耗模式下,也能夠儲存資料。

雖然相較於其他先進的元件,晶片上提供的 RAM 和快閃記憶體可能看起來有些受限,但 ROM 內建的廣泛軟體支援可確保典型的應用程式有大量的記憶體可用。Cypress 會為晶片上 ROM 設定完整的軟體堆疊,從最低階的硬體抽象層 (HAL) 到嵌入式裝置無線網際網路連線 (WICED) 環境所使用的應用程式開發介面 (API) (圖 4)。

Cypress CYW20719 的 2 MB ROM 韌體圖片

圖 4:Cypress CYW20719 的 2 MB ROM 韌體提供了完整的軟體堆疊,包含即時作業系統,可降低開發人員應用程式碼的複雜度與佔用空間。(圖片來源:Cypress Semiconductor)

ROM 韌體是以 HAL 為基礎建立,會執行內建的即時作業系統,並處理與 CYW20719 硬體的所有互動。同時,ROM 韌體內含全套豐富齊備的藍牙服務層,包含支援必要的藍牙泛型屬性設定檔 (GATT) 以及通用存取設定檔 (GAP) 的服務層。

對於一般的應用,開發人員的程式碼會從 RAM 執行,使用 WICED API 來存取 RTOS、周邊裝置以及其他元件功能。雖然 RAM 的需求可能有很大差異,但 CYW20719 大部份的應用程式碼通常會留下大量的記憶體可用空間,供資料或工作記憶體使用。例如,稍後會說明的 hello_sensor 應用程式會留出 240 KB 的 RAM 可用空間。

但對於程式碼特別大型的應用程式來說,開發人員可以利用 CYW20719 經過專門設計的能力,直接從晶片上快閃記憶體就地執行 (XIP)。此種情況下,WICED 環境會將開發人員所指定的程式碼以及唯讀資料區塊載入到晶片上快閃記憶體,並將剩下的區塊載入到 RAM 上。顯然,這種做法會減少應用程式在 RAM 當中的佔用量,但也可能影響效能。因此,開發人員在指定 XIP 程式碼區塊時,需要相當謹慎,確保將時間關鍵的功能放進 RAM。

應用開發

雖然 CYW20719 會簡化設計方面的整合,但專注於安全低功耗藍牙應用的開發人員,仍然可能會在完成硬體設計以及應用程式開發方面,面臨大幅延遲。Cypress 的 CYW920719Q40EVB-01 評估套件是專為展示以 CYW20719 為基礎的應用程式所開發,能夠搭配 Cypress WICED 軟體環境使用,提供公版設計與全面的開發平台,用於打造符合藍牙 5.0 規範的 IoT 應用。

此評估套件是以搭載模組為中心所打造,內建圖 3 設計中的 CYW20719,外加一個 Torex SemiconductorXC6119N 電壓檢測器,連接到 CYW20719 的 RST_N 引腳以執行重置。乘載模組焊接到套件的基板上,此基板包含 STMicroelectronicsLSM9DS1TR 9 軸動作感測器、Murata 的 NCU 系列 NTC 熱敏電阻、CYW20719 GPIO 連接埠、除錯連接、相容於 Arduino 的擴充排針座,以及作為簡單使用者介面的開關與 LED 燈 (圖 5)。

Cypress 的 CYW920719Q40EVB-01 評估套件圖

圖 5:Cypress 的 CYW920719Q40EVB-01 評估套件結合搭載模組上的 CYW20719 與多個基板元件,能夠支援典型的 IoT 應用。(圖片來源:Cypress Semiconductor)

Cypress 所提供的範例軟體使用 CYW20719 以及其他元件,廣泛展示由多個感測器裝置與中央集線器組成的代表性 IoT 網路中的安全藍牙連線 (圖 6)。使用這個範例應用程式,開發人員便能夠探索在感測器裝置與集線器之間進行配對的不同安全層級,並評估這些不同安全層級對於資料交換的影響。

CYW920719Q40EVB-01 套件以及 Cypress WICED 開發環境圖

圖 6:Cypress 範例應用程式專為搭配多個 CYW920719Q40EVB-01 套件以及 Cypress WICED 開發環境使用所設計,展現在代表性 IoT 應用中的安全藍牙連線。(圖片來源:Cypress Semiconductor)

針對應用的硬體,開發人員會將一個獨立的 CYW920719Q40EVB-01 套件設定為安全集線器,以及將額外的套件設定為網路中的個別感測器。以序列埠連接到各個套件的個人電腦提供一個控制台,用來設定參數、檢視資料、列印除錯訊息以及與範例應用程式進行其他互動。

這類典型應用程式中唯一剩下的元素是連接到行動裝置以實現應用監控以及控制功能,不過此範例應用程式中並未包含這一元素。此處,透過序列埠連接的個人電腦發揮大致相同的功能。

Cypress 在供其 WICED 開發環境使用的 CYW20917 BLE Secure Hub C 語言套件中,搭配了此範例應用程式的軟體。在本例中,此套件包含兩個專案,適用於範例應用程式中兩個不同的角色。其中一個專案 (secure_hub) 是專為在指定為安全集線器的套件上執行所設計,讓集線器能夠支援多個藍牙協定角色。集線器軟體經過特別設計,以在不同安全等級,針對作為從屬裝置運行的不同套件進行配對。

設定為從屬裝置的套件會執行感測器專案 (hello_sensor),用以說明在配對期間建立的安全等級下,所進行的資料收集與通訊。每個專案都包含支援各個功能角色所需的多個標頭以及程式碼模組。在這些檔案當中,secure_hub 以及 hello_sensor 專案各自包含泛型屬性設定檔 (GATT) 標頭 (gatt_db.h) 以及程式碼 (gatt_db.c) 檔案。

在藍牙通訊協定中,稱為 GATT 資料庫 (DB) 的查找表會透過一組各自具有一系列受支援特性的預定義服務,來定義藍牙連線的本質與功能。例如,藍牙規格包含預定義的 GATT 服務,範圍從警報通知與裝置資訊等實用功能,到血壓與脈搏血氧儀服務等應用特定功能。裝置的藍牙通用存取設定檔 (GAP) 充當比 GATT 服務更為基礎的角色,會定義裝置如何進行自我廣播以供網路探索,以及如何在被探索到後建立連線。

secure_hub 專案與 hello_sensor 專案中的 gatt_db.h 標頭檔和 gatt_db.c 程式碼檔會針對安全集線器與感測器套件,個別定義 GAP 及 GATT 服務。在這個展示應用程式中,各個專案都會根據其角色定義自訂的 GATT 服務。例如,hello_sensor 專案的標頭檔包含 C 列舉 類型,定義了強制的 GATT 與 GAP 服務句柄,並包含了感測器服務的自訂 GATT 定義 (清單 1a)。接著,專案的 gatt_db.c 檔案會使用這些定義來建立藍牙通訊協定中所需的 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 應用程式的 hello_sensor 專案中包含一個標頭檔,定義不同特性之列舉類型 (A),供對應的程式碼模組用來建立藍牙運作所需的 GATT DB。(程式碼來源:Cypress Semiconductor)

嵌入到這些定義中的 GATT 感測器服務還會定義底層的服務特性是否能夠讀、寫、通知或指示資訊 (使用連接的控制台)。例如,LED 的閃爍特性 (在清單 1a 中宣告並在清單 1b 中採用的 HANDLE_HSENS_SERVICE_CHAR_BLINK) 包含位元遮罩 (清單 1b 中的 LEGATTDB_CHAR_PROP_READ | LEGATTDB_CHAR_PROP_WRITE),指出特性為可讀且可寫。

hello_sensor 專案的 gatt_db.c 檔案則是將這些定義與實作安全存取該特性的程式碼結合。也就是說,LED 的指定閃爍次數由開發人員輸入控制主機中的字元所決定。為了讓這個範例應用程式使用這項功能,需要透過藍牙中間人 (MITM) 配對,在配對期間使用控制主機來輸入使用者提供的密碼,來連接到感測器套件。

一般來說,在要求實行某些功能時,對應的處理常式會執行應用程式特定的工作,並考慮到定義的特性以及安全存取要求。對於讓 LED 閃爍這個例子而言,當要求執行 LED 閃爍功能時,確保權限以及授權存取的實際程式碼相當的簡單。

為了變更 LED 閃爍的特性值 (HANDLE_HSENS_SERVICE_CHAR_BLINK_VAL),程式碼使用條件陳述式來確認寫入權限及存取授權 (清單 2)。對於寫入權限,條件陳述式會將要求的權限 (LEGATTDB_PERM_AUTH_WRITABLE) 與 LED 裝置的實際閃爍權限設定 LED_BLINK_CHAR_PERMISSION (在清單 1b 頂端定義) 進行比較。對於授權,條件陳述式會檢查目前的配對安全等級 (paired_security_level) 是否為使用 MITM 配對來產生 (BTM_SEC_LINK_PAIRED_WITH_MITM) (清單 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\r\n ", 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\r\n");

 

           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\r\n");

            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\r\n", 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 應用程式的程式碼片段當中,執行 LED 閃爍特性的要求需要先通過權限檢查 (螢光標記) 與安全性授權。(程式碼來源:Cypress Semiconductor)

這個範例應用程式使用適合感測器專案與集線器專案的 GATT DB 定義及支援程式碼,為開發人員提供三種不同安全性等級的相關基礎設計模式;這些等級包含任意配對等級、此處說明的 MITM 配對,以及藍牙低功率安全配對。最後這種配對方式會使用以橢圓曲線迪菲-赫爾曼 (ECDH) 金鑰交換為根據的驗證方法。因為 CYW20719 的整合式安全引擎內含 ECDH 加速器,因此開發人員能夠部署此方法而不用對效能妥協。

結論

支援藍牙的整合式無線 MCU 自問市以來,加速了開發人員將這些元件整合進設計中的步伐。但若要實作安全的藍牙網路,開發人員會在建立藍牙相容服務以及撰寫能夠安全使用這些元件的應用程式時,碰到許多的挑戰。

Cypress Semiconductor 的 CW920719Q40EVB-01 藍牙評估套件與 WICED 開發環境以 Cypress CYW20719 藍牙 MCU 作為基礎,提供建立這些應用程式的綜合平台。使用評估套件與 WICED 環境並結合 Cypress BLE Secure Hub 套件,開發人員能夠快速評估安全的藍牙應用,並將其快速拓展到能夠利用藍牙 5 之更高速與更大範圍的自訂應用。

DigiKey logo

聲明:各作者及/或論壇參與者於本網站所發表之意見、理念和觀點,概不反映 DigiKey 的意見、理念和觀點,亦非 DigiKey 的正式原則。

關於作者

Image of Stephen Evanczuk

Stephen Evanczuk

Stephen Evanczuk 撰寫電子產業的相關資訊已有超過二十年的經驗,涉及的主題多元,涵蓋硬體、軟體、系統以及包含 IoT 在內的應用。他以神經元網路為研究主題,取得神經科學博士學位,並且在航太產業,針對廣泛運用的安全系統和演算法加速方法進行研究。目前,在撰寫科技和工程文章之餘,他投入辨識和推薦系統的深度學習應用。

關於出版者

DigiKey 北美編輯群