您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 工作范文 > 交换原理与通信技术实验报告参考吴
交换原理与通信技术实验报告参考吴交换原理与通信技术-实验报告参考吴重庆交通大学本科实验报告课程名称:交换原理与通信网技术专业:通信工程年级:xxxx级学号:姓名:学院:信息科学与工程学院指导教师:许登元职称:副教授成绩:xxxx年6月信息学院实验报告实验项目名称一、实验目的1、学_使用GAINSJ开发套件硬件资源的DIO口基本配置和中断相关知识,学_使用回调函数和队列函数。2、学_使用GAINSJ开发套件串口的基本设置和应用3、学_使用GAINSJ开发套件如何基于IEEE802.15.4协议栈和Jennie集成外设API组网并通信。学_星型网络的建立和低功耗模式的设置应用,掌握使用按键对灯进行无线控制。二、实验原理本综合实验涉及到三个主要部分:以下简述各部分的实验原理两种中断:队列函数中断处理机制:ApplicationQueueAPI只能与IEEE802.15.4stack一起使用,它提供了应用、协议栈及硬件驱动等基于队列的接口。该API用来处理所有来自IEEE802.15.4MAC子层和片上外设的中断。回调函数中断处理机制:回调函数由用户自己定义传递给外设API。当中断发生时,这些函数被底层软件直接调用。由于回调函数运行在中断前后,它们必须迅速返回才能不延迟程序执行时间,与之相比,队列函数有时候更加适合,因为它的中断处理不是发生在中断前后。两种中断处理方式的不同点:队列函数:函数u32AppQApilnit()必须被调用,用来初始化事件队列应用接口(在源代码Interrupts1.c里所示)。回调函数:函数u32AppApilnit()必须被调用,不使用的参数可以设成NULL(如源代码Interrupts2.c所示)。这个调用确保中断矢量表的初始化正确,了解更多的参数设置参看802.15.4StackAPIRefereneeManual(JN-RM-xxxx)。回调函数需要被寄存,当中断发生时调用此函数,寄存一个回调函数可以通过指向作为寄存器函数参数的中断处理函数的指针来完成,寄存中断处理函数可以在Interrupts2.c里说明:vAHI_SysCtrlRegisterCallback(vDIOInterruptCallback);这里指向vDIOInterruptCallback。的指针作为参数,函数vDIOInterruptCallback。负责中断处理,必须与PR_HWINT_APPCALLBACK类型一致。也就是不能有返回值,必须有两个uint32参数,因此vDIOInterruptCallback()定义如下:PRIVATEvoidvDIOInterruptCallback(uint32u32Device,uint32u32ItemBitmap);使用masks确定中断源:一旦中断发生,中断源通过使用masksJN5121-Timers对照协议栈提供的信息来决定,如产生中断的设备ID号(u32Device)和一个消息位(u32ItemBitmap),范围值参见IntegratedPeripheralsAPIRefereneeManual(JN-RM-xxxx)。例子Interrupts1.c里的vProcessIncomingHwEvent()函数和Interrupts2.c里的vDIOInterruptCallback。函数都有说明。if((u32Device==E_AHI_DEVICE_SYSCTRL)(u32ItemBitmapE_AHI_DIO9_INT))上面代码判断中断是否来自DIO9,系统控制器处理由比较器,唤醒定时器和DIO产生的中断。因此,通过对比消息位与DIO9mask来确定中断源。一旦源决定,这个中断可以被正确的处理。初始化代码相同处:引脚方向设置,DIO9与SW1连接作为输入,DIO14与LED1连接作为输出:vAHI_DioSetDirection(E_AHI_DIO9_INT,0);vAHI_DioSetDirection(0,E_AHI_DIO14_INT);输入和输出初始化设置,输入引脚全都上拉使能,输出引脚DI014设为高,使得LED灯灭。vAHI_DioSetPullup(!E_AHI_DIO14_INT,E_AHI_DI014_INT);vAHI_DioSetOutput(E_AHI_DIO14_INT,0);中断条件设置,即中断采用上升沿还是下降沿触发,这里中断采用下降沿触发:vAHI_DioInterruptEdge(O,E_AHI_DIO9_INT);中断使能:vAHI_DioInterruptEnable(E_AHI_DIO9_INT,0);使用GIANSJ开发套件的三个传感器板实现基于IEEE802.15.4的无线灯控应用实验原理:实验基于1个Coordinator节点和2个Enddevice节点组成星型网络。作为Coordinator节点的LEDsD1-D2拟灯,作为Enddevice节点的SW2作为灯开关。每块Enddevice节点的SW2按下去后,触发控制灯节点的亮和灭,如图3-20所示。本系统没有定期请求数据发送,因此不使用定期信标。这样Enddevice大部分时间就能处于低功耗睡眠模式。Coordinator模拟灯,需永久供电,不断倾听来自Enddevice的数据。当Enddevice节点开关按下后,控制其从睡眠模式唤醒并在其重新回到睡眠前发射数据包给Coordinator。Coordinator接收到数据包后,触发灯的亮灭。在无信标使能星型网络里,Coordinator选择完PANID和短地址后发起网络。一旦网络发起,协调器等待设备加入,每个设备加入网络后被分配一个短地址,用来后面的通信。如果至少有一个设备加入网络,协调器可以起到灯的作用,当它等待接收到从设备发出的数据包后触发灯的亮灭。设备在所有信道上发射信标请求,进行信道扫描以发现协调器。如果协调器运行正常,当它所在的信道接收到请求后,产生信标。协调器接收到信标后,设备与协调器结合并加入发现的网络。SensorBoardSensorBoard、使用仪器、材料硬件:硬件:PC机GAINSJ节点软件:code::blocksJennieFlashProgrammer四、实验步骤(1)启动codeblocks,在C:\Jenniccygwinjennic\developer路径下的TestDiolnterrupts”文件夹建立一个工程软件:code::blocksJennieFlashProgrammer四、实验步骤(1)启动codeblocks,在C:\Jenniccygwinjennic\developer路径下的TestDiolnterrupts”文件夹建立一个工程Diolnterrupts1。(2)在新建工程中JN51xx_15_4-main.c”文件里编辑代码或者直接将JN51xx_15_4-main.e”文件从工程中去掉,而在工程中加入lnterrupts1.c。添加消息队列处理文件AppQueueApi.c,右Source,选择Addfiles,其所在目录为C:\Jennic\cygwin\Jennic\SDK\Common|Source,”,这里选择的是Release目录。(3)点击左上角的(Build)或(Rebuild)进行编译,无误的会有如下提示:ImJ--khi-lt:kJife-■J*K-i匚EE匚佥胃立HL3^_0VLldKBe1easeXtestex-.1■宮L1dLRelca=eVt-est.ba:m丄士■日星j吃亍pv*-uzmAfv*\丄視丫口。丄口丸匸口、弓ucr亠AnlMUJB1cc.c-kn目标文件生成目录选为“Release”,编译工程在JN5139_Build目录的Release文件夹下生成“DioInterrupts1.bin”文件。4)重复上面3步,新建Diolnterrupts2.cbp”工程后编译,在Build目录的Release文件夹下生成“Diolnterrupts2.bin”文件。(5)将串口线连到节点上,打开JennieFlashProgrammer,给节点上电,下载程序Diolnterrupts1.bin到开发板节点。注意:需要烧写程序时,必须在打开JennicFlashProgrammer”后再给节点上电。(6)关掉JennieFlashProgrammer”软件,并重新启动节点,可以观察到节点电源灯亮,LED2暗。按下并松开SW1,对应的并松开SW2,可以看到对应的LED2LED1和LED1变亮,再次按下并松开SW1,对应的LED1变灭,同样按下的变化。(7)重复步骤(5)、(6),下载程序进行控制。DioInterrupts2.bin到开发板节点。可以用同样的方式使用按键对灯1)启动codeblock,在C:\Jenniccygwinjennic\developer路径下的uarttest”文件夹建立一个工程uarttest.cbp”。工程类型选择15.4。(2)删除自动生成的“JN51xx_15_4-main.c”,在“uarttest.cbp”工程中添加文件。.c文件包括AppQueueApi.c、serial.c、serialq.c、uart.c、uarttest.c,.h文件包括config.h、serial.h、serialq.h、uart.h,这些代码都可以在所给代码文件夹中的source文件夹中找到,夹中。然后选择编译完成的目标文件所在地址。添加后如下图所示:把这些文件复制到该工程的Source文件(3)编译工程在JN5121_Build目录的Release文件夹下生成uarttest.bin文件。(4)将串口线连到节点上,打开JennieFlashProgrammer,意:需要烧写程序时,必须在打开JennieFlashProgrammer”后再给节点上电。给节点上电,下载程序到开发板节点。(5)关掉JennieFlashProgrammer”软件,并重新启动节点,可以观察到节点电源灯常亮,SW1闪烁。打开串口调试助手,波特率选择19200,在字符串输入框里输入字符或字符串,然后发送,在接受框里可显示发送的内容。如图2-13所示:①启动Code::Blocks软件,新建一个工程,在默认路径C:\Jennic\ctgwin\Jennic\SDK\Application下新建一个新建一个工程:Light添加消息队列处理文件AppQueueApi.c,右键点击SourceAddFiles其所在目录为C:\Jenniccygwin\Jennic\SDK\CommonSource,选择Relese模式:接下来要编写主函数。编译工程,在工程Build目录的Release文件夹下生成Light.bin文件。将串口线连接到节点上,打开JennicFlashProgrammer软件,给节点上点,下载程序到开发板节点作为Coordinator。注意:需要烧写程序时,必须在打开JennieFlashProgrammer软件后再给节点上电。重复上述步骤,下载程序LightSwinch.bin文件到另外两个开发板节点作为Enddevice。关掉JennieFlashProgrammer软件,先给Coordinator节点上点,再给Enddevice节点上电,开启后Coordinator的LED1和电源灯同时亮,等待几秒,网络建立起来后LED2也亮。按下Enddevice的SW2,Coordinator的LED1和LED2同时亮或灭。五、实验过程原始记录六、讲义思考题解答1,如何使节点上电时LED1和LED2都是亮的?1.如何改变ticktimer定时时间?1.如何实现多个灯开关对灯的控制?七、实验结果及分析
本文标题:交换原理与通信技术实验报告参考吴
链接地址:https://www.777doc.com/doc-7765474 .html