实验1CC2530 LED 灯闪烁实验Word文档格式.docx

上传人:b****7 文档编号:22936966 上传时间:2023-02-06 格式:DOCX 页数:26 大小:1.21MB
下载 相关 举报
实验1CC2530 LED 灯闪烁实验Word文档格式.docx_第1页
第1页 / 共26页
实验1CC2530 LED 灯闪烁实验Word文档格式.docx_第2页
第2页 / 共26页
实验1CC2530 LED 灯闪烁实验Word文档格式.docx_第3页
第3页 / 共26页
实验1CC2530 LED 灯闪烁实验Word文档格式.docx_第4页
第4页 / 共26页
实验1CC2530 LED 灯闪烁实验Word文档格式.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

实验1CC2530 LED 灯闪烁实验Word文档格式.docx

《实验1CC2530 LED 灯闪烁实验Word文档格式.docx》由会员分享,可在线阅读,更多相关《实验1CC2530 LED 灯闪烁实验Word文档格式.docx(26页珍藏版)》请在冰豆网上搜索。

实验1CC2530 LED 灯闪烁实验Word文档格式.docx

打开工程;

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

6)完成编译后若没有错误信息,将实验箱节点编程开关上汇聚网关开关拨上

去,点击调试并下载按钮将程序下载到汇聚网关上;

7)运行程序,可以观察到红灯和绿灯交替闪烁。

8)修改程序代码,实现红、蓝、绿三个灯一起闪烁。

程序代码:

程序代码源文件为/cc2530-simple-demo/LED_BLINK/main.c,

#include<

ioCC2530.h>

#defineuintunsignedint

#defineucharunsignedchar

//定义控制灯的端口

#defineRLEDP1_2//定义红灯为P1_2口控制

#defineGLEDP1_3//定义绿灯为P1_3口控制

//LocalFunctions

voidDelay(uint);

//延时函数

voidInitial(void);

//初始化P1口

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

//延时

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

voidDelay(uintn)

{

uinttt;

for(tt=0;

tt<

n;

tt++);

}

//初始化程序

voidInitial(void)

P1DIR|=0x0C;

//P1_2、P1_3定义为输出

RLED=0;

GLED=1;

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

//主函数

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

voidmain(void)

Initial();

//调用初始化函数

while

(1)

GLED=!

GLED;

RLED=!

RLED;

Delay(50000);

该语句定义P1口的P1.2和P1.3方向为输出;

红灯初始化低电平,程序开始运行时熄灭;

绿灯初始化高电平,程序开始运行时点亮;

这两个语句让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反复计数。

当到达计时值时,定时器会产生中断,中断函数就是处理相应定时器产生的中断。

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

眠定时器(SleepTimer)。

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位的定时器,主要用于提供定时/计数功能。

SleepTimer主要将节点从超低功耗工作状态唤醒。

本实验用到定时器1和定时器3,当定时器到达计数值时,产生一处中断,在中断处理函数里面进行相应处理。

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

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

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

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灯

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

voidInit_Led(void)

P1DIR|=0X0C;

//P1_2,P1_3定义为输出

RLED=1;

//点亮红灯和绿灯

初始化定时器1

voidInitT1()

T1CTL=0x05;

//8分频,自由运行,从0x0000到0xFFFF反复//

计数

IEN1|=0X02;

//开定时器1中断

初始化定时器3

voidInitT3()

T3CTL=0xF8;

//128分频,开溢出中断,启动定时器

IEN1|=0X08;

//开定时器3中断

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

******************主函数******************

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

Init_Led();

//初始化LED灯

InitT1();

//初始化定时器1

InitT3();

//初始化定时器3

EA=1;

//使能全局中断

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

定时器1中断处理函数

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

#pragmavector=T1_VECTOR

__interruptvoidT1_IRQ(void)

EA=0;

if(T1STAT&

0x20)//判断是否是定时器1产生的中断

if(++count>

=50)

count=0;

//RLED闪烁

IRCON&

=~0x02;

//清中断标志

定时器3中断处理函数

#pragmavector=T3_VECTOR

__interruptvoidT3_IRQ(void)

if(TIMIF&

0x01)//判断是否是定时器3产生的中断

if(++count2>

=1000)

count2=0;

T3IF=0;

该实验完成了对CC2530芯片的定时器的使用,通过LED来表现定时器的工作过程。

在这个实验中用的定时器的精度为毫秒。

在这个实验中只使用了定时器1和定时器3,我们可以在课后自己动手尝试使用其它的定时器。

实验三CC2530继电器实验

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

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

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

继电器(英文名称:

relay)是一种电控制器件,是当输入量(激励量)的

变化达到规定要求时,在电气输出电路中使被控量发生预定的阶跃变化的一种电器。

它具有控制系统(又称输入回路)和被控制系统(又称输出回路)之间的互动关系。

通常应用于自动化的控制电路中,它实际上是用小电流去控制大电流运作的一种“自动开关”。

故在电路中起着自动调节、安全保护、转换电路等作用。

继电器分很多类型,本实验使用的是信号继电器,针对我们的试验箱,继电

器与P2.0GPIO口相接,P2.0口的电平变化会是继电器“开关”发生变化。

实验步骤

1)打开鼎轩WSN实验箱,检查实验箱设备,确保实验箱设备完整、连接

无误后,连接电源线,打开电源开关;

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

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

Relay.eww打开工程;

5)完成编译后若没有错误信息,将实验箱节点编程开关上汇聚网关开关拨

上去,点击调试并下载按钮将程序下载到汇聚网关上;

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

程序代码

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

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

实验四:

CC2530串口收发数据实验

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

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

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

IAR软件,串口助手。

1)打开鼎轩WSN实验箱,检查实验箱设备,确保实验箱设备完整、连接无

误后,连接电源线,打开电源开关;

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

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

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

7)在串口助手上字符串输入框内,输入需要传输的内容,点击发送按钮,可

以看到字符串经串口传送给汇聚网关,然后又由串口打印输出,输出内容如下图:

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

该实验完成串口的基本通讯。

在串口通讯中一般有两种方式来接受数据,一种是查询法、一种是中断法。

查询法就是要串口一致处于等待状态,看串口上是不是有数据,一旦数据接收完毕,就开始对接收的数据进行相应的操作。

这个方法需要让程序一致等待串口,所以这种方法效率还是比较低的。

中断法师运用串口的中断服务子程序来完成的,如果串口上有数据的话,那么会调用中断向量,中断向量把程序指针指到相应的中断服务服务程序上。

在中断服务程序完成之后,程序只能还会跳转到中断之前的地址。

这个方法的效率比较高,但是从稳定性上面讲,这种方法不如查询法。

本实验用的是中断法。

实验五CC2530DMA实验

透过本实验的学习,使使用者熟悉CC2530芯片的DMA传输功能相关暂存

器的配置及其使用方法。

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

硬件:

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)),容量为32KBXREG(映射位址:

0x6000~0x63FF),容量为1KB可被映射到XDATA存储器空间的SFR(映射位址:

0x7080~0x70FF),容量为128Byte

4.目标位址

DMA通道从该位址开始写入资料。

该位址是XDATA存储器空间中的位址,

可以具体映射到下面几种存储器或暂存器:

FLASH存储器BANK(映射位址:

XBANK(0x8000~0xFFFF)),容量为32KBXREG(映射位址:

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通道传输资料的模式。

共有四种传送模式:

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

上去,点击调试并下载按钮将程序下载到汇聚网关上;

6)用串口线连接汇聚网关上的数据输出口和PC机USB接口,打开串口助

手,正确选择串口号(视具体电脑而定)、波特率(9600),其他配置如下图都不更改。

打开串口,可以看到输出的结果,如下图:

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

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

DMA_Test/dmatest.c

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

dmaConfig.TRIG

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

实验六CC2530Flash读写实验

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

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

1)打开鼎轩WSN实验箱,检查实验箱设备,确保实验箱设备完整、连接

3)点击目录(\CC2530_simple_demo\cc2530-simple-demo\Flash_DMA_Write)

下的工程图标Flash_DMA_Write.eww打开工程;

手,正确选择串口号(视具体电脑而定)、波特率(9600),其他配置如

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 成人教育 > 远程网络教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1