CC2530实验指导书

更新时间:2024-03-22 08:15:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

博焱科技

CC2530实验指导书

合肥市博焱科技有限公司

博焱科技

目录

一、CC2530基础实验部分 .......................................................................................................3 1.1 输入输出I/O 控制实验 .............................................................................................. 3 1.1.1 CC2530 基础实验1 :LED自动闪烁 ................................................................. 3 1.1.2 CC2530 基础实验2 :按键控制LED开关 ........................................................ 5 1.2 中断实验 ....................................................................................................................... 6 1.2.1CC2530 基础实验3 :外部中断 .......................................................................... 6 1.3 定时/ 计数器实验 ....................................................................................................... 9 1.3.1CC2530 基础实验4:T1使用 ............................................................................... 9 1.3.2CC2530 基础实验5 :T2使用 ........................................................................... 10 1.3.3CC2530 基础实验6:T3使用 ............................................................................. 13 1.3.4 CC2530 基础实验8 :T4使用 ......................................................................... 16 1.4 串口UART .................................................................................................................... 18 1.4.1CC2530 基础实验9:单片机串口发数 .............................................................. 18 1.4.2CC2530 基础实验10:在PC用串口控制LED ................................................... 20 1.4.3CC2530 基础实验11:PC串口收数并发数 ....................................................... 22 1.4.4CC2530 基础实验12:串口时钟PC显示 .......................................................... 23 1.5 睡眠定时器实验 ......................................................................................................... 25 1.5.1 CC2530 基础实验13:系统睡眠工作状态 ...................................................... 25 1.5.2 CC2530 基础实验14 :睡眠定时器使用 ........................................................ 26 1.6 ADC实验 ...................................................................................................................... 28 1.16.1 CC2530 基础实验15 :ADC实验 ................................................................... 28 1.7 看门狗 ......................................................................................................................... 30 1.7.1CC2530 基础实验16:看门狗模式 .................................................................... 30

博焱科技

一、CC2530基础实验部分

1.1 输入输出I/O 控制实验

1.1.1 CC2530 基础实验1 :LED自动闪烁

一、实验目的:

本实验的目的是让用户了解CC2530的I/O接口的编程方法,学会使用I/O操作外部设备。实验以LED为外设,通过I/O控制LED的亮灭。 二、实验仪器设备

仿真器1 台,传感器节点底板1 块,ZigBee 模块 1 块,USB 连接线1 根。 三、实验内容:

(一)实验原理说明: 硬件说明:

图1 LED连接原理图

如图1所示,发光二极管的D2的阴极与CC2530的P1_1连接,发光二极管的D3的阴极与CC2530的P1_0连接。因此只要P1_1和P1_0的输出电压为低电平,发光二极管就会点亮,反之则会关闭。 软件说明:

本实验通过操作P1_0和P1_1的相关寄存器实现开、关发光二极管。操作的寄存器有P1,P1DIR ,没有设置而是取默认值的寄存器有:P1SEL ,P1INP 。

博焱科技

P1SEL (P1功能选择寄存器)

(二)实验内容:

博焱科技

1、实验相关函数

void Delay(uint n);///延时函数;

void Initial(void); ///初始化P1_0,P1_1; void main(); ///实验1主函数; 具体代码见实验源码包。

2、实验步骤

连接硬件。打开IAR建立新工程,编写相关代码。在线调试代码 ,调试完毕通过下载器将可执行文件下载至单板,观察实验结果。 (三)预期实验结果:

执行程序以后,底板上的LED1和LED2会一直闪烁。

1.1.2 CC2530 基础实验2 :按键控制LED开关

一、实验目的:

让用户掌握按键应用这一常用人机交互方法,本次使用两个按键开关分别控制两个LED 灯。按下K1键切换电源底板上的 LED1 灯开,按下K2键 切换底板上的LED2 灯开。 二、实验仪器设备

仿真器1 台,传感器节点底板1 块,ZigBee 模块 1 块,USB 连接线1 根。 三、实验内容:

(一)实验原理说明: 硬件说明:

图2按键KEY原理图

图3 LED连接图

如图2所示,P0_3为上拉,按键K1接P0_3。由于P0_3为上拉,输入电平为高电平,当按键K1按下时,P0_3输入电平被拉低。通过设置检测P0_3的输入电平,来控制实验1中的LED亮灭。按键K2控制LED亮灭同理。

博焱科技

软件说明:

实验中操作了的寄存器有P0,P0DIR ,P0SEL ,P1,P1DIR ,P1SEL ,P1INP 。具体寄存器的功能及设置参见cc2530芯片手册。 (二)实验内容: 1、实验相关函数

void Delay(uint n);///延时函数;

void Initial(void); ///初始化P1_0,P1_1,设置P1_0,P1_1为高电平输出; void InitKey(void);///初始化按键,设置P0_3,P0_4为输入;

unsigned char KeyScan(void);/// 函数功能是检测按键是否按下,并返回相应的值; void main(); ///实验2主函数; 具体代码见实验源码包。

2、实验步骤

连接硬件。打开IAR建立新工程,编写相关代码。在线调试代码 ,调试完毕通过下载器将可执行文件下载至单板,观察实验结果。

(三)预期实验结果:

执行程序以后,按下K1,底板上的LED1亮;按下K2,底板上LED2亮。

1.2 中断实验

1.2.1CC2530 基础实验3 :外部中断

一、实验目的:

使用两个按键来翻转LED 的状态,但这里两个按键不是做键盘用,而是产生中断触发信号。按下K1键电源底板上的 LED1 灯开。 二、实验仪器设备

仿真器1 台,传感器节点底板1 块,ZigBee 模块 1 块,USB 连接线1 根。 三、实验内容:

(一)实验原理说明: 硬件说明:

图4按键KEY原理图

博焱科技

图5 LED连接图

按下K1,产生中断,中断服务程序中中对当前LED的状态进行反转,即亮变成灭,灭变成亮。

软件说明:

实验中操作了的寄存器有P0,P0DIR ,P0SEL ,P1,P1DIR ,P1SEL ,P1INP , P0IEN ,P0CTL ,IEN2,P0IFG 等寄存器。

博焱科技

(二)实验内容: 1、实验相关函数

void Delay(uint n);///延时函数;

博焱科技

void Init_IO_AND_LED(void); ///初始化P0_3,P0_4,使能P0中断且配置为下降沿触发; void P1_ISR(void);///中断服务程序,产生中断后反转LED状态,清楚中断标志; void main(); ///实验3主函数; 具体代码见实验源码包。

2、实验步骤

连接硬件。打开IAR建立新工程,编写相关代码。在线调试代码 ,调试完毕通过下载器将可执行文件下载至单板,观察实验结果。

(三)预期实验结果:

执行程序以后,按下K1,底板上的LED1反转,再按再次状态反转。

1.3 定时/ 计数器实验

1.3.1CC2530 基础实验4:T1使用

一、实验目的:

用定时器1 来改变底板上LED灯的状态,T1每溢出两次,两个小灯闪烁一次,并且在停止闪烁后成闪烁前相反的状态。 二、实验仪器设备

仿真器1 台,传感器节点底板1 块,ZigBee 模块 1 块,USB 连接线1 根。 三、实验内容:

(一)实验原理说明: 硬件说明:

与实验1中硬件电路相同。 软件说明:

实验中操作的寄存器有P1,P1DIR ,P1SEL ,T1CTL。前三个寄存器见实验1中的介绍。

博焱科技

(二)实验内容: 1、实验相关函数

void Delay(uint n);///延时函数;

void Initial(void); ///设置P1_0,P1_1为高电平输出,将定时器1 设为自动重装模式,计数时钟为 0.25M 。

void main(); ///实验4主函数; 具体代码见实验源码包。

2、实验步骤

连接硬件。打开IAR建立新工程,编写相关代码。在线调试代码 ,调试完毕通过下载器将可执行文件下载至单板,观察实验结果。

(三)预期实验结果:

执行程序以后,T1每溢出两次,两个小灯闪烁一次,并且在停止闪烁后成闪烁前相反的状态。

1.3.2CC2530 基础实验5 :T2使用

一、实验目的:

用定时器1 来改变底板上LED灯的状态,T1每溢出两次,两个小灯闪烁一次,并且在停止闪烁后成闪烁前相反的状态。 二、实验仪器设备

仿真器1 台,传感器节点底板1 块,ZigBee 模块 1 块,USB 连接线1 根。 三、实验内容:

(一)实验原理说明: 硬件说明:

与实验1中硬件电路相同。

博焱科技

软件说明:

实验中操作了的寄存器有P1,P1SEL ,P1DIR ,T2CTRL ,T2M0,T2IRQM 等寄存器。 P1 参见CC2530实验1 P1SEL 参见 CC2530实验 1 P1DIR 参见 CC2530实验 1 T2CTRL (T2配置寄存器)

博焱科技

(二)实验内容: 1、实验相关函数

void Delay(uint n);///延时函数;

void Initial(void); ///函数功能是启用LED ,使用LED 可控,开T2比较中断 void main(); ///实验5主函数;

注意:重要的宏定义 开启溢出中断

#define SET_TIMER2_CAP_INT() \\ do{ \\ T2IRQM = 0x04; \\

EA = 1; \\ T2IE = 1; \\ T2MSEL |= 0xf4; \\

博焱科技

}while(0)

设定溢出周期

#define SET_TIMER2_CAP_COUNTER(v al) SET_WORD(T2M1,T2M0,val) 功能:将无符号整形数val的高8 位写入 T2CAPLPL ,低8 位写入 T2CAPHPH。 启动T2

#define TIMER2_RUN() T2CTRL|=0X01 停止T2

#define TIMER2_STOP() do{T2CTRL&=0XFE;}while(0) 具体代码见实验源码包。

2、实验步骤

连接硬件。打开IAR建立新工程,编写相关代码。在线调试代码 ,调试完毕通过下载器将可执行文件下载至单板,观察实验结果。

(三)预期实验结果:

执行程序以后,T2每发生一次中断小灯改变状态一次。

1.3.3CC2530 基础实验6:T3使用

一、实验目的:

用定时器3 来改变小灯的状态,T3每发生200 次中断小灯改变状态一次。 二、实验仪器设备

仿真器1 台,传感器节点底板1 块,ZigBee 模块 1 块,USB 连接线1 根。 三、实验内容:

(一)实验原理说明: 硬件说明:

与实验1中硬件电路相同。 软件说明:

实验中操作了的寄存器有P1,P1SEL ,P1DIR ,T3CTL,T3CCTL0,T3CC0 ,T3CCTL1,T3CC1 等寄存器。

P1 参见CC2530实验1 P1SEL 参见 CC2530实验 1 P1DIR 参见 CC2530实验 1 T3CTL(T3控制寄存器)

博焱科技

T3CCTL0 (T3通道0 捕获/ 比较控制寄存器)

T3CC0 (T3通道0 捕获/比较值寄存器)

博焱科技

T3CCTL1 (T3通道1 捕获/ 比较控制寄存器)

T3CC1 (T3通道1 捕获/比较值寄存器)

(二)实验内容: 1、实验相关函数

void Init_T3_AND_LED(void);///函数功能:将I/0 P10,P11 设置为输出去控制LED ,将T3设置为自动重装模式,定时器时钟16分频,并启动 T3。

void T3_ISR(void); ///初始化P1_0,P1_1,设置P1_0,P1_1为高电平输出; void InitKey(void);///中断服务程序,每200 次中断改变一次LED 的状态。 void main(); ///实验6主函数;

博焱科技

开始初始化I/O与串口接收3字节N接收数据Y检测数据并控制LED清除接收的数据

图7程序流程图

(二)实验内容: 1、实验相关函数

void Delay(uint n);定性延时,参见实验1 void initUARTtest(void);函数原型:

void initUARTtest(void) { CLKCONCMD &= ~0x40; // 晶振 while(!(SLEEPSTA & 0x40)); // 等待晶振稳定

CLKCONCMD &= ~0x47; //TICHSPD128 分频,CLKSPD 不分频 SLEEPCMD |= 0x04; // 关闭不用的RC振荡器 PERCFG = 0x00; // 位置1 P0 口 P0SEL = 0x3c; //P0 用作串口

P2DIR &= ~0XC0; //P0 优先作为串口0 U0CSR |= 0x80; //UART 方式 U0GCR |= 10; //baud_e U0BAUD |= 216; // 波特率设为57600 UTX0IF = 0; } 函数功能:初始化串口0 ,将I/O 映射到P0口,P0优先作为串口0 使用,UART 工作方式,波特率为57600。使用晶振作为系统时钟源。

void UartTX_Send_String(char *Data,int len) ; 函数原型:

void UartTX_Send_String(char *Data,int len)

{ int j; for(j=0;j

} }

博焱科技

函数功能:串口发字串,*Data 为发送缓存指针,len 为发送字串的长度,只能是在初始化函数void initUARTtest(void) 之后调用才有效。发送完毕后返回,无返回值。

void UART0_ISR(void)函数原型: __interrupt void UART0_ISR(void)

{ URX0IF = 0; // 清中断标志 temp = U0DBUF; } 函数功能:一旦有数据从串口送到 CC2530,则立即进入中断,进入中断后将接收的数据先存放到temp 变量,然后在主程序中去处理接收到的数据。 具体代码见实验源码包。

2、实验步骤

连接硬件。打开IAR建立新工程,编写相关代码。在线调试代码 ,调试完毕通过下载器将可执行文件下载至单板,观察实验结果。 (三)预期实验结果:

执行程序以后,PC发送相应的指令可以控制LED1和LED2亮灭。

1.4.3CC2530 基础实验11:PC串口收数并发数

一、实验目的:

在PC上从串口向CC2530发任意长度为 30字节的字串,若长度不足 30字节,则以“#“为字串末字节,CC2530在收到字节后会将这一字串从串口反向发向 PC,用串口助手可以显示出来。

图8实验11截图

二、实验仪器设备

仿真器1 台,传感器节点底板1 块,ZigBee 模块 1 块,USB 连接线1 根。 三、实验内容:

博焱科技

(一)实验原理说明: 硬件说明: 无

软件说明:

实验中操作了的寄存器有:P1,P1DIR ,P1SEL ,CLKCONCMD,SLEEPCMD,PERCFG , U0CSR,U0GCR,U0BAUD,IEN0,U0DUB等寄存器。

各寄存器的说明请参见CC2530数据手册。

开始初始化I/O与串口(接收数据!=#)&(接收数据<30)N接收数据Y将收到的数据发送清除接收的数据

图9实验11流程图

(二)实验内容: 1、实验相关函数

具体代码见实验源码包。

2、实验步骤

连接硬件。打开IAR建立新工程,编写相关代码。在线调试代码 ,调试完毕通过下载器将可执行文件下载至单板,观察实验结果。 (三)预期实验结果:

执行程序以后,在PC上从串口向CC2530发任意长度为 30字节的字串,若长度不足 30字节,则以“#“为字串末字节,CC2530在收到字节后会将这一字串从串口反向发向 PC,用串口助手可以显示出来。

1.4.4CC2530 基础实验12:串口时钟PC显示

一、实验目的:

本实验的目的利用CC2530 定时器1产生秒信号,通过串口显示时钟。

博焱科技

图10 实验12演示图

二、实验仪器设备

仿真器1 台,传感器节点底板1 块,ZigBee 模块 1 块,USB 连接线1 根。 三、实验内容:

(一)实验原理说明: 硬件说明: 无

软件说明:

实验中操作了的寄存器有:P1,P1DIR ,P1SEL ,T1CTL,T1CCTL0,T1CC0H ,T1CC0L,IEN0,IEN1,CLKCONCMD,SLEEPCMD,PERCFG ,U0CSR,U0GCR,U0BAUD,IEN0,U0DUB等寄存器。

各寄存器的说明请参见CC2530数据手册。

博焱科技

开始初始化I/O与串口1S到Y增加1sN收到设置字Y时间重新赋值N串口向电脑发送时间

图11实验12程序流程图

(二)实验内容: 1、实验相关函数

具体代码见实验源码包。

2、实验步骤

连接硬件。打开IAR建立新工程,编写相关代码。在线调试代码 ,调试完毕通过下载器将可执行文件下载至单板,观察实验结果。 (三)预期实验结果:

执行程序以后,PC串口显示时钟。。

1.5 睡眠定时器实验

1.5.1 CC2530 基础实验13:系统睡眠工作状态

一、实验目的:

本实验的目的在小灯闪烁10 次以后进入低功耗模式PM3。CC2530一共有4 种功耗模式,分别是PM0 ,PM1 ,PM2 ,PM3,以PM3功耗最低。 二、实验仪器设备

仿真器1 台,传感器节点底板1 块,ZigBee 模块 1 块,USB 连接线1 根。 三、实验内容:

(一)实验原理说明: 硬件说明: 同实验1。 软件说明:

实验中操作了的寄存器有P1,P1DIR ,P1SEL ,CLKCONCMD,SLEEPCMD,PCON 等寄

博焱科技

存器。

(二)实验内容: 1、实验相关函数

void Delay(uint n);///延时函数; void Initial(void); ///初始化函数 重要的宏定义

设置CC2530功耗模式,选定后立刻进入相应功耗模式。

#define SET_POWER_MODE(mode) \\ do { \\ if(mode == 0) { SLEEPCMD &= ~0x03; } \\ else if (mode == 3) { SLEEPCMD |= 0x03; } \\ else { SLEEPCMD &= ~0x03; SLEEPCMD |= mode; } \\ PCON |= 0x01; \\ asm(\ \\

}while (0) 具体代码见实验源码包。

2、实验步骤

连接硬件。打开IAR建立新工程,编写相关代码。在线调试代码 ,调试完毕通过下载器将可执行文件下载至单板,观察实验结果。 (三)预期实验结果:

执行程序以后,将测量电流表串接入 CC2530模块的供电电路,待小灯同步闪烁后测电流,然后根据P = U*I即可得到功率。提示:可以在程序中将小灯关闭,进一步降低功耗。

1.5.2 CC2530 基础实验14 :睡眠定时器使用

一、实验目的:

本实验的目的在小灯快速闪烁5次后进入睡眠状态 PM2 ,PM2下睡眠定时器 SLEEPCMD TIMER(ST)仍然可以正常工作,从0x000000到0xffffff反复计数,当ST计数超过写入ST[2-0]的0x000f00时,系统由中断唤醒,小灯闪烁5次后进入PM2 ,这样周而复始的唤醒工作然后睡眠。系统睡眠的时间为8 分32 秒,这已经是最长睡眠时间。 二、实验仪器设备

仿真器1 台,传感器节点底板1 块,ZigBee 模块 1 块,USB 连接线1 根。 三、实验内容:

(一)实验原理说明: 硬件说明: 无

软件说明:

博焱科技

实验中操作了的寄存器有P1,P1DIR ,P1SEL ,IEN0,ST2 ,ST1 ,ST0 ,CLKCONCMD, SLEEPCMD等寄存器。

(二)实验内容: 1、实验相关函数

void Delay(uint n);///延时函数;

void Init_SLEEPCMD_TIMER(void);函数原型:

void Init_SLEEPCMD_TIMER(void) { ST2 = 0X00; ST1 = 0X0f;

ST0 = 0X00; EA = 1; // 开中断 STIE = 1; STIF = 0;

} 函数功能:打开睡眠定时器SLEEPCMD TIMER(ST)中断,设置ST的中断发生时间为计数值达到0x000f00 时。

void LedGlint(void); 函数原型:

void LedGlint(void) { uchar jj=10;

while(jj--) { RLED = !RLED;

Delay(10000); } } 函数功能:让LED 闪烁5 次,无返回值。 void ST_ISR(void);函数原型:

博焱科技

__interrupt void ST_ISR(void) { STIF = 0; } 函数功能:睡眠定时器中断服务程序,清中断标志,无其他操作。

具体代码见实验源码包。

2、实验步骤

连接硬件。打开IAR建立新工程,编写相关代码。在线调试代码 ,调试完毕通过下载器将可执行文件下载至单板,观察实验结果。 (三)预期实验结果:

执行程序以后,单板周而复始的唤醒工作然后睡眠。

1.6 ADC实验

1.16.1 CC2530 基础实验15 :ADC实验

一、实验目的:

本实验的目的是取片内温度传感器为AD源,并将转换得到温度通过串口送至电脑。

图12实验15效果图

二、实验仪器设备

仿真器1 台,传感器节点底板1 块,ZigBee 模块 1 块,USB 连接线1 根。 三、实验内容:

(一)实验原理说明: 硬件说明:

博焱科技

软件说明:

实验中操作了的寄存器有CLKCONCMD,SLEEPCMD,PERCFG ,U0CSR,U0GCR,U0BAUD, CLKCONSTA ,IEN0,U0DUB,ADCCON1,ADCCON3,ADCH ,ADCL 等寄存器。

(二)实验内容: 1、实验相关函数

void Delay(uint n);///延时函数;

void Delay(uint n);定性延时,参见实验1 void initUARTtest(void);函数原型:

void initUARTtest(void) { CLKCONCMD &= ~0x40; // 晶振 while(!(SLEEPSTA & 0x40)); // 等待晶振稳定 CLKCONCMD &= ~0x47; //TICHSPD128 分频,CLKSPD 不分频 SLEEPCMD |= 0x04; // 关闭不用的RC振荡器

PERCFG = 0x00; // 位置1 P0 口 P0SEL = 0x3c; //P0 用作串口

U0CSR |= 0x80; //UART 方式 U0GCR |= 10; //baud_e = 10;

U0BAUD |= 216; // 波特率设为57600 UTX0IF = 1; U0CSR |= 0X40; // 允许接收

IEN0 |= 0x84; // 开总中断,接收中断 }

函数功能: 将系统时钟设为高速晶振,将P0口设置为串口0 功能引脚,串口0 用UART模式,波特率设为57600,允许接收。在使用串口之前调用。

void UartTX_Send_String(char *Data,int len) 函数原型:

void UartTX_Send_String(char *Data,int len) { int j; for(j=0;j

void initTempSensor(void)函数原型:

void initTempSensor(void){

DISABLE_ALL_INTERRUPTS(); SET_MAIN_CLOCK_SOURCE(0);

*((BYTE __xdata*) 0xDF26) = 0x80; } 函数功能:将系统时钟设为晶振,设AD目标为片机温度传感器。 INT8 getTemperature(void)函数原型:

博焱科技

INT8 getTemperature(void){ UINT8 i; UINT16 accValue;

UINT16 value; accValue = 0; for( i = 0; i < 4; i++ ) {

ADC_SINGLE_CONVERSION(ADC_REF_1_25_V | ADC_14_BIT | ADC_TEMP_SENS); ADC_SAMPLE_SINGLE(); while(!ADC_SAMPLE_READY());

value = ADCL >> 2; value |= (((UINT16)ADCH) << 6); accValue += value; } value = accValue >> 2; // devide by 4

return ADC14_TO_CELSIUS(value); } 函数功能:连续进行4 次AD转换,将得到的结果求均值后将AD结果转换为温度返回。

重要的宏定义

将片内温度传感器AD转换的结果转换成温度。

#define ADC14_TO_CELSIUS(ADC_VALUE) ( ((ADC_VALUE) >> 4) - 315) 具体代码见实验源码包。

2、实验步骤

连接硬件。打开IAR建立新工程,编写相关代码。在线调试代码 ,调试完毕通过下载器将可执行文件下载至单板,观察实验结果。 (三)预期实验结果:

执行程序以后,PC串口助手中有电压数值显示。

1.7 看门狗

1.7.1CC2530 基础实验16:看门狗模式

一、实验目的:

本实验的目的是在主程序中没有连续改变小灯的状态,而在开始运行时将其关闭,延时后点亮。实验现象是一只小灯不断闪烁,这是因为程序中启动了看门狗,看门狗时间长度为1 秒,如果1 秒内没有复位看门狗的话,系统将复位。系统复位后再次开启看门狗,1 秒后复位。

二、实验仪器设备

仿真器1 台,传感器节点底板1 块,ZigBee 模块 1 块,USB 连接线1 根。 三、实验内容:

(一)实验原理说明: 硬件说明: 无

本文来源:https://www.bwwdw.com/article/lpa8.html

Top