发表于:2006-02-28 14:39:00
楼主
C51RF-2无线单片机开发系统
使用无线单片机设计开发工具
高效率开发51兼容无线SoC系统
作者 无线龙
摘要:介绍如何使用C51RF-2无线单片机开发系统,开发三种无线SoC (片上系统)cc1010/nRF24E1/nRF9E5,如何评估芯片,无线通讯软件库使用,快速调试,发现和排除在高频通讯中的软件和硬件存在的问题,软件加密等,给出温度无线传感器网络产品开发实例、库的使用和程序源代码等。
关键词 无线SoC 51系列 开发工具
一、 无线SoC单片机开发面对的困难和解决方案
对较少接触高频设计的电子工程师而言,要快速完成一个具有无线通讯接口的系统开发/设计是一件具有挑战性的工作,这是因为:
1/高频系统工作在300MHZ –2.4GHZ的高频频段,对线路板设计,元件选择要求更严格;
2/高频设计需要工作在GHZ的无线测试设备,价格昂贵;而没有这样的设备,很难直观地观察系统工作状态;
3/微处理器和其他数字电路对高频电路的相互干扰;
4/无线通讯在空气中,容易被干扰,需要一系列软件处理,包括纠错,防止碰撞,通讯协议处理等等,而开发这些软件,需要大量时间和经验。
但是,射频SoC单片机 (简称无线单片机)的出现,为不具备无线通讯经验和高频电路经验的电子工程师,提供了非常简单的解决方案。这是因为:
1/专门的设计,将全部的高频部分电路集成到了电路内部,从无线单片机到天线之间,只有简单的滤波电路,系统设计者完全不必进行任何高频电路设计;
2/采用特殊设计,使8051的微处理器和高频线路间,实现完美的配合,数字电路对高频通讯的影响减低到最小;
3/设置了高频通讯的若干寄存器,将高频通讯的处理,简化为对寄存器的简单操作处理,即你只需要对这些寄存器进行操作,就可以轻松完成无线通讯功能。
综上所述,采用无线单片机进行无线通讯设计,是开发低成本、低功耗无线通讯应用系统的理想方案之一。当然,我们也需要说明,仅仅只有无线单片机的芯片,还远远不够,因为要高效率地完成以无线单片机为核心的应用系统的设计工作,还必须借助各种无线单片机开发工具来实现。
下面就举例说明如何使用开发工具快速完成一个无线应用产品的开发工作。
二、 评估无线单片机芯片,确定技术方案
如果我们计划开发一个无线传感器的产品,需要采用无线单片机来实现温度信号的采集,用每个无线单片机作为一个无线节点,每个节点工作在电池供电的状态,希望电池寿命为2-3年,几十个无线节点间通过无线网络协议进行通讯,最后传输到PC机中,进行分析处理(这个系统可以用于环境、工厂、农作物长期温度监控等应用)。
为了开始进行系统设计,我们必须了解和选择确定哪种无线单片机适合,通过上网查询,目前无线单片机有许多种,但我们希望选择我们熟悉的8051内核的单片机,因为我们熟悉keil 的C51,同时熟悉8051的结构。
8051兼容的无线单片机目前全世界共有4种,但主流的是chipcon 公司的cc1010, Nordic 公司的nRF24E1/nRF9E5。
通过查阅资料,我们发现这三种无线单片机各有自己的特点,chipcon公司的cc1010有32k存储器,三通道A/D转换器,可以工作在300-1000mhz, 最小的功率消耗仅0.2uA;Nordic的nRF24E1工作在2.4GHZ,nRF9E5工作在433MHZ和868-930MHZ,虽然Nordic的无线单片机存储器较小,只有4K,但由于采用较好的电源管理方式和快速的SHOCKBURST技术,且价格较cc1010低一些。
虽然,三种无线单片机都可以用在我们的系统,但我们没有亲自接触过这三种无线单片机,我们不好简单下结论,我们希望能对三种无线单片机进行测试,如果买原厂的开发/评估系统,价格较贵,周期较长,所以,我们通过www.c51rf.com, 联系购买了C51RF-2型无线单片机开发系统,这是市面上可以立即买到现货的国内产品,可以用一个开发系统完成对上述三种无线单片机的开发、评估和测试;我们同时选购了cc1010/nRF24E1/nRF9E5三种参考设计模块;
C51RF-2是一种非常容易使用的无线单片机开发系统,只需要一个串口,连接到PC机,即可以在KEIL 开发环境下,进行程序下载、在线仿真运行、单步、断点等;同时,针对高频设计的特殊要求进行了特殊设计,能够保证开发系统工作时不干扰无线单片机高频部分的工作,保证在实时高频通讯的环境下,进行软件跟踪、硬件调试。
我们将cc1010的参考设计模块通过10线电缆连接,接通5VDC电源,将开关设定到cc1010位置,简单的按下无线单片机开发系统DB键,便可以在KEIL下下载厂家提供的评估测试软件,进行实际无线通讯、通讯距离测试。
完成cc1010测试后,我们只需要更换连接到nRF24e1/nRF9E5目标系统,切换开关,就可以快速开始对nRF24e1/nRF9E5芯片评估测试。
通过测试,我们对三种无线单片机有了具体的认识,对其通讯距离,通讯速度,软件结构,功率消耗,外围接口等有了直接认识,考虑到我们设计无线网络通讯,需要较大的存储器来存储程序代码,而且chipcon提供了两个无线通讯软件的C51源代码库,同时已经提供了连接层的无线通讯协议C51源代码,方便我们进行网络层软件设计,所以,我们选择cc1010来设计我们的温度无线传感器网络。
三、 实例:温度无线传感器网络软件设计
为了加快开发的速度,我们直接采用C51RF-2提供的参考设计电路板,进行软件开发,
cc1010参考设计板
我们看到,板上已经有温度传感器电路,同时,有电池连接接头可以直接连接电池供电;也有串口电路可以和PC通讯。
作为网络通讯的一种方案,我们的系统每一个温度传感器节点,在随机的时间间隔里通过A/D转换器得到对应的温度信息,并将温度信息广播出去,然后转入监听状态,如果收到其他节点的广播,也自动进行记录和转发,最后的信息汇集到连接PC的节点,记录、显示所有节点的温度信息。
开始我们的软件开发,我们并不需要从头开始,我们在keil下,打开chipcon提供的样板工程文件,选择温度广播,我们看到该样板工程文件已经包含了culLib/halLib两个完整的无线通讯库文件(也提供了这两个库的源代码),这两个库提供了所有无线通讯需要的功能,你的程序只要包括这样的语句:
#include <chipcon/hal.h>
#include <chipcon/cul.h>
你的软件就可以在这个库的高级的水平上开始工作,举例说明:
你需要发送一个包,包括序言,通讯标志,地址,数据,CRC效验等,你只需要下列两行语句,便全部完成了!
// Transmit the temperature
sppSend(&TXI);
do { /*nothing*/ } while (sppStatus() != SPP_IDLE_MODE);
你需要接收一个包,包括序言,通讯标志,地址,数据,CRC效验等,你也只需要下列两行语句,便全部完成了!
// Receive the packet (if any)
YLED = LED_ON;
sppReceive(&RXI);
do { /*nothing*/ } while (sppStatus() != SPP_IDLE_MODE);
YLED = LED_OFF;
具体的无线发送/接收,无线自动应答等复杂功能,通过调用两个库自动完成了。
更重要的是,在温度广播这样类似的样