: 2.4G各信道信号强度测试实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
摘要
本实验主要是在学会了配置CC2530 RF功能基础上,掌握分析2.4G频段信道11-26各个信道的信号强度。
然后通过LCD显示测试结果,结果的显示分为两个部分,一部分是通过16个矩形条的形式同时显示各个信道中的信号强度,16个矩形条从左至右依次代表信道11到信道26的RSSI值,其中矩形越高,表示该信道的RSSI值越强。
另一个是通过按键可以切换显示(LCD的左上角)不同信道具体的RSSI值。
测试中,矩形条高度的变化是完成一次测试就改变一次。
而具体的显示RSSI 值是每个信道抽取8个值后再显示。
其中扫描16个信道的间隔为2000us。
其中LED1为工作指示灯,当工作不正常时,LED2将为亮状态。
关键词:CC2530 RF 无线通信 2.4G信道信号监测
目录
一嵌入式系统 (4)
1.1嵌入式系统概念: (4)
1.2嵌入式系统的特点 (4)
1.3嵌入式系统的基本组成 (4)
1.4 嵌入式操作系统与微机操作系统类似的功能: (5)
1.5 当前流行嵌入式操作系统 (5)
1.6嵌入式系统开发环境和特点 (6)
二 CC2530 RF模块以及信号信道分配模式 (7)
三设计流程 (8)
3.1 CC2530 模块进行简单的点到点无线通信。
(8)
3.2设计内容: (8)
3.3 设计原理及说明: (8)
3.4设计步骤: (8)
3.5 程序流程图 (10)
四源程序清单 (10)
五测试 (18)
参考文献 (20)
总结 (21)
致谢 (22)
前言
嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。
它一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序等四个部分组成,用于实现对其他设备的控制、监视或管理等功能。
它是计算机的一种应用形式,通常指埋藏在宿主设备中的微处理机系统,此类计算机一般不被设备使用者在意,亦称埋藏式计算机,典型机种如微控制器、微处理器和DSP 等。
嵌入式技术是将计算机作为一个信息处理部件,嵌入到应用系统中的一种技术,也就是说,它将软件固化集成到硬件系统中,将硬件系统与软件系统一体化。
嵌入式具有软件代码小、高度自动化和响应速度快等特点,因而进入21世纪后其应用越来越广泛,例如,各种家用电器如电冰箱、自动洗衣机、数字点电视机、数码相机等广泛应用这种技术。
本设计是嵌入式应用里比较简单的一个实现,是针对嵌入式开发板CC2530的一个模块进行构建和设计的,要实现的是两个CC2530间的RF的无线通信,并且要对各个信道信号进行监测,嵌入式开发是现阶段,现世界比较流行的开发模式。
一嵌入式系统
1.1嵌入式系统概念:
以应用为中心,以计算机结束为基础,软件硬件课裁剪,适用于不同应用场合对功能,成本,体积,功耗严格要求的专用计算机系。
1.2嵌入式系统的特点
硬件方面:
稳定性,表现在对元器件的选择、接插件的质量要求、电源的稳定性等方面;
低功耗,一方面处于省电,另一方面出于散热考虑;
体积受限,这是被嵌入的对象系统的要求;
看门狗电路,系统不受干涉长期运行的需要;
成本控制严格,够用即可;
软件方面:
实时性,在早期很重要,近来有所模糊;
可裁减性;
精简性,系统代码一般都固化在ROM中;
人机界面要求不高;
1.3嵌入式系统的基本组成
软件部分:
应用软件
中间件,API
嵌入式操作系统
硬件部分:
外围硬件设备
嵌入式处理器
1.4 嵌入式操作系统与微机操作系统类似的功能:
任务调度
进程间通信
文件管理
中断处理
存储器管理
1.5 当前流行嵌入式操作系统
Palm OS
Windows CE、
Linux(uCLinux)
RT Linux
uC/OSII
其它商业OS:QNX、VxWorks等
1.5.1 Palm OS
Palm OS是一套专门为掌上电脑开发的OS。
在编写程序时,Palm OS充分考虑了掌上电脑内存相对较小的情况,因此它只占有非常小的内存Palm OS使掌上电脑与PC机上的信息实现同步,把台式同的功能扩展到了掌上电脑。
1.5.2 Windows CE
Windows CE是微软开发的一个开放的、可升级的32位嵌入式操作系统,是一个基于掌上型电脑类的电子设备的操作系统Windows CE不仅继承了传统的
Windows图形界面,并且在Windows CE平台上可以使用Windows 95/98/2000上的编程工具(如Visual Basic、Visual C++等)、使用同样的函数、使用同样的界面风格,使绝大多数的应用软件只需简单的修改和移植就可以在Windows CE 平台上继续使用。
1.5.3 Linux
Linux是最为流行的一款开放源代码的操作系统,资源丰富,而且免费目前正在开发的嵌入式系统中,70%以上的项目选择Linux作为嵌入式操作系统。
Linux现已成为嵌入式操作的理想选择ucLinux不带MMU对linux有经过实时性改造的RTLinux0.4 Uc/OS II1简单易学、源码公开,核心代码5500行左右可移植性强,只有与微处理器相关的极少数文件用汇编可抢占任务调度,真正意义上的实时系统稳定可靠。
1.5.4 其他操作系统
1. VxWorksWindRiver的产品,市场占有率最高的商用嵌入式操作系统可靠性极高;
2. QNX极小的实时可扩充内核(12KB),仅提供四种服务(进程调度、进程间通信、底层网络通信、中断处理)运行速度极快,可将系统配置成微小的嵌入式操作系统或是包括几百个处理器的超级虚拟机操作系统。
1.6嵌入式系统开发环境和特点
宿主机:开发机器,使用通用操作系统,运行编辑、编译、调试等软件工具目标机:目标程序运行的硬件平台,使用嵌入式操作系统或者没有操作系统交叉编译:在宿主机上运行针对目标机的编译工具,编译生成只能在目标机上运行目标的文件。
微内核、模块化、可方便裁减实时性,尤其对于控制系统强大的网络功能稳定性强、不依赖于交互操作代码固化可以执行好,适应多种体系结构。
二 CC2530 RF模块以及信号信道分配模式
1RF是CC2530的设射频模块
2无线信道的分配IEEE 802.15.4 规范的物理层定义了三个载波频段用于收发数据:868~868.6 MHz、902~
3928 MHz和 2 400~2 483.5 MHz。
在这三个频段上发送数据使用的速率、信号处理过程以及调
4制方式等方面都存在着一定的差异,其中 2 400 MHz 频段的数据传输速率为 250 kbit/s,915
5MHz、868 MHz 分别为40 kbit/s 和20 kbit/s。
6IEEE 802.15.4 规范定义了 27 个物理信道,信道编号从 0 至 26,每个具体的信道对应着
7一个中心频率,这 27 个物理信道覆盖了以上 3个不同的频段。
不同的频段所对应的宽度不同,
8标准规定 868 MHz 频段定义了 1 个信道(0 号信道);915 MHz 频段定义了10个信道(1~10 号信
9道);2 400 MHz 频段定义了 16 个信道(11~26 号信道)。
这些信道的中心频率定义如下:
10 F=868.3 MHz k=0
11 F=906+2(k-1)MHz k=1,2,…,10
12 F=2405+5(k-11)MHz k=11,12,…,26
13式中:k 为信道编号,F 为信道对应的中心频率。
14通常,ZigBee 硬件设备不能同时兼容两个工作频段,在选择时,应符合当地无线电管理委
15员会的规定。
由于 868~868. 6 MHz 频段主要用于欧洲, 902~928 MHz 频段用于北美,而2 400~
16 2 483.5 MHz频段可以用于全球,因此在中国所采用的都是 2 400 MHz 的工作频段。
三设计流程
3.1 CC2530 模块进行简单的点到点无线通信。
3.2设计内容:
该设计将向用户演示两个 1.装有IAR的PC 机一台;
2.2530 仿真器,usb 线(A 型转B 型);
3.无线节点模块两块,带LCD 的智能主板两块,2.4G 天线两根。
3.3 设计原理及说明:
本设计主要是学习怎么配置 CC2530RF 功能。
本设计主要分为 3 大部分,第一部分为初始化与 RF 相关的信息;第二部分为发送数据和接收数据;最后为选择模块功能函数。
其中模块功能的选择是通过开发板上的按键来选择的,其中按键功能分配如下:
SW1 --- 开始测试(进入功能选择菜单)
SW2 --- 设置模块为接收功能(Light)
SW3 --- 设置模块为发送功能(Switch)
SW4 --- 发送模块发送命令按键
当发送模块按下 SW4 时,将发射一个控制命令,接收模块在接收到该命令后,将控制LDE1 的亮或者灭。
其中 LED6 为工作指示灯,当工作不正常时,LED5 将为亮状态。
3.4设计步骤:
1、给智能主板供电(USB外接电源或 2 节干电池)。
2、将两个无线节点模块分别插入到两个带 LCD的智能主板的相应位置。
3、将 2.4G的天线安装在无线节点模块上。
4、将 CC2530仿真器的一端通过 USB线(A 型转B型)连接到 PC 机,另一端通过 10Pin下载线连接到智能主板的 CC2530 JTAG 口(J203)。
5、将智能主板上电源开关拨至开位置。
按下仿真器上的按钮,仿真器上的指示灯为绿色时,表示连接成功。
6、使用IAR7.51 打开“…\OURS_CC2530LIB\lib11(simple_RF)\ IAR_files”下的simple_RF.eww 文件,下载程序。
7、关掉智能主板上电源,拔下仿真器,按 4、5步骤对另一个模块下载程序。
8、打开两个模块的电源,当 LED1 处于亮时,按下 SW1 进入模块功能选择。
然后一个模块按下 SW2 设置为接收功能(Light),此时 LED3 将被点亮;另一个模块按下 SW3 设置为发送功能(Switch),此时LED4 将被点亮。
9、按下发送模块的 SW4 按键,接收模块的 LED6 将被点亮,再次按下 SW4 按键,LED6将被熄灭。
注:如果需要重新设置模块的收发功能,按复位按键。
3.5 程序流程图
四源程序清单
#include "hal_board.h"
#include "hal_int.h"
#include "hal_mcu.h"
#include "hal_rf.h"
#include "basic_rf.h"
#include "LCD.h"
#define RF_CHANNEL 25 // 2.4 GHz RF 使用信道 25
#define PAN_ID 0x2011 //通信 PANID
#define SWITCH_ADDR 0x2530 //开关模块地址
#define LIGHT_ADDR 0xBEEF //灯模块地址
#define APP_PAYLOAD_LENGTH 1 //命令长度
#define LIGHT_TOGGLE_CMD 0 //命令数据
// 应用状态
#define IDLE 0
#define SEND_CMD 1
//应用角色
#define NONE 0
#define SWITCH 1
#define LIGHT 2
#define APP_MODES 2
//按键
#define HAL_BUTTON_1 1
#define HAL_BUTTON_2 2
#define HAL_BUTTON_3 3
#define HAL_BUTTON_4 4
#define HAL_BUTTON_5 5
#define HAL_BUTTON_6 6
static uint8 pTxData[APP_PAYLOAD_LENGTH]; //发送数据数组 164
static uint8 pRxData[APP_PAYLOAD_LENGTH]; //接收数据数组
static basicRfCfg_t basicRfConfig; //RF 初始化结构体
extern void halboardinit(void); //硬件初始化函数
extern void ctrPCA9554FLASHLED(uint8 led); //IIC 灯控制函数
extern void ctrPCA9554LED(uint8 led,uint8 operation);
extern uint8 halkeycmd(void); //获取按键值函数
#ifdef SECURITY_CCM //安全密钥
static uint8 key[]= {
0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
};
#endif
static void appLight(); //灯应用处理函数
static void appSwitch(); //开关应用处理函数
static uint8 appSelectMode(void); //应用功能选择函数
* 函数名称:appLight
* 功能描述:接收模式应用函数,初始化 RF 一些参数,接收另一个模块发送的控制命令,然后控制相应的 LED 灯
* 参数:无
* 返回值:无
static void appLight()
{
basicRfConfig.myAddr = LIGHT_ADDR; //设置接收模块的地址
if(basicRfInit(&basicRfConfig)==FAILED) //RF 初始化
{
ctrPCA9554FLASHLED(5); //RF 初始化不成功,则所有的 LED5 闪烁 }
basicRfReceiveOn(); //打开接收功能
// Main loop
while (TRUE)
{
while(!basicRfPacketIsReady()); //准备接收数据
if(basicRfReceive(pRxData, APP_PAYLOAD_LENGTH, NULL)>0) //接收数据
{
if(pRxData[0] == LIGHT_TOGGLE_CMD) //判断命令是否正确 {
ctrPCA9554FLASHLED(1); //关闭或打开 LED1 }
}
}
}
* 函数名称:appSwitch
* 功能描述:发送模式应用函数,初始化发送模式 RF,通过按下 SW4 向另一个模块发送控制命令。
* 参数:无
* 返回值:无
static void appSwitch()
{
pTxData[0] = LIGHT_TOGGLE_CMD; //向发送数据中写入命令
basicRfConfig.myAddr = SWITCH_ADDR; //设置发送模块的地址
if(basicRfInit(&basicRfConfig)==FAILED) //RF 初始化
{
ctrPCA9554FLASHLED(5); //RF 初始化不成功,则所有的 LED5 闪烁
}
basicRfReceiveOff(); //关闭接收功能
// Main loop
while (TRUE)
{
if(halkeycmd() == HAL_BUTTON_4) //判断是否按下 SW4 {
basicRfSendPacket(LIGHT_ADDR, pTxData, APP_PAYLOAD_LENGTH);//发送数据
halIntOff(); //关闭全局中断
halIntOn(); //打开中断
}
}
}
* 函数名称:appSelectMode
* 功能描述:通过 SW2 或SW3 选择模块的应用模式。
* 参数:无
* 返回值:LIGHT -- 接收模式
* SWITCH -- 发送模式
* NONE -- 不正确模式
static uint8 appSelectMode(void)
{
uint8 key;
GUI_ClearScreen(); //LCD 清屏
GUI_PutString5_7(25,6,"OURS-CC2530"); //在 LCD 上显示
相应的文字
GUI_PutString5_7(10,22,"Device Mode: ");
GUI_PutString5_7(10,35,"SW2 -> Light");
GUI_PutString5_7(10,48,"SW3 -> Switch");
LCM_Refresh();
do
{
key = halkeycmd();
}while(key == HAL_BUTTON_1); //等待模式选择
if(key == HAL_BUTTON_2) //接收模式
{
GUI_ClearScreen();
GUI_PutString5_7(25,6,"OURS-CC2530"); //在 LCD 上显示相应
的文字
GUI_PutString5_7(10,22,"Device Mode: ");
GUI_PutString5_7(10,35,"Light");
LCM_Refresh();
return LIGHT;
}
if(key == HAL_BUTTON_3) //发送模式
{
GUI_ClearScreen();
GUI_PutString5_7(25,6,"OURS-CC2530"); //在 LCD 上显示相应
的文字
GUI_PutString5_7(10,22,"Device Mode: ");
GUI_PutString5_7(10,35,"Switch");
GUI_PutString5_7(10,48,"SW4 Send Command");
LCM_Refresh();
return SWITCH;
}
return NONE;
}
* 函数名称:main
* 功能描述:通过不同的按键,设置模块的应用角色(接收模式或发送模
式)。
通过SW4发送控制命令
* 参数:无
* 返回值:无
void main(void)
{
uint8 appMode = NONE; //应用职责(角色)初
始化
basicRfConfig.panId = PAN_ID; //配置PANID 2011
basicRfConfig.channel = RF_CHANNEL; //设置信道 25
basicRfConfig.ackRequest = TRUE; //需要ACK 请求
#ifdef SECURITY_CCM //编译选项(未选)
basicRfConfig.securityKey = key; // 安全密钥
#endif
halboardinit(); //初始化板的外围设备(包括 LED LCD 和按键等)
if(halRfInit()==FAILED) //初始化 RF
{
ctrPCA9554FLASHLED(5); //RF初始化不成功,则所有的LED5 闪烁
}
ctrPCA9554FLASHLED(6); //点亮 LED6,以指示设备正常运行
GUI_PutString5_7(10,22,"Simple RF test");//在 LCD 上显示相应的文字
GUI_PutString5_7(10,35,"SW1 -> Start");
LCM_Refresh();
while (halkeycmd() != HAL_BUTTON_1); //等待按键1按下,进入下一级菜单
halMcuWaitMs(350); //延时 350MS
appMode = appSelectMode(); //设置应用职责(角色)同时在
LCD 上显示相应的设置信息
if(appMode == SWITCH) //发送模式
{
ctrPCA9554LED(2,1);
appSwitch(); //执行发送模式功能
}
else if(appMode == LIGHT) //接收模式
{
ctrPCA9554LED(3,1);
appLight(); //执行接收模式功能
}
}
五测试
1 .802.15.4—2.4G各信道信号强度测试
2测试流程
3 设备:
1.装有IAR的 PC 机一台;
2.2530 仿真器,usb 线(A 型转B 型);
3.无线节点模块 1 块,带 LCD 的智能主板 1 块,2.4G 天线1 根。
4 设计原理及说明:
本设计主要是在学会了配置 CC2530 RF 功能基础上,掌握分析 2.4G 频段信道 11-26 各个信道的信号强度。
然后通过 LCD显示测试结果,结果的显示分为两个部分,一部分是通过16 个矩形条的形式同时显示各个信道中的信号强度,16 个矩形条从左至右依次代表信道 11到信道 26 的 RSSI 值,其中矩形越高,表示该信道的 RSSI 值越强。
另一个是通过按键可以切换显示(LCD 的左上角)不同信道具体的 RSSI值。
其中按键功能分配如下:
SW1 --- 开始测试
SW2 --- 显示 RSSI 值的信道加
SW3 --- 显示 RSSI 值的信道减
测试中,矩形条高度的变化是完成一次测试就改变一次。
而具体的显示 RSSI 值是每个信道抽取 8个值后再显示。
其中扫描 16 个信道的间隔为 2000us。
其中 LED1 为工作指示灯,当工作不正常时,LED2 将为亮状态。
5 设计步骤:
1、给智能主板供电(USB外接电源或 2 节干电池)。
2、将1 个无线节点模块插入到带 LCD 的智能主板的相应位置。
3、将 2.4G的天线安装在无线节点模块上。
4、将CC2530仿真器的一端通过 USB线(A 型转B型)连接到 PC 机,另一端通过 10Pin
下载线连接到智能主板的 CC2530 JTAG 口(J203)。
5、将智能主板上电源开关拨至开位置。
按下仿真器上的按钮,仿真器上的
指示灯为绿
色时,表示连接成功。
6、使用 IAR7.51 打开“…\OURS_CC2530LIB\lib13(spectrum_analyzer)\ IAR_files”
下的 spectrum_analyzer.eww 文件,下载程序。
7、运行程序,然后按 SW1 进入测试。
8、观察 LCD的显示结果。
9、按 SW2(加)和 SW3(减)分别查看其他信道的 RSSI 值。
参考文献
[1] 贾志平.嵌入式系统原理与接口技术[M].北京:清华大学出版社,2004:221
[2] 田泽.嵌入式系统开发与应用教程[M].北京:北京航空航天大学出版社,2005:58-63
[3]沈振元、聂志泉、赵雪符. 无线通信原理. 西安电子科技出版社:128
[4]邱玲、朱近康、孙葆根、张磊. 嵌入式开发与编程. 人民邮电出版社:234-237
[5]郭梯云、邬国扬、李建东.物联网概述(第三版)西安电子科技大学出版社;241
[6] Gordon.Stuber .CC2530手册. 电子工业出版社:140-145
[7]符意德.嵌入式系统教学及实验内容的探讨[J].军工高:253
[8] 覃团发、姚海涛、覃远年、陈海强. 嵌入式开发 . 重庆大学出版社:48-54
[9]柳翔.嵌入式软件工程人才培养的探索与实践[J].计算机教育,2005:5.58
当前,科学技术都向两极化发展,既向微观发展又向宏观发展。
各学科之间既高度综合又高度分化。
这就要求了我们当代的大学生既要有坚实的理论基础,又还必须具备极强的动手能力和解决各种实际问题的能力。
而这个学期所开展的2.4G各信道信号强度测试实验课程给我提供了一个很好的机会和平台。
通过本次通信系统综合训练,加深了我对所学过的各种理论数据的认识和理解,并在一定程度上掌握并会运用。
我还学会了把学到的知识用于解决实际问题,培养、加强锻炼了我的动手实践能力。
更为难得的是,在这次训练过程中,屡屡碰见一些问题,在解决这些问题的过程中,不断加强了我对移动通信的理解。
对于一些自己不清楚,不明白但平时又很难发现的知识点有了一次全面的巩固与复习。
通过本学期的嵌入式系统实验,我深刻体会到作为一名工科学生,实际动手操作能力是何等的重要,面对一个完全陌生的实验项目,如何作设计前准备,预习相关知识,做课设应有的态度和心态都是决定最终成败的关键。
这次我们做的课设题目是2.4G各信道信号强度测试,对于刚开始这个完全陌生的题目我感到一团雾水。
但通过三周的通信系统综合训练之后,我们都学到了许多东西,这次课程设计将对我们今后的学习与生活带来很大的改变。
通过同学们之间的讨论,使自己对课设题目有了更加深刻的理解,在实验期间,通过查阅各种资料,加上我们的指导老师一直在我们身边,并给予了我们很大的帮助,对我们讲述了许多专业性很强的东西,这对我们来说是质的飞跃,从而能够做出今天的成果。
真诚的感谢老师和同学们的帮助。