多协议无线开发板FRDM-KW40Z

多协议无线开发板FRDM-KW40Z

学习笔记

(BLE+802.15.4+Proprietory/SMAC)

文档编号

AN1200-0000-A0

关键字

KW40Z, ARM, Cortex-M, SOC, Bluetooth, BLE,SMAC

摘要

本文记录、整理了学习采用多协议无线开发板FRDM-KW40Z的开发试验过程和心得体会,报过对NXP/Freescal的KW40Z系列无线SoC的芯片特性、开发平台的特性和功能、BLE、802.15.4以及NXP私有的SMAC无线通讯协议的开发。列举了无线应用的系统架构搭建,硬件设计和软件开发。

Mars4zhu

目 录

1 KW40Z概述 1

1.1. 特性 2

2 FRDM-KW40Z开发板BLE-Demo-Software例程 3

2.1. 设置开发板,编译下载demo例程固件 3

2.2. 使用官方App-Kinetis BLE Toolbox进行BLE通讯 4

2.3. 使用其他BLE调试App进行BLE通讯 10

2.3.1 使用CySmart进行BLE调试 11

2.3.2 使用nRF Master Control Panel进行调试 15

3 版本历史(Revision History) 19

插图索引

图 11   MKW系列无线SoC的架构框图 2

图 21   FRDM-KW40Z演示例程的硬件跳线设置 4

图 22   FRDM-KW40Z演示例程的App连接界面 5

图 23   FRDM-KW40Z演示例程的LED控制 5

图 24   FRDM-KW40Z演示例程的按键状态显示 6

图 25   FRDM-KW40Z演示例程的蜂鸣器控制 6

图 26   FRDM-KW40Z演示例程的芯片温度显示 7

图 27   FRDM-KW40Z演示例程的电位器状态显示 7

图 28   FRDM-KW40Z演示例程的加速度传感器状态显示 8

图 29   FRDM-KW40Z演示例程的磁传感器状态显示 9

图 210   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


表格索引

错误!未找到目录项。

1 KW40Z概述

目前物联网发展迅猛,作为物联网的底层技术基础,无线通讯协议有着决定性的重要作用和广阔的市场,如蓝牙、Zigbee、Thread、Wifi都各自针对物联网进行了各种技术演化,针对多种无线通讯协议开发了多合一的无线芯片成为主流半导体厂商的选择,以便覆盖各种场合的应用,占领更多的市场。如TI的CC2560系列、SiliconLabs的Mighty-Gecko,国内泰凌微的TLSR8269系列等。而合并了Freescale的NXP当然也不甘落后,推出了支持多种协议(BLE、Zigbee、Thread、802.15.4、私有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)的智能互联解决方案。

wps5808.tmp[4]

11  MKW系列无线SoC的架构框图

1.1. 特性

多协议无线电

符合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内核和裸机非抢占任务调度器

2 FRDM-KW40Z开发板BLE-Demo-Software例程

2.1. 设置开发板,编译下载demo例程固件

BLE-Demo-Software要求开发板的电路配置与默认配置不一样,主要是因为DCDC管理要求不同。因此需要对开发板进行跳线设置。

wps5866.tmp[4]

21  FRDM-KW40Z演示例程的硬件跳线设置

其中跳帽是2mm间距的,不是常用的2.54mm,可以从开发板上不用的跳帽如J23/J27等来补充使用。

首先安装KW40Z_Connectivity_Software_1.0.1,然后从网上下载FRDMKW40ZDAUGSW.zip并解压frdm_kw40z_demo_1.0,用IAR打开frdm-kw40z_demo.eww,点击编译并下载即可。

2.2. 使用官方App-Kinetis BLE Toolbox进行BLE通讯

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。

wps5867.tmp[4]

22  FRDM-KW40Z演示例程的App连接界面

点击LED,则可以通过手机App界面上的三个按钮对板载的3个LED(LED2/3/4,LED1作为连接/广播状态显示)。

wps5878.tmp[4]

23  FRDM-KW40Z演示例程的LED控制

返回后点击Switch,则可以在手机App界面显示板载的SW1/2/3的开关状态,其中SW3是机械按键,按下后即可切换一次App界面上对应的按键状态。SW1和SW2是电容感应的触摸按键,触摸一次后即可切换App对应的按键状态,而触摸后一直停留在电容按键位置上,则会不停地切换按键状态。

wps5879.tmp[4]

24  FRDM-KW40Z演示例程的按键状态显示

返回后点击Buzzer,可以通过App控制蜂鸣器的鸣叫。点击一次即可使蜂鸣器发声,再点击一次则停止。

wps588A.tmp[4]

25  FRDM-KW40Z演示例程的蜂鸣器控制

返回后点击Chip Temperate,则App显示芯片温度,该温度值通过读取芯片内部集成的温度传感器获得芯片温度,把手指放在芯片上,可以看到温度发生变化。

wps588B.tmp[4]

26  FRDM-KW40Z演示例程的芯片温度显示

返回后点击Potentiometer,App显示板载电位器的位置。旋转电位器可以看到App界面上的变化。

wps589B.tmp[4]

27  FRDM-KW40Z演示例程的电位器状态显示

返回后点击Accelerometer,则App显示开发板上的复合传感器FXOS8700CQ读取开发板的加速度(重力加速度+位移加速度的叠加)的X、Y、Z三轴方向上的加速度值,移动摇晃开发板后,曲线发生变化。

wps589C.tmp[4]

28  FRDM-KW40Z演示例程的加速度传感器状态显示

返回后点击e-Compass,则App首先指示开发板对复合传感器FXOS8700CQ的磁传感器部分进行校准(地磁场+外部磁性物体磁场的叠加),即通过读取刚开始静态的磁场作为原始位置,然后转动开发板后,手机App上显示与开发板所指定的方向一致。

wps58AD.tmp[4]

29  FRDM-KW40Z演示例程的磁传感器状态显示

返回后点击Remote Control,可以通过App控制红外遥控设备如电视等。在下方选择电视品牌,然后可以点击开关机、切换音量/频道等功能。该功能通过板载的红外发射管发射与原装遥控器同样的红外遥控信号实现外部设备的控制。

wps58AE.tmp[4]

210  FRDM-KW40Z演示例程的红外遥控

在测试过程中如果用串口调试软件打开FRDM-KW40Z的串口,则会有信息输出。

wps58BE.tmp[4]

211  FRDM-KW40Z演示例程的调试串口信息输出

2.3. 使用其他BLE调试App进行BLE通讯

对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进行调试。

2.3.1 使用CySmart进行BLE调试

广播发现BLE设备,可以显示RSSi信号强度数值。

wps58BF.tmp[4]

212  CySmart扫描到的BLE广播设备(已修改设备名为Hi,KW40Z)

点击即可进行连接,连接后列举Service(对于BLE规范定义的标准Service都能显示标准的Service-Name,对于例程自定义的service只能显示UUID)

wps58C0.tmp[4]

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都能自动读取并显示。

wps58D1.tmp[4]

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位。

wps58E2.tmp[4]

215 读取的LED Status Characteristic

点击具有Write属性,即UUID为02ff5701开头的Characteristic写入LED,浏览代码后可以得知led Control Characteristic的格式为两个字节,第一个为需要控制的LED序号(0/1/2),第二个为需要控制的LED状态,0代表LED熄灭,1代表LED点亮。因此写入如下,此时LED点亮,通过读取LED状态值显示对应的LED状态。

wps58E3.tmp[5]

216 写入的LED Control Characteristic

wps58F3.tmp[8]

217 设置Switch的Notify并实时显示按键状态改变的时间和按键值

wps58F4.tmp[4]

218 设置Potential Meter的Notify并实时显示电位器值和改变的时间

wps5905.tmp[4]

219 设置Accelerate的Notify并实时显示加速度传感器数据和改变的时间

wps5906.tmp[14]

220 设置Compass的Notify并实时显示磁传感器数据和改变的时间

其余各个Service及其Characteristic就不一一列举了,手动read/write//notify方式都类似。

2.3.2 使用nRF Master Control Panel进行调试

广播扫描发现BLE设备

wps5916.tmp[4]

221  nRF Master Control Panel 扫描到的BLE广播设备和对应的RSSI曲线

nRF的BLE调试工具还能以曲线形式显示各广播BLE设备的RSSI信号强度,可见FRDM-KW40Z的信号强度远远高于周围的其他BLE设备,因为开发板就在手机附近。

点击Connect后,App会开始Discovery所有的Service和Characteristic,并以列表的形式显示。点击每一个Service显示该Service包含的Characteristic,再点击向下的箭头为读取,点击向上箭头为写入。

wps5917.tmp[4]

222 Service列表和标准的Device Info Service的各Characteristic值

点击第一个Unknown Service,同样的方式读取LED状态和写入LED控制字

wps5928.tmp[4]

223 读取LED Status Characteristic的值

wps5929.tmp[4]

224 写入LED Control Characteristic值

在按键的Service里面使能Notify后,实时显示按键状态改变值和时间。

wps592A.tmp[4]

225  Notify按键状态并显示按键状态和时间以及收发BLE数据包的日志记录

日志记录里面详细记录了每一次Discover Service/Characteristic,读/写/使能notify等操作。对于调试来说非常有帮助。

其余的操作类似,不一一列举。

3 版本历史(Revision History)

版本号

发布时间

内容

A0

2017-02-18

初次编写

posted on 2017-03-07 11:12  mars4zhu  阅读(1271)  评论(0编辑  收藏  举报

导航