您的当前位置:首页正文

实验1:CC2530 LED 灯闪烁实验

2022-06-30 来源:步旅网
计算机科学与技术学院

实验报告

课程名称: 无线传感器网络原理与应用

实验一CC2530 LED灯闪烁实验

一、实验目的

熟悉鼎轩 WSN 实验平台使用的基本步骤,熟悉 IAR 开发环境,掌握 CC2530 芯片 LED 对应的 GPIO 引脚,并且熟练掌握 LED 的使用。

二、实验内容

1)安装 IAR 开发环境;

2)控制红灯、绿灯、蓝灯(蓝灯、黄灯、绿灯)交替闪烁。

三、实验环境

硬件:鼎轩 WSN 实验箱(汇聚网关、烧录线) ,PC 机;

软件:IAR 软件。

四、实验步骤

目前网关上有红、绿、蓝 3 个 LED 灯,还另有一个红色的 LED 工作指示灯,节点上有红、蓝、黄、绿 4 个 LED 灯,其中,红灯是工作指示灯,蓝灯和黄灯主要用于程序调试。 现在对 LED 灯的操作主要是点亮和关闭,下面是 CC2530 中 LED部分的原理图。LED 颜色, MCU 管脚,信号控制关系如下: 对于网关板:

对于节点板:

要想通过编程 P1,P2 引脚控制 LED 的亮灭,必须设置对应的引脚方向为输出,对应的暂存器为 P1DIR,P2DIR。

P2DIR :D0~D4 设置 P2_0 到 到 P2_4 的方向D7 、D6 位作为端口 0 外设优先级的控制

1)打开鼎轩 WSN 实验箱,检查实验箱设备,确保实验箱设备完整、连接无误后,连接电源线,打开电源开关;

2)安装好 IAR 开发环境以及驱动程序,详细方法见说明资料;

3)用烧录线连接汇聚网关上的烧录接口与 PC 机 USB 接口,连接方法可参考 相应的说明资料;

4) 双击打开目录(/cc2530-simple-demo/LED_BLINK)下的工程图标 AUTO.eww 打开工程;

5) 点击 IAR 中的图标按钮 编译程序;

6)完成编译后若没有错误信息,将实验箱节点编程开关上汇聚网关开关拨上 去,点击调试并下载按钮 将程序下载到汇聚网关上; 7) 运行程序,可以观察到红灯和绿灯交替闪烁。 8) 修改程序代码,实现红、蓝、绿三个灯一起闪烁。

程序代码:

程序代码源文件为/cc2530-simple-demo/LED_BLINK/main.c, #include #define uint unsigned int

#define uchar unsigned char //定义控制灯的端口

#define RLED P1_2 //定义红灯为 P1_2 口控制 #define GLED P1_3 //定义绿灯为 P1_3 口控制 //Local Functions

void Delay(uint); //延时函数 void Initial(void); //初始化 P1 口 /**************************** //延时

*****************************/ void Delay(uint n) { uint tt;

for(tt = 0;tt/**************************** //初始化程序

*****************************/ void Initial(void) {

P1DIR |= 0x0C; //P1_2、P1_3 定义为输出 RLED = 0; GLED = 1; }

/***************************

//主函数

***************************/ void main(void) {

Initial(); //调用初始化函数 while(1) {

GLED = !GLED; RLED = !RLED; Delay(50000); } }

P1DIR |= 0x0C;该语句定义 P1 口的 P1.2 和 P1.3 方向为输出; RLED = 0;红灯初始化低电平,程序开始运行时熄灭; GLED = 1;绿灯初始化高电平,程序开始运行时点亮;

GLED = !GLED;RLED = !RLED;这两个语句让 LED 状态翻转,即若当前 LED 点亮,则将它熄灭,若当前 LED 熄灭,则将它点亮。

实验总结

该实验完成了对 CC2530 芯片的 LED 进行控制, 实际上是对 CC2530 芯片的 GPIO的控制。掌握芯片 LED 控制之后,在复杂的程序中可以用 LED 作为一种很好的调试手段。

实验二:CC2530定时器实验

一、实验目的

了解并学会使用 CC2530 芯片的定时器。

二、实验内容

用定时器 1 和定时器 3 采用中断方式实现定时,分别控制红绿灯的状态翻转。

定时器 1 自由运行模式,8 分频;定时器 3 自由运行,128 分频。定时器 1 为16 位定时器,在自由运行模式下,从 0x0000 到 0xFFFF 反复计数;定时器 3 为 8位定时器,在自由运行模式下,从 0x00 到 0xFF 反复计数。当到达计时值时,定时器会产生中断,中断函数就是处理相应定时器产生的中断。

三、实验环境

硬件:鼎轩 WSN 实验箱(汇聚网关、烧录线) ,PC 机;

软件:IAR 软件。

四、实验步骤

CC2530 芯片包含四个定时器(Timer1、Timer2、Timer3、Timer4)和一个休 眠定时器(Sleep Timer) 。

Timer1 是 16 位的定时器,支持典型的定时/计数功能以及 PWM 功能,该定时

器共有三个捕捉/比较通道,每个通道使用一个单独的 I/O 引脚。Timer1 的时钟频率是由系统时钟分频得到,首先由寄存器中的 CLKON.TICKSPD 分频,系统时钟是32MHz的情况下, CLKON.TICKSPD可以将该时钟频率分频到32MHz (TICKSPD为 000) 、16MHz(TICKSPD 为 001) 、 8MHz (TICKSPD 为 010) 、 4MHz(TICKSPD为 011) 、 2MHz (TICKSPD 为 100) 、 1MHz (TICKSPD 为 101) 、 0.5MHz (TICKSPD为 110) 、 0.25MHz (TICKSPD 为 111) ; 分频后的时钟频率可以被 T1CTL.DIV 分频,分频数为 1、8、32、128。因此,在 32MHz 的系统频率下,Timer1 的最小时钟频率为 1953.125Hz,最大时钟频率为 32MHz。

Timer2 主要用于为 802.15.4 标准中的 CSMA/CA 算法提供定时。 该定时器即使在节点处于低功耗状态下仍然运行。

Timer3 和 Timer4 是两个 8 位的定时器,主要用于提供定时/计数功能。 Sleep Timer 主要将节点从超低功耗工作状态唤醒。 本实验用到定时器 1 和定时器 3,当定时器到达计数值时,产生一处中断,在中断处理函数里面进行相应处理。

与定时器 1 相关的控制寄存器有:

T1CTL (0xE4)–定时器 1 的控制和状态

T1STAT (0xAF) –定时器 1 状态

1)打开鼎轩 WSN 实验箱,检查实验箱设备,确保实验箱设备完整、连接无误后,连接电源线,打开电源开关;

2)用烧录线连接汇聚网关上的烧录接口与 PC 机 USB 接口;

3)双击打开目录(/cc2530-simple-demo/T1T3_interrupt)下的工程图标T1T3_interrupt.eww 打开工程;

4)点击 IAR 中的图标按钮 编译程序; 5)完成编译后若没有错误信息,将实验箱节点编程开关上汇聚网关开关拨上去,点击调试并下载按钮 将程序下载到汇聚网关上; 6)实验现象为红绿灯的状态定时翻转。

7)修改实验代码,用定时器 4 实现红灯的状态定时翻转。 程序代码

程序员文件为/cc2530-simple-demo/T1T3_interrupt/T1T3_interrupt.c. /******************************** 初始化 LED 灯

*********************************/ void Init_Led(void)

{

P1DIR |= 0X0C; //P1_2,P1_3 定义为输出 RLED = 1;

GLED = 1; //点亮红灯和绿灯 }

/******************************** 初始化定时器 1

*********************************/ void InitT1() {

T1CTL = 0x05; //8 分频,自由运行,从 0x0000 到 0xFFFF 反复// 计数

IEN1 |= 0X02; //开定时器 1 中断 }

/******************************** 初始化定时器 3

*********************************/ void InitT3() {

T3CTL = 0xF8; //128 分频,开溢出中断,启动定时器 IEN1 |= 0X08; //开定时器 3 中断 }

/***************************************** ******************主函数****************** ******************************************/ void main(void) {

Init_Led(); //初始化 LED 灯 InitT1(); //初始化定时器 1 InitT3(); //初始化定时器 3 EA = 1; //使能全局中断 }

/****************************** 定时器 1 中断处理函数

*******************************/ #pragma vector=T1_VECTOR

__interrupt void T1_IRQ(void) {

EA = 0;

if(T1STAT & 0x20) //判断是否是定时器 1 产生的中断 {

if(++count >= 50) {

count = 0;

RLED = !RLED; //RLED 闪烁 }

IRCON &= ~0x02; //清中断标志 }

EA = 1; }

/****************************** 定时器 3 中断处理函数

*******************************/ #pragma vector=T3_VECTOR

__interrupt void T3_IRQ(void) {

EA = 0;

if(TIMIF & 0x01) //判断是否是定时器 3 产生的中断 {

if(++count2>=1000) {

count2=0;

GLED = !GLED; //RLED 闪烁 }

T3IF=0; //清中断标志 }

EA = 1; }

实验总结

该实验完成了对 CC2530 芯片的定时器的使用,通过 LED 来表现定时器的工作过程。在这个实验中用的定时器的精度为毫秒。在这个实验中只使用了定时器 1 和定时器 3,我们可以在课后自己动手尝试使用其它的定时器。

实验三 CC2530继电器实验

一、实验目的

掌握 CC2530 芯片 GPIO 引脚的控制方式,并且掌握继电器的工作方式。

二、实验内容

利用 timer1 定时产生中断,在中断处理中翻转 P2.0 口的状态,实验继电器状态的翻转。

三、实验环境

硬件:鼎轩 WSN 实验箱(汇聚网关、继电器模块、烧录线) ,PC 机; 软件:IAR 软件。

四、实验步骤

继电器(英文名称:relay)是一种电控制器件,是当输入量(激励量)的 变化达到规定要求时, 在电气输出电路中使被控量发生预定的阶跃变化的一种电器。它具有控制系统(又称输入回路)和被控制系统(又称输出回路)之间的互动关系。 通常应用于自动化的控制电路中, 它实际上是用小电流去控制大电流运作的一种“自动开关” 。故在电路中起着自动调节、安全保护、转换电路等作用。

继电器分很多类型,本实验使用的是信号继电器,针对我们的试验箱,继电 器与 P2.0GPIO 口相接,P2.0 口的电平变化会是继电器“开关”发生变化。 实验步骤

1)打开鼎轩 WSN 实验箱,检查实验箱设备,确保实验箱设备完整、连接 无误后,连接电源线,打开电源开关;

2)用烧录线连接汇聚网关上的烧录接口与电脑 USB 接口;

3)打开 (\\CC2530_simple_demo\\cc2530-simple-demo\\Relay)下的工程图标 Relay.eww 打开工程;

4)点击 IAR 中的图标按钮 编译程序;

5)完成编译后若没有错误信息,将实验箱节点编程开关上汇聚网关开关拨 上去,点击调试并下载按钮 将程序下载到汇聚网关上;

6)点击运行程序,可以看到继电器及上面的灯每隔 5 秒变换一次。 程序代码

程序源文件路径为/cc2530-simple-demo/Relay/Relay.c

实验总结

该实验使同学们熟悉了继电器的工作方式与使用方法,为以后的综合实验打下了基础。

实验四:CC2530 串口收发数据实验

一、实验目的

熟悉并掌握 CC2530 芯片串口发送和接收数据的操作,为今后的综合实验打下基础。

二、实验内容

使串口将接收的数据再发送。

三、实验环境

硬件:鼎轩 WSN 实验箱(汇聚网关、烧录线、平行串口线) ,PC 机;

软件:IAR 软件,串口助手。

四、实验步骤

1)打开鼎轩 WSN 实验箱,检查实验箱设备,确保实验箱设备完整、连接无 误后,连接电源线,打开电源开关;

2)用烧录线连接汇聚网关上的烧录接口与电脑 USB 接口;

3)双击打开目录(/cc2530-simple-demo/ USART_send_receive)下的工程图标USART_SR.eww 打开工程;

4)点击 IAR 中的图标按钮编译程序; 5)完成编译后若没有错误信息,将实验箱节点编程开关上汇聚网关开关拨上去,点击调试并下载按钮 将程序下载到汇聚网关上;

6)用串口线连接汇聚网关上的数据输出口和 PC 机 USB 接口, 打开串口助手,正确选择串口号(视具体电脑而定) 、波特率(9600) ,其他配置如下图都不更改。

7)在串口助手上字符串输入框内,输入需要传输的内容,点击发送按钮,可 以看到字符串经串口传送给汇聚网关,然后又由串口打印输出,输出内容如下图:

8)修改实验代码,实现输入字符 1,红灯亮,输入字符 2,红灯灭。

实验总结

该实验完成串口的基本通讯。在串口通讯中一般有两种方式来接受数据,一种是查询法、一种是中断法。查询法就是要串口一致处于等待状态,看串口上是不是有数据,一旦数据接收完毕,就开始对接收的数据进行相应的操作。这个方法需要让程序一致等待串口,所以这种方法效率还是比较低的。中断法师运用串口的中断服务子程序来完成的,如果串口上有数据的话,那么会调用中断向量,中断向量把程序指针指到相应的中断服务服务程序上。在中断服务程序完成之后,程序只能还会跳转到中断之前的地址。这个方法的效率比较高,但是从稳定性上面讲,这种方法不如查询法。本实验用的是中断法。

实验五 CC2530 DMA 实验

一、实验目的

透过本实验的学习,使使用者熟悉 CC2530 芯片的 DMA 传输功能相关暂存 器的配置及 其使用方法。

二、实验内容

用CC2530 芯片内 DMA 控制器将一字符串从源位址转移到目标位址。

三、实验环境

硬件:鼎轩 WSN 实验箱(汇聚网关、烧录线、平行串口线) ,PC 机; 软件:IAR 软件,串口助手。

四、实验步骤 1. DMA 简介

直接存取访问(DMA)控制器可以用来减轻 8051CPU 内核传送数据操作的负担,从而实现在高效利用电源的条件下的高性能。只需要 CPU 极少的干预,DMA控制器就可以将数据从诸如 ADC 或 RF 收发器的外设单元传送到存储器。DMA控制器协调所有的 DMA 传送,确保 DMA 请求和 CPU 存储器访问之间按照优先等级协调、合理地进行。DMA 控制器含有若干可编程的 DMA 通道,用来实现存储器-存储器的数据传送。 DMA 控制器控制整个 XDATA 存储空间的数据传送。 由于大多数 SFR 寄存器映射到 DMA 存储器空间,这些灵活的 DMA 通道的操作能够以创新的方式减轻 CPU 的负担,例如,从存储器传送数据到

USART,或定期在ADC 和存储器之间传送数据样本,等等。使用 DMA 还可以保持 CPU 在低功耗模式下与外设单元之间传送数据,不需要唤醒,这就降低了整个系统的功耗。

DMA 控制器的主要功能如下: (1) 5 个独立的 DMA 通道;

(2) 3 个可以配置的 DMA 通道优先级; (3) 32 个可以配置的传送触发事件; (4) 源地址和目标地址的独立控制;

(5) 单独传送、数据块传送和重复传送模式; (6) 支持传输数据的长域域,设置可变传输长度; (7) 既可以工作在字模式,又可以工作在字节模式。 2.DMA 参数配置

DMA 控制器的配置需要由使用者软件来完成。在一个 DMA 通道可被使用之 前必须要 配置一些参数。DMA 控制器的 5 个通道的行为都与下列配置参数有 关:

3. 源地址

DMA 通道从该位址开始读取资料。该位址是 XDATA 存储器空间中的位址,可以具体 映射到下面几种存储器或暂存器:

SRAM 存储器(映射位址:0x0000 ~ SRAM_SIZE-1) ,容量为 8KB 可选的 FLASH 存储器 BANK(映射位址, :XBANK(0x8000 ~ 0xFFFF) ) ,容量为 32KB XREG(映射位址:0x6000 ~ 0x63FF) ,容量为 1KB 可被映射到 XDATA存

储器空间的 SFR(映射位址:0x7080 ~ 0x70FF) ,容量为 128Byte 4. 目标位址

DMA 通道从该位址开始写入资料。该位址是 XDATA 存储器空间中的位址, 可以具体 映射到下面几种存储器或暂存器:

SRAM 存储器(映射位址:0x0000 ~ SRAM_SIZE-1) ,容量为 8KB 可选的 FLASH存储器BANK (映射位址: XBANK (0x8000~ 0xFFFF) ) , 容量为32KB XREG(映射位址:0x6000 ~ 0x63FF) ,容量为 1KB,可被映射到 XDATA 存储器空间的 SFR(映射位址:0x7080 ~ 0x70FF) ,容量为 128Byte。 5. 字节传输或字传输

用于配置 DMA 通道所完成的传输是 8 位元(字节)还是 16 位元(字) 。 6. M8

该参数用于配置采用 7 位元长还是 8 位元长的字节来传输资料。此参数只适

用于字节传输。

7. 源位址和目标位址增量

当 DMA 通道进入工作状态或重新进入工作状态时, 源位址和目标位址被转送到内部位 址指针。该内部位址指标可以有下列 4 种增量:

增量为 0:每次传输之后该内部位址指标将保持不变。 增量为 1:每次传输之 后该内部位址指针将加 1。 增量为 2:每次传输之后该内部位址指针将加 2。 减量为 1:每次传输之后该内部位址指针将减 1。在位元组模式,1 个计数等于 1 个位元组;在字模式下,1 个计数等于 2 个位元组。 8. 传输长度

DMA 传输的字节数或字数。当到达该值时,DMA 控制器重新使 DMA 通道 进入工作状态或解除 DMA 通道的工作状态,并且可以产生中断请求。

可以看出,使用该参数后,每次 DMA 传输的字节数或字数就由该值决定,这 是一个固定长度。如果需要每次 DMA 传输的字节数或字数是可变的,需要用到 下面介绍的配置参数。 9. 可变长度( (VLEN )

DMA 通道可以利用源资料中的第一个位元组或字 (对于字, 使用[12:0]位元)作为传输长度,这样就允许了可变长度传输。有 4 种可选的可变长度传输模式(为了便于描述,我们假设传输长度参数的值为 LEN,源资料中的第一个位元组/字所指示的传输长度为 S) :

10. 传输模式

传输模式用于选择 DMA 通道传输资料的模式。共有四种传送模式:

实验步骤

1)打开鼎轩 WSN 实验箱,检查实验箱设备,确保实验箱设备完整、连接 无误后,连接电源线,打开电源开关;

2)用烧录线连接汇聚网关上的烧录接口与电脑 USB 接口;

3)双击打开目录(/cc2530-simple-demo/ DMA_Test )下的工程图标 dmatest.eww 打开工程;

4)点击 IAR 中的图标按钮编译程序;

5)完成编译后若没有错误信息,将实验箱节点编程开关上汇聚网关开关拨 上去,点击调试并下载按钮将程序下载到汇聚网关上;

6)用串口线连接汇聚网关上的数据输出口和 PC 机 USB 接口,打开串口助 手,正确选择串口号(视具体电脑而定) 、波特率(9600),其他配置如下图都不更改。打开串口,可以看到输出的结果,如下图:

7 ) 修改实验代码,使用串口接收事件作为触发源触发 DMA 传输。 程序代码

程 序 源 文 件 路 径 为 /cc2530-simple-demo/ DMA_Test/dmatest.c 实验总结

DMA 传输可以自启动,也可以由触发源启动,若要触发源启动,只需设置 dmaConfig.TRIG

为对应的触发事件号码就可以了,数据手册有详细的对照表。

实验六 CC2530 Flash读写实验

一、实验目的

掌握 CC2530 芯片 Flash 的读写操作,同时为后面的综合实验做准备。

二、实验内容

使用 DMA 写 Flash, 将源缓冲区的数据使用 DMA 写到 Flash 的地址 0x01000处,然后读取到目的缓冲区中,使用串口查看。

三、实验环境

硬件:鼎轩 WSN 实验箱(汇聚网关、烧录线、平行串口线) ,PC 机; 软件:IAR 软件,串口助手。

四、实验步骤

1)打开鼎轩 WSN 实验箱,检查实验箱设备,确保实验箱设备完整、连接 无误后,连接电源线,打开电源开关;

2)用烧录线连接汇聚网关上的烧录接口与电脑 USB 接口;

3)点击目录(\\CC2530_simple_demo\\cc2530-simple-demo\\Flash_DMA_Write) 下的工程图标 Flash_DMA_Write.eww 打开工程;

4)点击 IAR 中的图标按钮 编译程序;

5)完成编译后若没有错误信息,将实验箱节点编程开关上汇聚网关开关拨 上去,点击调试并下载按钮 将程序下载到汇聚网关上;

6)用串口线连接汇聚网关上的数据输出口和 PC 机 USB 接口,打开串口助 手,正确选择串口号(视具体电脑而定) 、波特率(9600) ,其他配置如下图都不更改。打开串口,可以看到输出的结果,如下图:

7 ) 改变写入的地址,或是写入的数据,重新试验,深入理解程序中的读写函数。

程序代码

程序源文件路径为/cc2530-simple-demo/ DMA_Test/ Flash_DMA

验总结

对 Flash 进行写的时候, 一定要先对指定的地址进行擦除工作, 否则对 Flash写会写失败,本实验简单的演示了 Flash 的基本操作读和写,对于 Flash 而言,掌握这些就可以了,接下来的综合实验中存储路由表会用到 Flash 的读写。

实验七 CC 2530看门狗实验

一、实验目的

有些稳定性要求高的应用中, 需要使用看门狗 (Watchdog) 机制来重启系统。本实验主要介绍看门狗看门狗模式的使用方法及作用。

CC250 芯片中已集成看门狗硬件模块,无需插入扩展板。

二、实验内容

利用看门狗重启系统,实现 LED 的闪烁。

三、实验环境

硬件:鼎轩 WSN 实验箱(汇聚网关、烧录线) ,PC 机; 软件:IAR 软件。

四、实验步骤

1)打开鼎轩 WSN 实验箱,检查实验箱设备,确保实验箱设备完整、连接无误后,连接电源线,打开电源开关;

2)用烧录线连接汇聚网关上的烧录接口与电脑 USB 接口;

3)点击(\\CC2530_simple_demo\\cc2530-simple-demo\\WATCHDOG)目录下的工程图标 watchdog.eww 打开工程;

4)点击 IAR 中的图标按钮 编译程序; 5)完成编译后若没有错误信息,将实验箱节点编程开关上汇聚网关开关拨上去,点击调试并下载按钮 将程序下载到汇聚网关上;

6)调试运行程序,可以看到,红绿灯闪烁,这是看门狗重启系统的效果。 7)加入喂狗函数,查看实验现象,验证看门狗的看门狗模式的工作原理,学生还可以配置 WDCTL 使看门狗工作与定时器模式。 程序代码

程序源文件路径为/cc2530-simple-demo/ DMA_Test/ watchdog.c

实验总结

本实验验证了看门狗重启系统的效果,while 循环中, 注释掉的是喂狗函数,如果即时喂狗,系统便不会重启,小灯也就不会闪烁。

因篇幅问题不能全部显示,请点此查看更多更全内容