1、了解和熟悉IAR开发环境
2、CC2530芯片程序的编写和烧录
1、熟悉IAR开发环境,学习创建工程添加文件以及配置必要的参数
2、将CC2530当成单片机进行开发,编写简单的C语言程序进行测试
硬件:
1、无线传感网实验箱 1套
2、PC机 1台
软件:
1、SmartRF FLASH Programmer
2、Packet Sniffer
3、SmartRF Studio 7
4、IAR Embedded WorkBench
4.1、IAR开发环境
与Keil C类似,IAR也是一个用单片机程序开发的集成开发环境,它对CC2530提供完美的支持,因此在大对数针对CC2530(或者同类型)芯片的开发中有着广泛的用途。
4.2、CC2530 SoC
CC2530 是用于2.4-GHz IEEE 802.15.4、ZigBee和RF4CE 应用的一个真正的片上系统(SoC)解决方案。它能够以非常低的总的材料成本建立强大的网络节点。CC2530 结合了领先的RF 收发器的优良性能,业界标准的增强型8051 CPU,系统内可编程闪存,8-KB RAM 和许多其他强大的功能。CC2530 有四种不同的闪存版本:CC2530F32/64/128/256,分别具有32/64/128/256KB 的闪存。CC2530 具有不同的运行模式,使得它尤其适应超低功耗要求的系统。运行模式之间的转换时间短进一步确保了低能源消耗。
在不使用它的射频功能的情况下,完全可以把CC2530当成一个51单片机来使用,本实验也是站在这里角度来进行的。
5.1、搭建IAR开发环境
5.1.1、创建新的工程
启动运行 IAR Embedded WorkBench开发环境,如果出现Embedded WorkBench Startup界面,选择Cancel。Project->Create NewProject->Tool Chain 8051->OK,并将该工程放置在一个全新的文件目录下,如图1所示:
图1,创建New Project
5.1.2 创建新文件并添加到工程
File->New->File,创建一个新的文件,Save as到工程所在目录下,并为其命名,如下图2所示,
图2 创建新的C源文件
Project->Add Files,选中刚刚创建的源码文件,点击OK,这样就会将该文件添加到本工程中,并且在视窗的左侧的工程栏中列出该文件,如图3所示,
图3 将文件添加到工程
5.1.3 设置工程选项参数
在视窗左侧的工程栏中,单击整个工程的根目录,然后选择Project->Options,得到如图4所示配置界面,
图4,进入工程选项界面
完成以下配置
General Options项中
在Target标签下,Device中选择“Texas Instruments”文件夹下的CC2530.i51
Data model栏选择Large,如图5所示
图5 General Options->Target
在Data Pointer标签中,Number of DTPRs选择1,如图6所示
图6,GeneralOptions->Data Pointer
Stack/Heap标签中,XDATA填入0X1FF,如图7所示
图7 General Options->Stack/Heap
Linker项
Output标签中点选Override default,并在下面栏中填写生成的以.hex为后缀的二进制文件的名称。
并且勾选Allow C-SPY-specific extraoutput file,如图8所示。
注意!!!这样子生的二进制文件是在IAR下调试用的,如果想要生成利用smartRF Flash Programmer 软件烧写的二进制可执行文件,请勾选Other。
图8 Linker->Output
Config标签中,勾选“Override default”,选择“$TOOLKIT_DIR$\config\lnk51ew_cc2530.xcl”,如图9所示
图9 Linker->Config
Debugger项
Setup标签->drive->Texas Instrument,如图10所示
图10 Debugger->Setup
5.2、编译调试源代码
用CC-Debugger将实验箱内的Zigbee协调器和PC机相连。
将5.3节中的流水灯源码程序拷贝至工程中test.c文件中,点击编译键,如果没有任何错误提示,点击调试键,此时会出现调试工具栏,点击运行按键,观察开发板上的LED1,LED2,LED3是否以流水灯的形式运行。
注意,如果在调试过程中出现如图11所示窗口,说明连接不良,请检查连接链路。
图11 Debugger错误提示窗口
5.3测试源码
#include
#define uint unsigned int
#define uchar unsigned char
//定义控制灯的端口
#define RLED P1_0 //定义LED1为P10口控制
#define GLED P1_1 //定义LED2为P11口控制
#define YLED P1_4 //定义LED3为P14口控制
//函数声明
void Delay(uint); //延时函数
void InitIO(void); //初始化LED控制IO口函数
/****************************
//延时
*****************************/
void Delay(uint n)
{
uinti;
for(i= 0;i
for(i = 0;i
for(i = 0;i
for(i = 0;i
for(i = 0;i
}
/****************************
//初始化IO口程序
*****************************/
void InitIO(void)
{
P1DIR |= 0x13; //P10、P11、P14定义为输出
RLED = 1;
GLED = 1;
YLED = 1; //LED灯初始化为开
}
/***************************
//主函数
***************************/
void main(void)
{
InitIO(); //初始化LED灯控制IO口
while(1) //死循环
{
RLED = !RLED; // LED1灯闪一次
Delay(10000);
GLED = !GLED; // LED2灯闪一次
Delay(10000);
YLED = !YLED; // LED3灯闪一次
Delay(10000);
}
}
5.4 更多测试源码
在\…\无线传感网实验箱\源代码\CC253X Test,目录下有更多可供测试的源码和说明,学生可以根据兴趣,自行进行测试和源码学习。