24G各信道信号强度测试实验要点.docx
《24G各信道信号强度测试实验要点.docx》由会员分享,可在线阅读,更多相关《24G各信道信号强度测试实验要点.docx(16页珍藏版)》请在冰豆网上搜索。
![24G各信道信号强度测试实验要点.docx](https://file1.bdocx.com/fileroot1/2023-1/9/9aa1656d-7c90-4022-802f-0f25da49d102/9aa1656d-7c90-4022-802f-0f25da49d1021.gif)
24G各信道信号强度测试实验要点
*****************
实践教学
*******************
兰州理工大学
计算机与通信学院
2013年春季学期
嵌入式系统开发技术课程设计
题目:
2.4G各信道信号强度测试实验
专业班级:
通信工程4班
姓名:
王强
学号:
10250424
指导教师:
薛建斌
成绩:
摘要
本次课程设计使用CC2530的RF射频CC2530RF功能模块及带有RF功能模块的智能主板分析2.4G频段信道11-26各个信道的信号强度。
在模块设计中,在两个CC2530的RF模块间进行无线通信,并且在无线通信的基础上进行2.4G频段信道11-26各个信道的信号强度分析与测试。
而且测试的效果是通过LED灯的亮灭来进行监测的。
关键词:
CC2530无线通信2.4G信道信号监测
目录
前言
一、CC2530基本介绍1
1.1CC2530芯片基本介绍1
1.2CC2530芯片引脚功能1
1.3电源引脚功能2
1.4控制线引脚3
1.5强型8051内核3
1.6复位3
二、CC2530RF模块以及信号信道分配模式4
三、设计流程5
3.1计原理及说明5
3.2设计步骤5
3.3程序流程图6
四、测试7
4.1测试装置7
4.2设计原理及说明7
4.3测试步骤7
总结9
参考文献10
致谢11
附录12
前言
本设计是嵌入式应用里比较简单的一个实现,是针对嵌入式开发板CC2530的一个模块进行构建和设计的,要实现的是两个CC2530间的RF的无线通信,并且要对各个信道信号进行监测,嵌入式开发是现阶段,现世界比较流行的开发模式。
嵌入式系统(Embeddedsystem)是一种专用的计算机系统,作为装置或设备的一部分。
通常,嵌入式系统是一个控制程序存储在ROM中的嵌入式处理器控制板。
事实上,所有带有数字接口的设备,如手表、微波炉、录像机、汽车等,都使用嵌入式系统,有些嵌入式系统还包含操作系统,但大多数嵌入式系统都是是由单个程序实现整个控制逻辑。
嵌入式系统是一种“完全嵌入受控器件内部,为特定应用而设计的专用计算机系统”,根据英国电器工程师协会(U.K.InstitutionofElectricalEngineer)的定义,嵌入式系统为控制、监视或辅助设备、机器或用于工厂运作的设备。
与个人计算机这样的通用计算机系统不同,嵌入式系统通常执行的是带有特定要求的预先定义的任务。
由于嵌入式系统只针对一项特殊的任务,设计人员能够对它进行优化,减小尺寸降低成本。
由于嵌入式系统通常进行大量生产。
所以单个的成本节约,能够随着产量进行成百上千的放大。
由于个人数码助理(PDA,PersonalDigitalAssistant)及手持设备在硬件上设计的特性,即使在软件上的扩充性比其他设备来得好,但普遍被认为是嵌入式设备。
但是这个定义也逐渐模糊。
举例来说,Intel公司的凌动(ATOM)微处理器原本是为了移动互联网设备(MID,MobileInternetDevice)这一类的嵌入式系统设计的,但是现在更多的被应用于上网本(Netbook),而上网本属于使用Windows或者Linux的个人计算机,因此嵌入式系统的定义又更模糊了。
嵌入式系统的核心是由一个或几个预先编程好以用来执行少数几项任务的微处理器或者单片机组成。
与通用计算机能够运行用户选择的软件不同,嵌入式系统上的软件通常是暂时不变的;所以经常称为“固件”。
一、CC2530基本介绍
1.1CC2530芯片基本介绍
CC2530芯片具有如下主要性能:
高性能和低功耗的8051微控制器核;32KB、64KB或128KB的系统内可编程闪存;8-KBRAM,具备在各种供电方式下的数据保持能力;集成符合IEEE802.15.4标准的2.4GHz的RF无线电收发机;极高的接收灵敏度和抗干扰性能;可编程的输出功率高达4.5dBm;只需一个晶振,即可满足网状网络系统的需要;在供电模式1时仅24mA的流耗4μs就能唤醒系统;在睡眠定时器运行时仅1μA的流耗;在供电模式3时仅0.4μA的流耗,外部中断能唤醒系统;硬件支持CSMA/CA功能;较宽的电压范围(2.0~3.6V);支持精确的数字化RSSI/LQI和强大的5通道DMA;具有捕获功能的32KHz睡眠定时器;具有电视监视器和温度传感器;具有8路舒服和可配置分辨率的12位ADC;集成了AES安全协处理器;带有2个支持多种串行通信协议的强大USART,以及1个符合IEEE802.15.4规范的MAC定时器,1个16位定时器和1个8位定时器;强大和灵活的开发工具。
1.2CC2530芯片引脚功能
CC2530芯片如图1所示,它采用6mm×6mm的QFN封装,共有40个引脚。
全部引脚可以分为I/O端口线引脚,电源线引脚和控制线引脚三类。
CC2530有21个可编程的I/O口引脚,P0、P1口是完全的8位口,P2口只有5个可使用的位。
通过软件设定一组SFR寄存器的位和字节,可使这些引脚作为通常的I/O口或作为连接ADC、计时器或USART部件的外围设备I/O口使用。
I/O口有下面的关键特性:
可设置为通常的I/O口,也可设置为外围的I/O使用;在输入时有上拉和下拉能力;全部21个I/O口引脚都具有响应外部中断源输入口。
如果需要外部中断,可对I/O口引脚产生中断,同时外部中断事件也能被用来唤醒休眠模式。
12~19脚(P0_7~P0_0):
具有4mA的输出驱动能力。
11,9脚(P1_0,P1_1):
具有20mA的驱动能力。
5~8,37~18脚(P1_7~P1_2):
具有4mA的输出驱动能力。
32~38脚(P2_4~P2_0):
具有4mA的输出驱动能力。
图一CC2530芯片
1.3电源引脚功能
AVDD1(28脚):
为模拟电路连接2.0V~3.6V的电压。
AVDD2(27脚):
为模拟电路连接2.0V~3.6V的电压。
AVDD3(24脚):
为模拟电路连接2.0V~3.6V的电压。
AVDD4(29脚):
为模拟电路连接2.0V~3.6V的电压。
AVDD5(21脚):
为模拟电路连接2.0V~3.6V的电压。
AVDD6(31脚):
为模拟电路连接2.0V~3.6V的电压。
DCOUPL(40脚):
提供1.8V的数字电源去耦电压,不使用外部电路供应。
DVDD1(39脚):
提供2.0V~3.6V的数字电源连接电压。
DVDD2(10脚):
提供2.0V~3.6V的数字电源连接电压。
1.4控制线引脚
RBIAS(30脚):
为参考电流提供精确的偏置电阻。
RESET_N(20脚):
复位引脚,低电平有效。
RF_N(26脚):
在RX期间向LNA输入负向射频信号。
RF_P(25脚):
在RX期间向LNA输入正向射频信号。
XOSC_Q1(22脚):
32MHz的晶振引脚1,或外部时钟输入引脚。
XOSC_Q2(23脚):
32MHz的晶振引脚2。
1.5强型8051内核
CC2530集成了增强工业标准8051内核MCU核心。
该核心使用标准8051指令集。
每个指令周期中的一个时钟周期与标准8051每个指令周期中的12个时钟周期相对应,并且取消了无用的总线状态,因此其指令执行速度比标准8051快。
由于指令周期在可能的情况下包含了取指令操作所需的时间,故绝大多数单字节指令在一个时钟周期内完成。
除了速度改进之外,增强的8051内核也包含了下列增强的架构:
第二数据指针;扩展了18个中断源。
该8051内核的目标代码与工业标准8051微控制器目标代码兼容。
但是,由于与标准8051使用不同的指令定时,现有的带有定时循环的代码可能需要修改。
此外,由于外接设备单元比如定时器的串行端口不同于它们在其他的8051内核,包含有使用外接设备单元特殊功能寄存器SFR的指令代码将不能正常运行。
Flash预取默认是不使能的,提高了CPU高达33%的性能。
这是以功耗稍有增加为代价的,但是因为它更快,所以在大多数情况下提高了能源消耗。
可以在FCTL寄存器中使能Flash预取。
1.6复位
CC2530有5个复位源:
强置输入引脚RESET_N为低电平;上电复位;掉电复位;看门狗定时器复位;时钟丢失复位。
复位后的初始状况如下:
I/O引脚设置为输入、上拉状态(P1.0和P1.1为输入,但是没有上拉/下拉);CPU的程序计数器设置为0x0000,程序从这里开始运行;所有外部设备的寄存器初始化到它们的复位值;看门狗定时器禁止;时钟丢失检测禁止。
二、CC2530RF模块以及信号信道分配模式
RF是CC2530的射频模块,无线信道的分配IEEE802.15.4规范的物理层定义了三个载波频段用于收发数据:
868~868.6MHz、902~928MHz和2400~2483.5MHz。
在这三个频段上发送数据使用的速率、信号处理过程以及调制方式等方面都存在着一定的差异,其中2400MHz频段的数据传输速率为250kbit/s,915MHz、868MHz分别为40kbit/s和20kbit/s。
IEEE802.15.4规范定义了27个物理信道,信道编号从0至26,每个具体的信道对应着一个中心频率,这27个物理信道覆盖了以上3个不同的频段。
不同的频段所对应的宽度不同,标准规定868MHz频段定义了1个信道(0号信道);915MHz频段定义了10个信道(1~10号信道);2400MHz频段定义了16个信道(11~26号信道)。
这些信道的中心频率定义如下:
F=868.3MHzk=0
F=906+2(k-1)MHzk=1,2,…,10
F=2405+5(k-11)MHzk=11,12,…,26
式中:
k为信道编号,F为信道对应的中心频率。
通常,ZigBee硬件设备不能同时兼容两个工作频段,在选择时,应符合当地无线电管理委员会的规定。
由于868~868.6MHz频段主要用于欧洲,902~928MHz频段用于北美,400~2483.5MHz频段可以用于全球,因此在中国所采用的都是2400MHz的工作频段。
三、设计流程
3.1计原理及说明
本实验主要分为3大部分,第一部分为初始化与RF相关的信息;第二部分为发送数据和接收数据;最后为选择模块功能函数。
其中模块功能的选择是通过开发板上的按键来选择的,其中按键功能分配如下:
SW1---开始测试(进入功能选择菜单)
SW2---设置模块为接收功能(Light)
SW3---设置模块为发送功能(Switch)
SW4---发送模块发送命令按键
当发送模块按下SW4时,将发射一个控制命令,接收模块在接收到该命令后,将控制LDE1的亮或者灭。
其中LED6为工作指示灯,当工作不正常时,LED5将为亮状态。
3.2设计步骤
1、给智能主板供电(USB外接电源或2节干电池)。
2、将两个无线节点模块分别插入到两个带LCD的智能主板的相应位置。
3、将2.4G的天线安装在无线节点模块上。
4、将CC2530仿真器的一端通过USB线(A型转B型)连接到PC机,另一端通过10Pin下载线连接到智能主板的CC2530JTAG口(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.3程序流程图
四、测试
4.1测试装置
1.装有IAR的PC机一台;
2.2530仿真器,usb线(A型转B型);
3.无线节点模块1块,带LCD的智能主板1块,2.4G天线1根。
4.2设计原理及说明
本设计主要是在学会了配置CC2530RF功能基础上,掌握分析2.4G频段信道11-26各个信道的信号强度。
然后通过LCD显示测试结果,结果的显示分为两个部分,一部分是通过16个矩形条的形式同时显示各个信道中的信号强度,16个矩形条从左至右依次代表信道11到信道26的RSSI值,其中矩形越高,表示该信道的RSSI值越强。
另一个是通过按键可以切换显示(LCD的左上角)不同信道具体的RSSI值。
其中按键功能分配如下:
SW1---开始测试
SW2---显示RSSI值的信道加
SW3---显示RSSI值的信道减
测试中,矩形高度的变化是完成一次测试就改变一次。
而具体的显示RSSI值是每个信道抽取8个值后再显示。
其中扫描16个信道的间隔为2000us。
其中LED1为工作指示灯,当工作不正常时,LED2将为亮状态。
4.3测试步骤
1、给智能主板供电(USB外接电源或2节干电池)。
2、将1个无线节点模块插入到带LCD的智能主板的相应位置。
3、将2.4G的天线安装在无线节点模块上。
4、将CC2530仿真器的一端通过USB线(A型转B型)连接到PC机,另一端通过10Pin下载线连接到智能主板的CC2530JTAG口(J203)。
5、将智能主板上电源开关拨至开位置。
按下仿真器上的按钮,仿真器上的指示灯为绿色时,表示连接成功。
6、使用IAR7.51打开“…\OURS_CC2530LIB\lib13(spectrum_analyzer)\IAR_files”下的spectrum_analyzer.eww文件,下载程序。
7、运行程序,然后按SW1进入测试。
8、观察LCD的显示结果。
9、按SW2(加)和SW3(减)分别查看其他信道的RSSI值。
总结
在这次课程设计中我们比较深入的学习了嵌入式开发的知识,通过本次综合训练让我了解了各种移动信道的知识,这次课设训练对以后学习嵌入式应用很有意义,让我们提前对这方面的知识有了进一步的认识。
但同时在这次课设训练过程中也当遇到了很多实际问题,比如说对有些关于嵌入式知识的缺乏,不过在老师的进一步讲解之后,我们逐步认识和理解了其中的关键,而且又对所学的理论知识有所理解。
通过本次嵌入开发综训练,加深了我对所学过的各种理论数据的认识和理解,并在一定程度上掌握并会运用。
我还学会了把学到的知识用于解决实际问题,培养、加强锻炼了我的动手实践能力。
更为难得的是,在这次训练过程中,屡屡碰见一些问题,在解决这些问题的过程中,不断加强了我的理解。
嵌入式对于一些自己不清楚,不明白但平时又很难发现的知识点有了一次全面的巩固与复习。
最后让我知道在大学阶段,理论的学习和实践是密不可分的。
离开了实践的理论是没有任何意义可言的。
与此同时,理论是需要伴随着实践才能完善。
同时,在与同学共同解决一些问题的过程中,提高了我们的团队协作精神。
参考文献
[1]覃团发、姚海涛、覃远年、陈海强.嵌入式开发.重庆大学出版社
[2]Gordon.Stuber.CC2530手册.电子工业出版社
[3]沈振元、聂志泉、赵雪符.无线通信原理.西安电子科技出版社
[4]邱玲、朱近康、孙葆根、张磊.嵌入式开发与编程.人民邮电出版社
[5]郭梯云、邬国扬、李建东.物联网概述(第三版)西安电子科技大学出版社
致谢
通过嵌入式系统开发技术课程设计,让我都学到了许多东西,体验到了书本学习与实际应用的不同,这种感同身受必将对我们今后的学习与生活带来很大的推动作用。
在这几周的时间中,张老师时时在我的身旁引导我,同时也倾注他们所有的精力,最终指导我顺利的完成了这次课程设计,我非常感谢张老师的辛勤教诲,我将终生难忘我的张老师对我的亲切关怀和悉心指导,再一次向他表示衷心的感谢,感谢他为学生营造的浓郁学术氛围,以及学习、生活上的无私帮助!
附录
主程序
#include"hal_board.h"
#include"hal_int.h"
#include"hal_mcu.h"
#include"hal_rf.h"
#include"basic_rf.h"
#include"LCD.h"
#defineRF_CHANNEL25//2.4GHzRF使用信道25
#definePAN_ID0x2011//通信PANID
#defineSWITCH_ADDR0x2530//开关模块地址
#defineLIGHT_ADDR0xBEEF//灯模块地址
#defineAPP_PAYLOAD_LENGTH1//命令长度
#defineLIGHT_TOGGLE_CMD0//命令数据
//应用状态
#defineIDLE0
#defineSEND_CMD1
//应用角色
#defineNONE0
#defineSWITCH1
#defineLIGHT2
#defineAPP_MODES2
//按键
#defineHAL_BUTTON_11
#defineHAL_BUTTON_22
#defineHAL_BUTTON_33
#defineHAL_BUTTON_44
#defineHAL_BUTTON_55
#defineHAL_BUTTON_66
staticuint8pTxData[APP_PAYLOAD_LENGTH];//发送数据数组164
staticuint8pRxData[APP_PAYLOAD_LENGTH];//接收数据数组
staticbasicRfCfg_tbasicRfConfig;//RF初始化结构体
externvoidhalboardinit(void);//硬件初始化函数
externvoidctrPCA9554FLASHLED(uint8led);//IIC灯控制函数
externvoidctrPCA9554LED(uint8led,uint8operation);
externuint8halkeycmd(void);//获取按键值函数
#ifdefSECURITY_CCM//安全密钥
staticuint8key[]={
0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,
0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,
};
#endif
staticvoidappLight();//灯应用处理函数
staticvoidappSwitch();//开关应用处理函数
staticuint8appSelectMode(void);//选择应用功能函数
/*************************************/
函数名称:
appLight
*功能描述:
接收模式应用函数,初始化RF一些参数,接收另一个模块发送的控制命令,然后控制相应的LED灯
*参数:
无
*返回值:
无
/***************************************************/
staticvoidappLight()
{
basicRfConfig.myAddr=LIGHT_ADDR;//设置接收模块的地址
if(basicRfInit(&basicRfConfig)==FAILED)//RF初始化
{
ctrPCA9554FLASHLED(5);//RF初始化不成功,则所有的LED5闪烁
}
basicRfReceiveOn();//打开接收功能
//Mainloop
while(TRUE)
{
while(!
basicRfPacketIsReady());//准备接收数据
if(basicRfReceive(pRxData,APP_PAYLOAD_LENGTH,NULL)>0)//接收数据
{
if(pRxData[0]==LIGHT_TOGGLE_CMD)//判断命令是否正确
{
ctrPCA9554FLASHLED
(1);//关闭或打开LED1
}
}
}
}
*函数名称:
appSwitch
*功能描述:
发送模式应用函数,初始化发送模式RF,通过按下SW4向另一个模块发
送控制命令。
*参数:
无
*返回值:
无
staticvoidappSwitch()
{
pTxData[0]=LIGHT_TOGGLE_CMD;//向发送数据中写入命令
basicRfConfig.myAddr=SWITCH_ADDR;//设置发送模块的地址
if(basicRfInit(&basicRfConfig)==FAILED)//RF初始化
{
ctrPCA9554FLASHLED(5);//RF初始化不成功,则所有的LED5闪烁
}
basicRfReceiveOff();//关闭接收功能
//Mainloop
while(TRUE)
{
if(halkeycmd()==HAL_BUTTON_4)//判断是否按下SW4
{
basicRfSendPacket(LIGHT_ADDR,pTxData,APP_PAYLOAD_LENGTH);//发送数
halIntOff();//关闭全局中断
halIntOn();//打开中断
}
}
}
*函数名称:
appSelectMode
*功能描述:
通过SW2或SW3选择模块的应用模式。
*参数:
无
*返回值:
LIGHT--接收模式
*SWITCH--发送模式
*NONE--不正确模式
/***********************