KW01Zigbee开发套件快速应用指南V50KDS0108NN.docx
- 文档编号:12245536
- 上传时间:2023-04-17
- 格式:DOCX
- 页数:153
- 大小:3.22MB
KW01Zigbee开发套件快速应用指南V50KDS0108NN.docx
《KW01Zigbee开发套件快速应用指南V50KDS0108NN.docx》由会员分享,可在线阅读,更多相关《KW01Zigbee开发套件快速应用指南V50KDS0108NN.docx(153页珍藏版)》请在冰豆网上搜索。
KW01Zigbee开发套件快速应用指南V50KDS0108NN
KW01-Zigbee
快速应用指南
Rev2.0,11/2015
苏州大学飞思卡尔嵌入式中心
内容提要
本文档为飞思卡尔KW01Z128系列微控制器的快速应用指南,目的是引导使用KW01Z128系列微控制器的用户快速入门,给出阅读KW01Z128系列微控制器其他资料的基本导引。
本文档由苏州大学飞思卡尔嵌入式中心王宜怀负责编写提纲并统稿,李会、范宁宁参与编写,飞思卡尔李越工程师参与讨论、编写及修改。
目录
第1章导读1
1.1ARMCortex-M0+及飞思卡尔KinetisKW系列概述1
1.2KinetisKW系列的主要技术特点1
1.2.1通用平台特点1
1.2.2KW01-Zigbee芯片的特点1
1.3参考资料2
1.4如何使用本文档2
第2章KW系列型号、引脚功能及硬件最小系统3
2.1KW系列芯片已出型号及存储器地址范围3
2.1.1KW系列芯片已出型号3
2.1.2KW01芯片的Flash及RAM地址范围及作用3
2.2KW01引脚图4
2.3KW01引脚基本技术指标4
2.3.1引脚驱动能力4
2.3.2内部上下拉电阻4
2.3.3未接引脚处理方法5
2.4KW01引脚功能5
2.4.1硬件最小系统引脚5
2.4.2I/O端口资源类引脚5
2.5KW01硬件最小系统6
2.5.1电源及其滤波电路6
2.5.2晶振电路7
2.6开发板对外接口介绍7
第3章底层驱动构件8
3.1关于底层驱动构件的基本思想8
3.2KW01底层驱动构件的封装方法与使用8
3.2.1GPIO驱动构件的制作方法8
3.2.2UART驱动构件的制作方法10
第4章SD-Zigbee协议12
4.1概述12
4.2术语12
4.3PC-PCNode协议12
4.4PCNode-TargetNode协议13
第5章RTOS简介及MQX要点15
5.1关于RTOS15
5.1.1RTOS的基本作用15
5.1.2RTOS的分类15
5.2任务的基础知识16
5.2.1任务的基本含义16
5.2.2任务的三要素:
任务函数、任务堆栈、任务描述符16
5.2.3任务的四种状态:
终止态、阻塞态、就绪态和激活态17
5.2.4任务的基本形式18
5.3MQX中断机制与时间管理20
5.3.1中断处理的通用基础知识概要20
5.3.2MQX中断处理过程及用户ISR安装方法22
5.3.3_time_delay函数的使用方法及注意点23
5.4MQX的任务管理与调度24
5.4.1MQX的常用任务管理函数24
5.4.2MQX的FIFO调度策略含义25
5.4.3MQX的任务队列举例:
就绪任务队列、延时任务队列27
5.5轻量级事件28
5.5.1事件的含义及应用场合28
5.5.2轻量级事件的常用函数与编程步骤29
5.6轻量级MQX简介及工程框架32
5.6.1轻量级MQX特点32
5.6.2轻量级MQX工程框架34
5.6.3main函数之前执行过程解析36
5.7工程框架的应用方法36
5.7.1样例工程软件环境配置36
5.7.2样例工程硬件环境配置37
5.7.3工程实例的硬件连接及程序烧录38
5.7.4KW01-PCNode程序的任务设计38
5.7.5任务模板和任务公共头文件42
5.7.6自启动任务及任务的创建45
5.7.7中断服务例程46
第6章KW01在实时操作系统MQX-Lite下的应用50
6.1MQX-Lite的第一个样例工程50
6.2MQX-Lite的第二个样例工程51
6.3MQX-Lite的第三个样例工程56
6.4MQX-Lite的第四个样例工程61
第7章样例工程在实际项目中的应用66
7.1应用实例介绍一:
岩茶做青间温湿度监测66
7.1.1传感器介绍66
7.1.2物理量回归66
7.1.3Target节点程序修改67
7.1.4PC端程序修改67
7.2应用实例介绍二:
太湖水质监测系统67
7.2.1传感器与物理量获取68
7.2.2物理量回归68
7.2.3Target节点程序修改69
7.2.4PC端程序修改70
附录AKDS集成开发环境简明使用方法71
A.1软件的安装与配置71
A.1.1所需的工具软件清单71
A.1.2集成开发环境KDS的安装71
A.1.3J-Link驱动程序的安装71
A.1.4TTL-USB串口驱动程序的安装72
A.1.5KDS的配置72
A.2KDS简明使用方法74
A.2.1导入现有工程到开发环境中74
A.2.2编译与链接工程—产生可执行的机器码75
A.2.3直接下载机器码到目标板—运行76
A.2.4在KDS下进行跟踪调试77
A.2.5KDS的常用基本操作78
A.3常见问题处理79
附录BSWD-Programmer简明使用方法84
B.1相关开发工具的安装84
B.1.1所需的工具软件清单84
B.1.2软件安装过程84
B.2使用JFlash独立写入软件进行烧录84
B.2.1硬件连接84
B.2.2烧录步骤84
B.3常见问题处理86
B.3.1指示灯频闪,不能烧录程序86
B.3.2目标板芯片被加密87
附录C《KW01-Zigbee开发套件》简明测试方法89
C.1物件清单89
C.2测试方法89
附录Dprintf格式化输出91
D.1prinf调用的一般格式91
D.1.1格式字符串91
D.1.2输出格式举例92
第1章导读
1.1ARMCortex-M0+及飞思卡尔KinetisKW系列概述
KW01-Zigbee是Freescale于2012年10月正式推出的主要面向智能家居、智慧城市等各种物联网应用的一款芯片。
该芯片由ARMCortex-M0+内核的KL26微控制器与射频模块SX1231-RF组成。
通过适用于无线联网的智能应用扩展了其备受欢迎的Kinetis微控制器产品线。
KinetisKW01微控制器基于ARMCortex-M0+内核,运行速率高达48MHz,拥有128KB闪存和16KBSRAM,在典型条件下的功耗低达40uA/MHz。
该系统和外设旨在实现1.7uA的设备待机电流,快速唤醒时间仅为4.3ms,设备停止电流低于100nA,其中包括无线配置数据保留。
这些特性有助于最大限度地延长便携式系统的电池寿命。
KinetisKW01微控制器提供了高性能的无线电,可使用复杂的调制方案(GFSK、MSK、GMSK和OOK)提供高达600Kbps的传输速率,同时在290至1020MHz的频率范围内的多个频率上运行,在日本、美国、欧洲、中国、印度、巴西、墨西哥及其他国家支持ISM频带,从而满足了智能网络的要求。
此外,板载高效率、低功耗CPU系统用于处理大量的网络协议。
1.2KinetisKW系列的主要技术特点
1.2.1通用平台特点
飞思卡尔的KinetisKW系列MCU内核单周期访问内存速度可达1.77CoreMark/MHz,CPU工作频率最大可支持48MHz。
飞思卡尔的KinetisKW系列工作电压为1.71V~3.6V;运行温度范围为-40℃~85℃;具有64B的Cache;具有USBOTG、定时器、DMA、UART、SPI、IIC、TSI、16位ADC、12位DAC等模块。
1.2.2KW01-Zigbee芯片的特点
KW01芯片由KL26微控制器与射频模块SX1231-RF组成。
1.KL26微控制器的特点
◆电源冗余与平衡分布,提高了稳定性;引脚冗余分布,有利于硬件电路设计;
◆内含温度传感器用于测定芯片温度;
◆内含16位A/D转换器与12位D/A转换器;
◆内部Flash的在线编程解决了过去需要移入RAM问题,同时允许中断,应用上可以取代EEPROM存储参数;
◆内部RTC及独立电池供电引脚,可以取代外接时钟芯片;
◆超低功耗:
内核可达nA级别的超低功耗;
◆可通过编程使得部分引脚具有18mA的驱动能力(一般为5mA驱动能力);
◆宽电压范围:
1.71V~3.6V;运行温度范围:
-40℃~105℃;
◆与KW01-Zigbee芯片为同一内核(ARMCortex-M0+),有利于程序复用;
◆可支持轻量级MQX实时操作系统;
◆KinetisL系列MCU内核中统一的Systick,为基本定时与操作系统应用提供了便利。
2.SX1231-RF收发器的特点
◆RF收发器工作在免许可的工业、科学和医疗(ISM)频段所覆盖的315、433、470、868、915、928和960MHz。
◆可编程比特率高达600kbps(FSK)
◆电压范围:
1.8V~3.6V
◆“Bullet-proof”[1]功能前端:
IIP3=18dBm,IIP2=35dBm,80dB阻断免疫,无映像频率响应。
一种由QuickLogic公司提出的为器件增加密钥和序列保护功能
◆高灵敏度:
在1.2kps速率下可低至-120dBm
◆高选择性:
16抽头的FIR通道滤波器
◆低电流:
Rx=16mA,100nA的寄存器配置数据保留
◆61Hz的全集成频率合成器
◆32MHz的晶振时钟源
◆输入同步字识别
◆带有ultra-fastAFC的自动RF检测
◆可编程输出功率:
-18到+17dBm
◆内置的位同步器进行时钟恢复
◆在芯片电压范围内能提供稳定的射频性能
◆内置温度传感器和低电量指示灯
◆数据包可采用CRC校验,AES-128加密,66字节的FIFO队列。
◆支持FSK,GFSK,MSK,GMSK和OOK调制方式
◆32KHz外部晶振的连接专用I/O。
1.3参考资料
FreescaleMKW01xxMCUReferenceManualRev.2,2014
FreescaleMKW01Z128AdvanceInformation,Rev.5,2014
1.4如何使用本文档
本文档为飞思卡尔KW01微控制器的快速应用指南,目的是引导使用KW01微控制器的用户快速入门,给出阅读KW01微控制器其他资料的基本导引。
第2章给出了KW系列型号、引脚功能及硬件最小系统,目的是快速了解硬件系统。
第3章以GPIO和UART构件为例介绍了如何制作KW01驱动构件。
第4章介绍了SD-Zigbee协议。
第5章介绍了MQX(消息队列执行)的相关知识。
第6章介绍了KW01在实时操作系统MQX-Lite下的应用,并给出四个样例工程。
第7章介绍了样例工程在实际项目中的应用。
附录给出了KDS集成开发环境简明使用方法、SWD-Programmer简明使用方法、以及printf格式化输出。
第2章KW系列型号、引脚功能及硬件最小系统
2.1KW系列芯片已出型号及存储器地址范围
2.1.1KW系列芯片已出型号
KW01是一个无线整体解决方案,它整合了ARMCortex-M0+控制器和Sub-1GHzRF前端,设备包含128KBFlash,16KBSRAM,采用8x8mm56引脚LGA封装。
MCU通过专用于RF设备的SPI端口来控制RF收发器。
MCU使用GPIO接口与两条RF收发器状态的IO线相连,以监测收发器的操作,此外,收发器复位和附加状态也可以通过外部连接而连接到MCU。
丰富的控制功能,灵活的低功耗能力和创新的flexmemory有助于解决系统实施时的主要难题。
表2-1给出了KW系列芯片的频段。
表2-1KinetisW系列芯片
系列
频段
KW0X
Sub-1GHz
KW2X
2.4GHz
KW3X
保留
2.1.2KW01芯片的Flash及RAM地址范围及作用
表2-2给出了KW01芯片的存储器映像,此处研究的芯片为MKW01Z128。
表2-2KW01(MKW01Z128)系统RAM地址范围
区域划分
系统32位地址范围
功能说明
Flash区
0x0000_0000~0x07FF_FFFF
Flash空间,其中前192B为中断向量表
0x0800_0000~0x1FFF_DFFF
保留
片内RAM区
0x1FFF_E000~0x1FFF_FFFF
SRAM_L空间,4KB(普通RAM区)
0x2000_0000–0x2000_2FFF
SRAM_U空间,12KB(支持位操作RAM区)
0x2000_3000–0x3FFF_FFFF
保留
2.2KW01引脚图
图2-1给出的是56引脚LGA封装的KW01的引脚图。
每个引脚都可能有多个复用功能,有的引脚有两个复用功能,有的有四个复用功能,实际嵌入式产品的硬件系统设计时必须注意只能使用其中的一个功能。
进行硬件最小系统设计时,一般以引脚的第一功能作为引脚名进行原理图设计,若实际使用的是其另一功能,可以用括号加以标注,这样设计的硬件最小系统就比较通用。
图2-1KW01的引脚图
2.3KW01引脚基本技术指标
单个引脚标准驱动能力为2.5mA。
部分引脚可通过编程设定为高驱动模式,其驱动能力为10mA。
(除了RESETB,即PTA20引脚)。
所有数字输入引脚(除了RESETB)可配置为内部上拉到VDD,内部上拉电阻的阻值范围为20KΩ~50KΩ。
建议通过编程将未使用引脚上拉,或外接上拉电阻。
2.4KW01引脚功能
下面从需求与供给的角度把MCU的引脚分为“硬件最小系统引脚”与“I/O端口资源类引脚”两大类。
2.4.1硬件最小系统引脚
表2-3KW01硬件最小系统引脚表
引脚名
引脚号
典型值
功能描述
LGA
电源
输入
VDD
19、55
3.3V
电源
VSS1
4、20
0V
地
VDDA、VSSA
56
3.3V、0V
A/D模块的输入电源
VSSA
3
0V
A/D模块的输入电源
VREFH、VREFL
1
3.3V、0V
A/D模块的参考电压
VREFL
2
0V
A/D模块的参考电压
VBAT1
43
RF收发器电池供电
VBAT2
35
RF收发器电池供电
RESETB,
RESET(RF)
33,48
复位引脚(双向),作为输入,拉低可使芯片复位;作为输出,上电复位期间有低脉冲输出,输出脉宽最小约100ns,芯片完成复位。
常态下,引脚拉高,可通过复位按键拉低复位。
EXTAL、XTAL
15、16
分别为无源晶振输入、输出引脚
XTA(RF)、XTB(RF)
46、47
收发器参考晶振
SWD_CLK
10
SWD时钟信号线
SWD_DIO
11
SWD数据信号线
引脚个数统计
LGA封装18个
KW01硬件最小系统引脚包括电源类引脚、复位引脚、晶振引脚等,如表2-3所示。
KW01芯片电源类引脚,LGA封装10个。
芯片使用多组电源引脚分别为内部电压调节器、I/O引脚驱动、RF收发器电池供电、A/D转换电路等电路供电,内部电压调节器为内核和振荡器等供电。
为了提供稳定的电源,MCU内部包含多组电源电路,同时给出多处电源引出脚,便于外接滤波电容。
为了电源平衡,MCU提供了内部有共同接地点的多处电源引脚,供电路设计使用。
2.4.2I/O端口资源类引脚
除去需要服务的引脚外,其他引脚可以为实际系统提供I/O服务。
芯片提供服务的引脚也可称为I/O端口资源类引脚。
KW01(56引脚LGA封装)具有29个I/O引脚,其中A口8个,B口4个,C口4个,D口4个,E口9个,每个引脚均具有多个功能。
这些引脚在复位后,立即被配置为高阻状态,且为通用输入引脚,有内部上拉功能。
2.5KW01硬件最小系统
MCU的硬件最小系统是指可以使内部程序运行所必须的最低规模的外围电路,也可以包括写入器接口电路。
使用一个芯片,必须完全理解其硬件最小系统。
当MCU工作不正常时,首先就要查找最小系统中可能出错的元件。
一般情况下,MCU的硬件最小系统由电源、晶振及复位等电路组成。
芯片要能工作,必须有电源与工作时钟;至于复位电路则提供不掉电情况下MCU重新启动的手段。
随着Flash存储器制造技术的发展,大部分芯片提供了在板或在线系统(OnSystem)的写入程序功能,即把空白芯片焊接到电路板上后,再通过写入器把程序下载到芯片中。
这样,硬件最小系统应该把写入器的接口电路也包含在其中。
基于这个思路,KW01芯片的硬件最小系统包括电源电路、复位电路及与写入器相连的SWD接口电路。
图2-2KW01Z128硬件最小系统
2.5.1电源及其滤波电路
电路中需要大量的电源类引脚用来提供足够的电流容量同时保持芯片电流平衡,所有的电源引脚必须外接适当的滤波电容抑制高频噪音。
图2-2给出了KW01Z128硬件最小系统的电源和地连接图。
电源(VDDx)与地(VSSx)包括很多引脚,如VDDA、VSSA、VDD、VSS、VREFH和VREFL等。
至于外接电容,是由于集成电路制造技术所限,无法在IC内部通过光刻的方法制造这些电容。
去耦是指对电源采取进一步的滤波措施,去除两级间信号通过电源互相干扰的影响。
图2-3中,电源滤波电路用于改善系统的电磁兼容性,降低电源波动对系统的影响,增强电路工作的稳定性。
为标识系统通电与否,可以增加一个电源指示灯。
图2-3电源及其滤波电路
2.5.2晶振电路
图2-4RF外部晶振电路
KW01芯片可使用内部的参考时钟或是外部的晶振来提供工作时钟。
若使用外部晶振,则需要外部晶振电路加以配合。
作为振荡源的晶体振荡器分为无源晶振(Crystal)和有源晶振(Oscillator)两种类型。
有源晶振需要外接电源。
无源晶振有两个引脚,由于无极性元件自身无法起振,因此需要借助辅助电路才能产生振荡信号。
2.6开发板对外接口介绍
KW01-Zigbee开发板上引出的对外接口见图2-5
图2-5KW01-Zigbee开发板对外接口
第3章底层驱动构件
3.1关于底层驱动构件的基本思想
在嵌入式软件领域中,由于软件与硬件紧密联系的特性,使得与硬件紧密相连的底层驱动构件的生产成为嵌入式软件开发的重要内容之一。
良好的底层驱动构件具备封装性、描述性、可移植性、可复用性等特性。
为了使构件设计满足这些基本要求,嵌入式底层驱动构件的开发,应遵循层次化、易用性、鲁棒性及对内存的可靠使用原则。
底层驱动构件封装规范及基本思想可参见王宜怀教授编著的《嵌入式技术基础与实践(第3版)-ARMCortex-M0+KinetisL系列微控制器》一书的第五章。
3.2KW01底层驱动构件的封装方法与使用
3.2.1GPIO驱动构件的制作方法
(1)了解芯片的GPIO引脚
56引脚KW01芯片共有29个引脚可作为GPIO引脚,分别处于PORTA、PORTB、PORTC、PORTD、PORTE共5个端口。
每个端口实际可用的引脚数因封装不同而有差异,56引脚KW01芯片的29个引脚名称标识如下:
(1)PORTA口有8个引脚,引脚名分别为PTA0~4,18~20;
(2)PORTB口有4个引脚,引脚名分别为PTB0~2,17;
(3)PORTC口有4个引脚,引脚名分别为PTC1~4,;
(4)PORTD口有4个引脚,引脚名分别为PTD4~7;
(5)PORTE口有9个引脚,引脚名分别为PTE0~3,16~19,30;
(2)KW01芯片GPIO构件封装要点分析及提供的函数
以GPIO驱动构件为例,进行封装要点分析。
即分析应该设计哪些函数及入口参数。
GPIO引脚可以被定义成输入、输出两种情况:
若是输入,程序需要获得引脚的状态(逻辑1或0);若是输出,程序可以设置引脚状态(逻辑1或0)。
MCU的PORT模块分为许多端口,每个端口有若干引脚。
GPIO驱动构件可以实现对所有GPIO的引脚统一编程,GPIO驱动构件由gpio.h、gpio.c两个文件组成,如要使用GPIO驱动构件,只需要将这两个文件加入到所建工程中,由此方便了对GPIO的编程操作。
另外,控制指示灯闪烁的程序中使用了GPIO驱动构件。
指示灯定义为端口号|引脚号,这样便于用户理解和运用。
现在添加一个内部解析函数gpio_port_pin_resolution,将指示灯的定义进行解析,得出具体端口号与引脚号。
内部解析函数(gpio_port_pin_resolution)
指示灯定义为端口号|引脚号,例如,PORTD|5表示为D口5号引脚。
内部解析函数将“端口号|引脚号”解析为具体的端口号和引脚号,以便GPIO模块函数使用。
staticvoidgpio_port_pin_resolution(uint_16port_pin,uint_8*port,uint_8*pin)
其中uint_8是无符号8位整型的别名,uint_16是无符号16位整型的别名,其定义在工程文件夹下的“..\Common”文件夹的common.h文件中,本书后面不再特别说明。
模块初始化(gpio_init)
由于引脚具有复用特性,把对应引脚设置成GPIO功能;同时定义成输入或输出;若是输出,还要给出初始状态。
所以GPIO模块初始化函数的参数为“端口号|引脚号”、是输入还是输出、若是输出其状态是什么,函数不必有返回值。
这样GPIO模块初始化函数原型可以设计为:
voidgpio_init(uint_16port_pin,uint_8dir,uint_8state)
设置引脚状态(gpio_set)
对于输出,希望通过函数设置引脚是高电平(逻辑1)还是低电平(逻辑0),入口参数应该是“端口号|引脚号”,函数不必有返回值。
这样设置引脚状态的函数原型可以设计为:
voidgpio_set(uint_16port_pin,uint_8state)
获得引脚状态(gpio_get)
对于输入,希望通过函数获得引脚的状态是高电平(逻辑1)还是低电平(逻辑0),入口参数应该是“端口号|引脚号”,函数需要返回值引脚状态。
这样设置引脚状态的函数原型可以设计为:
uint_8gpio_get(uint_16port_pin)
引脚状态反转(gpio_reverse)
类似的分析,可以设计引脚状态反转函数的原型为:
voidgpio_reverse(uint_16port_pin)
引脚上拉使能函数(gpio_pull)
若引脚被设置成输入,还可以设定内部上拉,KW01内部上拉电阻大小为30~50K
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- KW01Zigbee 开发 套件 快速 应用 指南 V50KDS0108NN