0引言
KW01是飞思卡尔公司最新推出的一款无线通信芯片,苏州大学嵌入式研究中心设计研发了一套KW01-Zigbee通讯节点。本文针对该芯片设计了一套基于KW01-Zigbee节点的测试程序,包括收发节点PC节点和Test节点,主要实现温度的自动传输,浮点数的运算及图像传输等功能,测试其各个模块功能。经反复测试,该测试程序简单易用,为进一步研究KW01和实际应用提供了重要的借鉴意义。
1、KW01-Zigbee节点
本测试程序中的KW01-Zigbee节点是以KW01芯片为基础的,如图1。该芯片是一款基于ARMCortex-M0+内核的无线射频芯片解决方案,支持290~340MHz、424~510MHz以及862~1020MHz的无线频段,具有低功耗、低成本、高度集成、通信稳定等特点,适用于诸如智能家居、智能城市等多种物联网产品的研究与开发[1-2]。具有以下特点。1)8×8mm尺寸的60引脚LGA封装。2)128KB的FLASH程序空间和16KB的RAM存储空间,最高总线频率可达96MHz,并且具有多种低功耗模式。3)提供多种外设接口,具有SCI、SPI、ⅡC、TSI等标准接口,内部集成低功耗定时器、16位ADC采集和DMA传输等功能模块,并且提供了33个用户可编程配置的GPIO口,资源丰富。
2、功能概述及MQX
2.1功能概述
该测试程序主要实现了三部分功能。1)采集Test节点和PC节点的温度和能量,然后将采集到的结果进行ADC转换,将转换结果显示在PC机C#界面上。2)用户输入两个浮点数进行加减乘除运算后由测试节点发送给PC节点,返回结果显示在PC机上,并且将结果与自己的计算机得到的加减乘除结果作对比,清晰明了地显示在C#界面中。3)两个字节作地址,将一张照片显示在框里,通过程序实现图片的发送和接收。
2.2MQX操作系统
、MQX是1989年PreciseSoftwareTechnologies公司开发的一款面向工业控制、汽车电子等领域的多任务多处理器的嵌入式实时操作系统(RTOS)[3]。具有代码开源,成本低;可裁剪性和可移植性;占用ROM空间少;外设驱动丰富等特点[4]。本测试程序所体现的要素有。1)任务同步与通信。2)轻量级事件:事件组组名是lwevent_group,共使用了32个事件位的3位,EVENT_UART0_RE、EVENT_ADC、EVENT_PIT。3)轻量级消息队列:共使用了3个,分别为rf_recv_queue、rf_send_queue、uart_send_queue,前两个用于RF收和发,最后一个用于UART发送。4)中断:嘀嗒中断(内中断,其余为外中断)、RF中断、串口中断、PIT中断。
3、任务设计
任务(TASK)是RTOS中最重要的操作对象,是操作系统的基本组成元素。任一时刻,仅有一个任务会处于运行状态,控制CPU资源。任务间的通信机制是使得多任务间能够相互同步和通信,从而协调各个任务调用的主要手段[5]。本实验主要用到了它的事件位机制。例如,Test节点在接收到数据之后,会产生GPIO中断,此时置RF接收事件位,通知task_rf_recv任务可以得到执行,该任务状态从阻塞态变为运行态,而之前正在执行的任务将会被阻塞。浮点数的计算中,其重难点是在MCU上实现浮点数与字节数组的转换。使用的方法是将一个浮点数的指针指向字节数组,使得对于同样的数据用两种方式去读取和写入。这样可以直接读取到浮点数。另外,图片的传输过程PC节点将上位机通过uart发送的数据帧进行解析,并将其中一些有用的数据帧转发给Test节点,其主要作用是转发数据帧。Test节点在task_rf_recv任务中对接收到的数据帧进行解析,根据rf_recvBuf[1]的不同值作出相应的操作。值为2是发送图像,从得到的请求帧中读取所要的帧,计算帧在flash中的地址并读出,送回PC机。值为55是接收图像,在此任务中由一个静态的八字节数组用来记录已经接收到的帧,八字节最多可以记录8×8即64帧,当读到第一帧时擦除flash并写第一帧,当读到返回帧时将静态数组发给PC。值为17是浮点数运算,将一个浮点数的指针指向字节数组,并通过指针读出浮点数赋给一个浮点数变量,做浮点数的各种运算,将结果送回。值为7是自动发送温度,通过置温度发送任务事件位让发送温度任务得以执行。
4、实验与分析
在整套系统建立好之后,就进入了系统的测试环节。打开软件进行串口自动搜索,会找到连接有PC节点的那个串口进行连接。当然也可以停止自动连接进行手动打开串口。可以看到有测试程序有4个选项卡,分别是“数据发送”“温度能量”“浮点运算”和“图像发送”4个模块,如图2所示。中,由于数据量大,可能会发生丢失数据帧的情况,所以主要难点在于怎样判断丢失的数据帧,并进行相应的补发帧操作。
5、结语
本文针对该芯片设计了一套基于KW01-Zigbee节点的测试程序,包括实现温度的自动传输,浮点数的运算及图像传输等功能。虽然只有这几个简单的功能,但却能够了解到KW01-Zigbee节点的整体性能,起到了一定基础性的探索作用,为其将来投入到实际应用中奠定了良好的基础。
作者:庞馥珊 单位:苏州大学 计算机科学与技术学院