多協議無線開發板FRDM-KW40Z 安全
學習筆記 網絡
(BLE+802.15.4+Proprietory/SMAC) 架構
文檔編號工具 |
AN1200-0000-A0學習 |
關鍵字測試 |
KW40Z, ARM, Cortex-M, SOC, Bluetooth, BLE,SMAC優化 |
摘要ui |
本文記錄、整理了學習採用多協議無線開發板FRDM-KW40Z的開發試驗過程和心得體會,報過對NXP/Freescal的KW40Z系列無線SoC的芯片特性、開發平臺的特性和功能、BLE、802.15.4以及NXP私有的SMAC無線通信協議的開發。列舉了無線應用的系統架構搭建,硬件設計和軟件開發。設計 |
Mars4zhu 3d
目 錄
2 FRDM-KW40Z開發板BLE-Demo-Software例程 3
2.2. 使用官方App-Kinetis BLE Toolbox進行BLE通信 4
2.3.2 使用nRF Master Control Panel進行調試 15
插圖索引
圖 28 FRDM-KW40Z演示例程的加速度傳感器狀態顯示 8
圖 29 FRDM-KW40Z演示例程的磁傳感器狀態顯示 9
圖 211 FRDM-KW40Z演示例程的調試串口信息輸出 10
圖 212 CySmart掃描到的BLE廣播設備(已修改設備名爲Hi,KW40Z) 11
圖 213 FRDM-KW40Z演示例程的詳細Service列表 11
圖 214 顯示標準的Device Info Service和自定義的Led_control_service的Characteristic 12
圖 215 讀取的LED Status Characteristic 13
圖 216 寫入的LED Control Characteristic 13
圖 217 設置Switch的Notify並實時顯示按鍵狀態改變的時間和按鍵值 14
圖 218 設置Potential Meter的Notify並實時顯示電位器值和改變的時間 14
圖 219 設置Accelerate的Notify並實時顯示加速度傳感器數據和改變的時間 15
圖 220 設置Compass的Notify並實時顯示磁傳感器數據和改變的時間 15
圖 221 nRF Master Control Panel 掃描到的BLE廣播設備和對應的RSSI曲線 16
圖 222 Service列表和標準的Device Info Service的各Characteristic值 16
圖 223 讀取LED Status Characteristic的值 17
圖 224 寫入LED Control Characteristic值 17
圖 225 Notify按鍵狀態並顯示按鍵狀態和時間以及收發BLE數據包的日誌記錄 18
表格索引
錯誤!未找到目錄項。
目前物聯網發展迅猛,做爲物聯網的底層技術基礎,無線通信協議有着決定性的重要做用和廣闊的市場,如藍牙、Zigbee、Thread、Wifi都各自針對物聯網進行了各類技術演化,針對多種無線通信協議開發了多合一的無線芯片成爲主流半導體廠商的選擇,以便覆蓋各類場合的應用,佔領更多的市場。如TI的CC2560系列、SiliconLabs的Mighty-Gecko,國內泰凌微的TLSR8269系列等。而合併了Freescale的NXP固然也不甘落後,推出了支持多種協議(BLE、Zigbee、Thread、802.15.四、私有SMAC協議、2.4G自定義)的無線SoC:MKW40Z和MKW41Z系列。
KW40Z是一款高集成度的單芯片器件,讓便攜式、超低功耗的嵌入式系統具有Bluetooth® Smart/Bluetooth® Low Energy (BLE) v4.1和IEEE® 802.15.4-2011射頻鏈接。應用包括便攜式醫療設備、可穿戴的運動和健身設備、AV遙控器、電腦鍵盤和鼠標、遊戲控制器、門禁、安防系統、智能能源和家庭網絡。
KW40Z MCU集成了一個2.4 GHz收發器,支持多種FSK/GFSK和O-QPSK調製,一個ARM® Cortex®-M0+處理器,160 KB閃存和20 KB SRAM,BLE鏈路層硬件,802.15.4分組處理器,硬件安全和外圍設備,優化後知足目標應用的要求。KW40Z擁有足夠的片上內存,可爲多模應用同時運行Bluetooth Low Energy協議棧和IEEE 8021.5.4 MAC/PHY。
目標應用:面向物聯網(IoT)的智能互聯解決方案。
多協議無線電
符合2.4 GHz Bluetooth Low Energy V4.1
符合IEEE Std. 802.15.4-2011標準
典型的接收靈敏度(BLE) = -91 dBm
典型的接收靈敏度(802.15.4) = -102 dBm
發射輸出功率可設置:-20 dBm至+5 dBm
內核和存儲器
高達48 MHz ARM® Cortex-M0+內核
片上160 KB閃存
片上20 KB SRAM
功耗低,工做電壓範圍
9個低功耗模式,根據應用需求提供優化的電源
典型接收/發送電流(直流/支持直流): 6.5 mA / 8.4 mA
旁路電壓:1.71V至3.6V
DCDC轉換器降壓配置:2.1V至4.2V
DCDC轉換器升壓配置:0.9V 至1.795V
模擬模塊
16位模數轉換器(ADC)
12位數模轉換器 (DAC)
6位高速模擬比較器(CMP)
安全性
AES-128加速器(AESA),真隨機數發生器(TRNG)
支持軟件
BLE主機協議棧和配置文件、802.15.4 MAC和SMAC
Kinetis®軟件開發套件(SDK)
FreeRTOS內核和裸機非搶佔任務調度器
BLE-Demo-Software要求開發板的電路配置與默認配置不同,主要是由於DCDC管理要求不一樣。所以須要對開發板進行跳線設置。
其中跳帽是2mm間距的,不是經常使用的2.54mm,能夠從開發板上不用的跳帽如J23/J27等來補充使用。
首先安裝KW40Z_Connectivity_Software_1.0.1,而後從網上下載FRDMKW40ZDAUGSW.zip並解壓frdm_kw40z_demo_1.0,用IAR打開frdm-kw40z_demo.eww,點擊編譯並下載便可。
FRDM-KW40Z自帶的例程充分演示了KW40Z的BLE與手機進行無線通信,並向手機App發送各類狀態和傳感器數據,同時手機App也能夠經過BLE控制板載的LED以及蜂鳴器等外設。
上電開發板,默認上電是初始化後進入Idle狀態,須要按下SW4使得開發板開始廣播BLE數據,此時LED1會不停地閃動。
在手機上安裝kinetis-ble-toolbox(截止2017-02-18版本爲v4.0.0),打開後點擊FRDM-KW40Z-Dmo界面,搜索FRDM開發板(此處App用了UUID過濾器,只會顯示運行了FRDM-KW40Z-Demo固件的BLE設備,在其餘BLE-App中若是沒有過濾器,則會顯示周圍全部搜索到的BLE設備)。當出現設備後點擊便可進行鏈接,鏈接後開發板的LED一直亮,代表創建了鏈接。
鏈接後App首先會Discover全部的Service和Characteristic,並顯示對應的Service列表。包含有LED、Switch等Service。
點擊LED,則能夠經過手機App界面上的三個按鈕對板載的3個LED(LED2/3/4,LED1做爲鏈接/廣播狀態顯示)。
返回後點擊Switch,則能夠在手機App界面顯示板載的SW1/2/3的開關狀態,其中SW3是機械按鍵,按下後便可切換一次App界面上對應的按鍵狀態。SW1和SW2是電容感應的觸摸按鍵,觸摸一次後便可切換App對應的按鍵狀態,而觸摸後一直停留在電容按鍵位置上,則會不停地切換按鍵狀態。
返回後點擊Buzzer,能夠經過App控制蜂鳴器的鳴叫。點擊一次便可使蜂鳴器發聲,再點擊一次則中止。
返回後點擊Chip Temperate,則App顯示芯片溫度,該溫度值經過讀取芯片內部集成的溫度傳感器得到芯片溫度,把手指放在芯片上,能夠看到溫度發生變化。
返回後點擊Potentiometer,App顯示板載電位器的位置。旋轉電位器能夠看到App界面上的變化。
返回後點擊Accelerometer,則App顯示開發板上的複合傳感器FXOS8700CQ讀取開發板的加速度(重力加速度+位移加速度的疊加)的X、Y、Z三軸方向上的加速度值,移動搖晃開發板後,曲線發生變化。
圖 28 FRDM-KW40Z演示例程的加速度傳感器狀態顯示
返回後點擊e-Compass,則App首先指示開發板對複合傳感器FXOS8700CQ的磁傳感器部分進行校準(地磁場+外部磁性物體磁場的疊加),即經過讀取剛開始靜態的磁場做爲原始位置,而後轉動開發板後,手機App上顯示與開發板所指定的方向一致。
返回後點擊Remote Control,能夠經過App控制紅外遙控設備如電視等。在下方選擇電視品牌,而後能夠點擊開關機、切換音量/頻道等功能。該功能經過板載的紅外發射管發射與原裝遙控器一樣的紅外遙控信號實現外部設備的控制。
在測試過程當中若是用串口調試軟件打開FRDM-KW40Z的串口,則會有信息輸出。
對BLE調試主要是在BLE廣播數據、RSSI信號強度和時序,各Service/characteristic的read/write/notify等底層特性。官方App是針對具體的例程進行的上層界面封裝。而爲了接觸到BLE通信的底層特性,探究各個Service與Characteristic的手動讀寫等操做,須要使用BLE調試App。
目前比較多的是lightblue以及BLE芯片廠商的調試App。這裏主要藉助Nordic的nRF Master Control Panel 以及 Cypress的CySmart兩款App進行調試。
廣播發現BLE設備,能夠顯示RSSi信號強度數值。
圖 212 CySmart掃描到的BLE廣播設備(已修改設備名爲Hi,KW40Z)
點擊便可進行鏈接,鏈接後列舉Service(對於BLE規範定義的標準Service都能顯示標準的Service-Name,對於例程自定義的service只能顯示UUID)
圖 213 FRDM-KW40Z演示例程的詳細Service列表
此處爲LED控制對應的Service,代碼中對應爲led_control_service。
/* LED Control Service */
UUID128(uuid_service_led_control, 0xE0, 0x1C, 0x4B, 0x5E, 0x1E, 0xEB, 0xA1, 0x5C, 0xEE, 0xF4, 0x5E, 0xBA, 0x00, 0x56, 0xFF, 0x02)
讀取Service的Characteristic,對於BLE規範定義的標準Characteristic都能自動讀取並顯示。
圖 214 顯示標準的Device Info Service和自定義的Led_control_service的Characteristic
對於例程自定義的Characteristic只能顯示各個Characteristic的UUID,如須要讀寫則要點擊相應的Characteristic後進入讀/寫界面。
從代碼中得知led_control_service的Characteristic的UUID包含有LED的狀態和控制兩個Characteristic特徵值。
/* LED Status Characteristic */
UUID128(uuid_characteristic_led_status, 0xE0, 0x1C, 0x4B, 0x5E, 0x1E, 0xEB, 0xA1, 0x5C, 0xEE, 0xF4, 0x5E, 0xBA, 0x00, 0x57, 0xFF, 0x02)
/* LED Control Characteristic */
UUID128(uuid_characteristic_led_control, 0xE0, 0x1C, 0x4B, 0x5E, 0x1E, 0xEB, 0xA1, 0x5C, 0xEE, 0xF4, 0x5E, 0xBA, 0x01, 0x57, 0xFF, 0x02)
點擊具備Read屬性,即UUID爲02ff5700開頭的Characteristic,能夠讀取到LED的狀態。其中07狀態是在三個LED所有點亮的狀態下讀取的,04狀態是在LED2單獨點亮的狀態讀取的。瀏覽代碼能夠得知每一個LED佔用一個bit位,LED2/3/4分別爲讀取的LED Status Characteristic的0/1/2位。
圖 215 讀取的LED Status Characteristic
點擊具備Write屬性,即UUID爲02ff5701開頭的Characteristic寫入LED,瀏覽代碼後能夠得知led Control Characteristic的格式爲兩個字節,第一個爲須要控制的LED序號(0/1/2),第二個爲須要控制的LED狀態,0表明LED熄滅,1表明LED點亮。所以寫入以下,此時LED點亮,經過讀取LED狀態值顯示對應的LED狀態。
圖 216 寫入的LED Control Characteristic
圖 217 設置Switch的Notify並實時顯示按鍵狀態改變的時間和按鍵值
圖 218 設置Potential Meter的Notify並實時顯示電位器值和改變的時間
圖 219 設置Accelerate的Notify並實時顯示加速度傳感器數據和改變的時間
圖 220 設置Compass的Notify並實時顯示磁傳感器數據和改變的時間
其他各個Service及其Characteristic就不一一列舉了,手動read/write//notify方式都相似。
廣播掃描發現BLE設備
圖 221 nRF Master Control Panel 掃描到的BLE廣播設備和對應的RSSI曲線
nRF的BLE調試工具還能以曲線形式顯示各廣播BLE設備的RSSI信號強度,可見FRDM-KW40Z的信號強度遠遠高於周圍的其餘BLE設備,由於開發板就在手機附近。
點擊Connect後,App會開始Discovery全部的Service和Characteristic,並以列表的形式顯示。點擊每個Service顯示該Service包含的Characteristic,再點擊向下的箭頭爲讀取,點擊向上箭頭爲寫入。
圖 222 Service列表和標準的Device Info Service的各Characteristic值
點擊第一個Unknown Service,一樣的方式讀取LED狀態和寫入LED控制字
圖 223 讀取LED Status Characteristic的值
圖 224 寫入LED Control Characteristic值
在按鍵的Service裏面使能Notify後,實時顯示按鍵狀態改變值和時間。
圖 225 Notify按鍵狀態並顯示按鍵狀態和時間以及收發BLE數據包的日誌記錄
日誌記錄裏面詳細記錄了每一次Discover Service/Characteristic,讀/寫/使能notify等操做。對於調試來講很是有幫助。
其他的操做相似,不一一列舉。
版本號 |
發佈時間 |
內容 |
A0 |
2017-02-18 |
初次編寫 |