实验1CC2530LED灯闪烁实验.docx
- 文档编号:27218938
- 上传时间:2023-06-28
- 格式:DOCX
- 页数:26
- 大小:1.21MB
实验1CC2530LED灯闪烁实验.docx
《实验1CC2530LED灯闪烁实验.docx》由会员分享,可在线阅读,更多相关《实验1CC2530LED灯闪烁实验.docx(26页珍藏版)》请在冰豆网上搜索。
实验1CC2530LED灯闪烁实验
计算机科学与技术学院
实验报告
课程名称:
无线传感器网络原理与应用
实验一CC2530LED灯闪烁实验
一、实验目的
熟悉鼎轩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
#defineuintunsignedint
#defineucharunsignedchar
//定义控制灯的端口
#defineRLEDP1_2//定义红灯为P1_2口控制
#defineGLEDP1_3//定义绿灯为P1_3口控制
//LocalFunctions
voidDelay(uint);//延时函数
voidInitial(void);//初始化P1口
/****************************
//延时
*****************************/
voidDelay(uintn)
{
uinttt;
for(tt=0;tt for(tt=0;tt for(tt=0;tt for(tt=0;tt for(tt=0;tt } /**************************** //初始化程序 *****************************/ voidInitial(void) { P1DIR|=0x0C;//P1_2、P1_3定义为输出 RLED=0; GLED=1; } /*************************** //主函数 ***************************/ voidmain(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)和一个休 眠定时器(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状态 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灯 *********************************/ voidInit_Led(void) { P1DIR|=0X0C;//P1_2,P1_3定义为输出 RLED=1; GLED=1;//点亮红灯和绿灯 } /******************************** 初始化定时器1 *********************************/ voidInitT1() { T1CTL=0x05;//8分频,自由运行,从0x0000到0xFFFF反复// 计数 IEN1|=0X02;//开定时器1中断 } /******************************** 初始化定时器3 *********************************/ voidInitT3() { T3CTL=0xF8;//128分频,开溢出中断,启动定时器 IEN1|=0X08;//开定时器3中断 } /***************************************** ******************主函数****************** ******************************************/ voidmain(void) { 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=! RLED;//RLED闪烁 } IRCON&=~0x02;//清中断标志 } EA=1; } /****************************** 定时器3中断处理函数 *******************************/ #pragmavector=T3_VECTOR __interruptvoidT3_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,红灯灭。 实验总结 该实验完成串口的基本通讯。 在串口通讯中一般有两种方式来接受数据,一种是查询法、一种是中断法。 查询法就是要串口一致处于等待状态,看串口上是不是有数据,一旦数据接收完毕,就开始对接收的数据进行相应的操作。 这个方法需要让程序一致等待串口,所以这种方法效率还是比较低的。 中断法师运用串口的中断服务子程序来完成的,如果串口上有数据的话,那么会调用中断向量,中断向量把程序指针指到相应的中断服务服务程序上。 在中断服务程序完成之后,程序只能还会跳转到中断之前的地址。 这个方法的效率比较高,但是从稳定性上面讲,这种方法不如查询法。 本实验用的是中断法。 实验五CC2530DMA实验 一、实验目的 透过本实验的学习,使使用者熟悉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)),容量为32KBXREG(映射位址: 0x6000~0x63FF),容量为1KB可被映射到XDATA存储器空间的SFR(映射位址: 0x7080~0x70FF),容量为128Byte 4.目标位址 DMA通道从该位址开始写入资料。 该位址是XDATA存储器空间中的位址, 可以具体映射到下面几种存储器或暂存器: SRAM存储器(映射位址: 0x0000~SRAM_SIZE-1),容量为8KB可选的 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通道传输资料的模式。 共有四种传送模式: 实验步骤 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 为对应的触发事件就可以了,数据手册有详细的对照表。 实验六CC2530Flash读写实验 一、实验目的 掌握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),其他配置如下图都不更改。 打开串口,可以看到输出
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 CC2530LED 闪烁