交换原理与通信技术-实验报告参考吴

时间:2020-10-29 09:24:21 手机站 来源:网友投稿

重庆交通大学

本科实验报告

课程名称: 交换原理与通信网技术

专业: 通信工程

年级: 2010级

学号:

姓名:

学院: 信息科学与工程学院

指导教师: 许登元

职称: 副教授

成绩:

2013年6月

信息学院实验报告

实验项目名称

一、 实验目的

1、 学习使用GAINSJ开发套件硬件资源的 DIO 口基本配置和中断相关知识,学习使用回调函数和 队列函数。

2、 学习使用GAINSJ开发套件串口的基本设置和应用

3、 学习使用 GAINSJ开发套件如何基于 IEEE802.15.4协议栈和Jennie集成外设 API组网并通 信。学习星型网络的建立和低功耗模式的设置应用,掌握使用按键对灯进行无线控制。

二、 实验原理

本综合实验涉及到三个主要部分:以下简述各部分的实验原理 两种中断:

队列函数中断处理机制:

Application Queue API只能与IEEE 802.15.4 stack 一起使用,它提供了应用、协议栈及硬件驱动等基于队列的 接口。该API用来处理所有来自IEEE 802.15.4 MAC子层和片上外设的中断。

回调函数中断处理机制:

回调函数由用户自己定义传递给外设 API。当中断发生时,这些函数被底层软件直接调用。由于回调函数运

行在中断前后,它们必须迅速返回才能不延迟程序执行时间,与之相比,队列函数有时候更加适合,因为它 的中断处理不是发生在中断前后。

两种中断处理方式的不同点:

队列函数:函数u32AppQApil ni t() 必须被调用,用来初始化事件队列应用接口(在源代码

Interrupts1.c 里所示)。

回调函数:函数u32AppApilnit() 必须被调用,不使用的参数可以设成NULL (如源代码

Interrupts2.c 所示)。这个调用确保中断矢量表的初始化正确,了解更多的参数设置参看 802.15.4 Stack

API Referenee Manual (JN-RM-2002)。回调函数需要被寄存,当中断发生时调用此函数,寄存一个回调函 数可以通过指向作为寄存器函数参数的中断处理函数的指针来完成,寄存中断处理函数可 以在 In terrupts2.c 里说明:

vAHI_SysCtrlRegisterCallback(vDIOI nterruptCallback);

这里指向 vDIOInterruptCallback。的指针作为参数,函数 vDIOInterruptCallback。负责中断处理,必须 与PR_HWINT_APPCALLBACK 类型一致。也就是不能有返回值,必须有两个 uint32参数,因此

vDIOI nterruptCallback()定义如下:

PRIVATE void vDIOI nterruptCallback (ui nt32 u32Device, ui nt32 u32ItemBitmap) ;

使用masks确定中断源:一旦中断发生,中断源通过使用 masks JN5121-Timers对照协议栈提供的信

息来决定,如产生中断的设备 ID号(u32Device )和一个消息位(u32ItemBitmap),范围值参见 Integrated

Peripherals API Referenee Manual (JN-RM-2001)。例子 Interrupts1.c 里的 vProcessIncomingHwEvent()函数 和 Interrupts2.c 里的 vDIOInterruptCallback。函数都有说明。

if ( (u32Device == E_AHI_DEVICE_SYSCTRL) &&

(u32ItemBitm ap & E_AHI_DIO9_INT))

上面代码判断中断是否来自 DIO9,系统控制器处理由比较器,唤醒定时器和 DIO产生的中断。因

此,通过对比消息位与 DIO9 mask来确定中断源。一旦源决定,这个中断可以被正确的处理。

初始化代码相同处:

引脚方向设置,DIO9与SW1连接作为输入,DIO14与LED1连接作为输出:

vAHI_DioSetDirection(E_AHI_DIO9_INT, 0);

vAHI_DioSetDirectio n(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_DioI nterruptEdge(O,E_AHI_DIO9_INT);

中断使能:

vAHI_DioI nterruptE nable(E_AHI_DIO9_INT, 0);

使用GIANSJ开发套件的三个传感器板实现基于 IEEE802.15.4的无线灯控应用实验原理:

实验基于1个Coordinator节点和2个End device节点组成星型网络。作为 Coordinator节点的LEDs D1-D2 拟灯,作为End device节点的SW2作为灯开关。每块 End device节点的SW2按下去后,触发控制灯节点的 亮和灭,如图3-20所示。

本系统没有定期请求数据发送,因此不使用定期信标。这样 End device大部分时间就能处于低功耗睡

眠模式。Coordinator模拟灯,需永久供电,不断倾听来自 End device的数据。当End device节点开关按下

后,控制其从睡眠模式唤醒并在其重新回到睡眠前发射数据包给 Coordinator。Coordinator接收到数据包

后,触发灯的亮灭。

在无信标使能星型网络里, Coordinator选择完PAN ID和短地址后发起网络。一旦网络发起,协调器

等待设备加入,每个设备加入网络后被分配一个短地址,用来后面的通信。如果至少有一个设备加入网 络,协调器可以起到灯的作用,当它等待接收到从设备发出的数据包后触发灯的亮灭。

设备在所有信道上发射信标请求,进行信道扫描以发现协调器。如果协调器运行正常,当它所在的信 道接收到请求后,产生信标。协调器接收到信标后,设备与协调器结合并加入发现的网络。

Sensor Board

Sensor Board

、使用仪器、材料

硬件:

硬件:

PC机

GAINSJ节点

软件:code::blocksJennie Flash Programmer四、实验步骤(1) 启动 code blocks,在 C:\Jennic'cygwin'jennic\developer 路径下的"Test Diolnterrupts ” 文件夹建立一 个工程

软件:

code::blocks

Jennie Flash Programmer

四、实验步骤

(1) 启动 code blocks,在 C:\Jennic'cygwin'jennic\developer 路径下的"Test Diolnterrupts ” 文件夹建立一 个工程 Diolnterrupts1 。

(2) 在新建工程中"JN51xx_15_4-main.c ”文件里编辑代码或者直接将" JN51xx_15_4-main.e ”文件从 工程中去掉,而在工程中加入lnterrupts1.c。添加消息队列处理文件 AppQueueApi.c,右

Source,选择 Add files,其所在目录为C:\ Jennic\cygwin\Jennic\SDK\Common|Source,”,这里选 择的是Release目录。

(3)点击左上角的

(Build )或( Rebuild )进行编译,无误的会有如下提示:

I mJ - -khi-lt: kJi fe- ■ J* K - i 匚 EE匚 佥胃立

H L 3^_0VLldK Be 1 easeXtest ex- . 1■宮L1 dLRe lca= e Vt-est. ba

:m丄士■日星j吃亍pv* -u zmAfv * \ 丄視丫口。丄口丸匸口、弓ucr亠An l MUJB1 cc.c-kn

目标文件生成目录选为“ Release ”,编译工程在JN5139_Build目录的Release文件夹下生成 “ DioInterrupts1.bin ” 文件。

4)重复上面 3步,新建"Diolnterrupts2.cbp ”工程后编译,在 Build目录的 Release文件夹下生成

“ Diolnterrupts2.bin ” 文件。

(5)将串口线连到节点上,打开 Jennie Flash Programmer,给节点上电,下载程序 Diolnterrupts1.bin到

开发板节点。注意:需要烧写程序时,必须在打开" Jenn ic Flash Programmer ”后再给节点上电。

(6)关掉"Jennie Flash Programmer”软件,并重新启动节点,可以观察到节点电源灯亮, LED2暗。按下并松开 SW1,对应的 并松开SW2,可以看到对应的 LED2

LED1 和

LED1变亮,再次按下并松开 SW1,对应的LED1变灭,同样按下 的变化。

(7)重复步骤(5 )、( 6),下载程序 进行控制。

DioInterrupts2.bin到开发板节点。可以用同样的方式使用按键对灯

1)启动 code block,在 C:\Jennic'cygwin'jennic\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.b in 文件。

(4)将串口线连到节点上,打开 Jennie Flash Programmer,

意:需要烧写程序时,必须在打开" Jennie Flash Programmer”后再给节点上电。

给节点上电,下载程序到开发板节点。

(5)关掉"Jennie Flash Programmer”软件,并重新启动节点,可以观察到节点电源灯常亮, SW1闪

烁。打开串口调试助手,波特率选择 19200,在字符串输入框里输入字符或字符串,然后发送,在接受

框里可显示发送的内容。如图 2-13所示:

①启动Code:: Blocks软件,新建一个工程,在默认路径

C:\Je nni c\ctgwi n\Je nn ic\SDK\Applicatio n 下新建一个新建一个工程: Light

添加消息队列处理文件 AppQueueApi.c,右键点击Source Add Files其所在目录为

C:\Jennic'cygwin\Jennic\SDK\Common'Source,选择 Relese模式:

接下来要编写主函数。

编译工程,在工程 Build目录的Release文件夹下生成 Light.bin文件。

将串口线连接到节点上,打开 Jenn ic Flash Programmer软件,给节点上点,下载程序到开发板节

点作为Coordinator。注意:需要烧写程序时,必须在打开 Jennie Flash Programmer软件后再给节点上

电。

重复上述步骤,下载程序 LightSwinch.bin文件到另外两个开发板节点作为 End device。

关掉 Jennie Flash Programmer软件,先给 Coordinator 节点上点,再给 End device 节点上电,开启

后Coordinator的LED1和电源灯同时亮,等待几秒,网络建立起来后 LED2也亮。按下 End device的

SW2,Coordinator 的 LED1 和 LED2 同时亮或灭。

五、实验过程原始记录

六、 讲义思考题解答

1,如何使节点上电时 LED1和LED2都是亮的?

1. 如何改变ticktimer定时时间?

1 .如何实现多个灯开关对灯的控制?

七、 实验结果及分析

推荐访问:实验报告 通信技术 原理 交换 交换原理与通信技术-实验报告参考吴

版权声明 :以上文章中选用的图片文字均来源于网络或用户投稿 ,如果有侵权请立即联系我们 , 我们立即删除 。