通信新技术综合训练报告.docx

上传人:b****1 文档编号:15068410 上传时间:2023-06-30 格式:DOCX 页数:67 大小:630.11KB
下载 相关 举报
通信新技术综合训练报告.docx_第1页
第1页 / 共67页
通信新技术综合训练报告.docx_第2页
第2页 / 共67页
通信新技术综合训练报告.docx_第3页
第3页 / 共67页
通信新技术综合训练报告.docx_第4页
第4页 / 共67页
通信新技术综合训练报告.docx_第5页
第5页 / 共67页
通信新技术综合训练报告.docx_第6页
第6页 / 共67页
通信新技术综合训练报告.docx_第7页
第7页 / 共67页
通信新技术综合训练报告.docx_第8页
第8页 / 共67页
通信新技术综合训练报告.docx_第9页
第9页 / 共67页
通信新技术综合训练报告.docx_第10页
第10页 / 共67页
通信新技术综合训练报告.docx_第11页
第11页 / 共67页
通信新技术综合训练报告.docx_第12页
第12页 / 共67页
通信新技术综合训练报告.docx_第13页
第13页 / 共67页
通信新技术综合训练报告.docx_第14页
第14页 / 共67页
通信新技术综合训练报告.docx_第15页
第15页 / 共67页
通信新技术综合训练报告.docx_第16页
第16页 / 共67页
通信新技术综合训练报告.docx_第17页
第17页 / 共67页
通信新技术综合训练报告.docx_第18页
第18页 / 共67页
通信新技术综合训练报告.docx_第19页
第19页 / 共67页
通信新技术综合训练报告.docx_第20页
第20页 / 共67页
亲,该文档总共67页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

通信新技术综合训练报告.docx

《通信新技术综合训练报告.docx》由会员分享,可在线阅读,更多相关《通信新技术综合训练报告.docx(67页珍藏版)》请在冰点文库上搜索。

通信新技术综合训练报告.docx

通信新技术综合训练报告

JIANGSUTEACHERSUNIVERSITYOFTECHNOLOGY

通信新技术综合训练报告

学院名称:

电气信息工程学院

专业:

通信工程

班级:

08通信

姓名:

学号:

指导老师:

贾中宁陶为戈宋伟

 

2011年10月

附件ADC及数据采集实验…………………………………………………………33

 

 

实验一Jennic-WSN开发环境

一、实验内容

1.熟悉基于JN5139芯片所设计的WSN开发板及其部件。

2.软件的安装于调试。

3.熟悉常用API接口函数。

二、实验原理

1.基于JN5139芯片所设计的WSN开发板,其部件如下:

U1:

JN5139系列Zigbee模块;

U2:

板载光照度传感器;

U3:

板载温湿度一体传感器;

J3:

外供电(5VDC)接口;

Swith:

供电开关;

J7:

编程与运行状态选择,左跳并给传感器板加电,则进入可编程状态,或者在加电的情况下,按住RESET按钮,左跳J7,然后放开RESET按钮,再右跳J7,也可进入可编程状态,退出可编程状态,只需要按一下RESET按钮即可;

J8:

Flash写保护跳选,编程与运行都跳选到RUN(右跳);

DB9:

RS232编程接口;

UART0:

串口0;

JP6:

模块所有管脚的引出排线(引脚编号如图1-4所示,功能如表1-1所示);

LCD:

液晶接口;

Power:

电源指示灯;

REST:

复位按键;

LED3,LED2,LED1,LED0:

可编程LED,分别对应DIO19、DIO18、DIO17、DIO16;

SW3,SW2,SW1,SW0:

可编程按键,分别对应DIO20、DIO11、DIO10、DIO9;

GND:

地。

2.软件的安装与调试

(1)建立开发环境

在光盘中找到software文件夹下的JN-SW-4031-SDK-Toolchain-v1.1.exe文件(或者在Jennic公司网站上获得该文件)并运行。

在安装过程中,最简单的方法是按默认设置安装。

(2)编写程序代码并进行下载与调试

编写代码完成后,可按Ctrl+F9快捷键或选择主菜单Build下的Build子菜单或点击图标建立可执行二进制代码文件。

若工程编译(Build)成功,则可在C:

\Jennic\cygwin\jennic\SDK\Application\test\JN5139_Build\Release目录下生成test.bin文件。

否则,出错信息会显示在信息窗口中,根据出错信息调试程序。

JennicJN51xxFlash可编程器是用来将编译好的二进制代码文件(*.bin)下载到JN51xx模块中的Flash芯片的代码下载工具,它通过串行总线与JN51xx模块相连。

JennicJN51xxFlash可编程器的用户界面如图1-18所示,它可以将*.bin文件下载到目标板或模块中,下载步骤如下:

①用串口线连接PC机和目标板或模块。

②运行Flash可编程器,选择PC机与目标板相连的串行通讯端口。

③将目标板上的J7跳线至编程(左侧)状态,给目标板上电,按一下RESET按钮后释放,再恢复J7跳线至右侧。

④在图1-18所示的Flash可编程界面上点击Browse按钮(图中①处)查找并选择要下载的目标文件。

⑤选择好目标文件后,点击Progrm按钮(图中②处)开始下载。

在下载的过程中会显示一个下载的进度条,如图1-19所示。

当下载完成后,将显示下载成功或错误,如图1-20所示下载成功对话框。

如果遇到错误,请尝试重新下载。

⑥成功下载后,关掉Flash可编程器再给目标板或模块上电、或按Reset按钮,则刚下载的代码自动运行。

(3)常用API接口函数介绍

应用程序初始化函数如下:

AppColdStart()

应用程序的入口,相当于标准C中的main函数,结点上电后将从这里开始执行应用程序。

该函数需要完成以下功能:

1.通过设置函数中的参数值来设置信道号(JZS_sConfig.u32Channel)和PANID(JZS_sConfig.u16PanId);2.调用函数JZS_u32InitSystem(TRUE)来初始化ZigBee协议栈;3.调用函数vInit()对用户的应用进程进行初始化,包括初始化按钮动作和程序变量,设定绑定等操作;4.调用bBosRun(TRUE)来启动操作系统BOS。

用户可根据具体的应用设计该函数。

AppWarmStart()

结点从内存供电的休眠模式唤醒的时候将进入这个函数。

启动后所有的内存数据都没有丢失。

如果设备不需要休眠唤醒功能,这个函数可以为空。

用户可根据具体的应用设计该函数。

一般情况下,该函数会调用AppColdStart()重新启动设备。

应用程序调用协议栈的函数如下:

JZS_u32InitSystem()

初始化JennicZigBee协议栈。

JZS_vStartStack()

设备将作为Coordinator、Router或者EndDevice启动。

如果是Coordinator将启动网络,如果是Router或者EndDevice将加入网络。

JZS_vStartNetwork()

手动控制Coordinate网络启动,相对于自动网络启动,使用该功能,需要设置JZS_sConfig.bAutoJoin=FALSE.该函数执行后,返回的协议栈事件为JZS_EVENT_NWK_STARTEDJZS_EVENT_FAILED_TO_START_NETWORK。

vAppSaveContexts()

保存网络参数以及用户的数据,如果你的应用是固定点的话,建议你进行网络参数的保存。

u16AppGetContextSize()

用来获取保存的网络参数以及用户数据的尺寸。

vAppGetContexts()

读取保存的网络参数的内容。

协议栈调用应用函数的函数如下:

JZA_boAppStart()

让用户可以在协议栈启动前定义endpoint的descriptor,通常开发人员应该在这个函数中调用JZS_vStartStack启动协议栈。

JZA_vStartEvent()

协议栈将通过这个函数反馈网络层的一些网络事件,比如网络启动成功、结点加入成功或者数据发送完成等。

JZA_vPeripheralEvent()

该函数主要用来处理外部的硬件中断,比如按钮、定时器、UART等。

JZA_vAppEventHandler()

BOS周期性地调用该函数处理硬件中断。

用户可以利用它进行网络状态的判断和按钮的检查等,也可以在这个函数中,写入自己的应用程序。

在设计该函数时,要尽可能地使其运行时间短,以便BOS调度其他活动事件。

JZA_vAppDefineTasks()

该函数用于向BOS注册自己的用户任务,一般很少使用该函数。

JZA_bAfMsgObject()

收到其他结点发送来的MSG帧的处理函数。

实验二GPIO及LCD使用实验

一、实验内容

1.运用基本的GPIO函数设计一个程序,分别通过各按键的切换对应的LED亮灭状态;

2.设计一个程序实现LED灯的逐次自动闪烁;

3.设计一个程序,按下按键SW0,LCD显示数据加1;如果按下按键SW1,LCD上显示的数据减一。

二、实验原理

1.GPIO的使用

Jennic模块具有21路通用GPIO口,可以通过软件方式进行设置,这些端口与其他外围电路公用一个端口。

对于GPIO操作首先要通过VAHI_DioSetDirectoin来进行GPIO

引脚的输入输出方向的设置,函数原型如下:

2.LED的使用

LED的驱动库文件提供了LED的控制方法,开放版中LED驱动电路如下:

 

对LED的操作,首先要进行LED的初始化。

调用LED初始化函数:

vLedInitFrd()对FFD开发板上的四个LED灯进行初始化;在调用LED灯控制函数:

vLedControl(LED,ON)控制相应的LED灯亮灭。

相应的函数如下:

3.按键开关的使用

按键驱动库提供了按键的控制方法:

在Button.h中宏定义了相应功能的函数.电路图如下

对于按键操作,首先要调用初始化函数:

vButtonInitFfd()初始化FFD开发板上的四个按

键,然后调用函数:

u8ButtonReadFfd()读取相应的按键状态相应的函数原型如下:

4.LCD的使用

5.BOS定时器的使用

为了消除按钮抖动对控制的影响,实验加入了一个人标识变量NextReadStart,利用BOS定时函数,使500ms后再次设置NextReadStart为真,通过这种方法可有效地消除按钮抖动的影响。

bBosCreateTimer()函数是一个处理软件定时器的BOSAPI函数,调用该函数可由BOS创建一个软件定时器,该定时器需要利用内部硬件滴答定时器(ticktimer)来实现。

当定时时间到,立即调用由bBosCreateTimer()指定的定时处理程序。

该函数的原型如下;

三、软件设计

1.程序流程图:

首先初始化函数LED和按键的初始化,建网成功,改变LED熄灭,表示建网成功。

再读取是否有按键按下,有点亮相应的LED灯

 

2.程序流程图:

程序从冷启动开始,初始化LED灯状态,建网建成后LED灯自动闪烁,当kong=0(表示方向向左)、LED=3 改变kong=1,当kong=1,且LED=0.改变kong=0;这样依次点亮LED灯再返回点亮LED灯,这样闪烁一直下去。

3程序流程图:

 

接通电源,程序初始化LCD和LED以及按键的初始化;建网成功后,初始化LCD函数,然后检测按键是否按下,检测到按键SW0按下,使LCD显示的数据加1,

调用LCD显示出来,当检测到SW1按下时使LCD显示数据减1,调用LCD显示处理后的数据。

四、实验结果与分析

1.分别按动按键LED0~LED3,可以控制相应灯的亮灭状态。

分析:

在程序中已经设定按键SW0~SW3分别对应于LED0~LED3,所以可以按动按键控制相应灯的亮灭。

2.网络建网成功后,LED0~LED3周期性的闪烁,周期为1秒。

分析:

程序中写入了LED依次加1并点亮,再经过延时程序,所以可以出现周期为1秒的闪烁。

3.按下按键SW0,LCD显示数据加1;按下按键SW1,LCD显示数据减1。

分析:

按动按键SW0和SW1时分别执行了一个自加1和自减1的函数,再经过LCD显示从而可以得出如上结果。

五、存在问题和解决方法

1.再设计设计性试验2,实现LED灯自动闪烁时,只能实现LED灯的按规定的方向依次点亮。

与我理想结果没有结果没有达到,后通过加入一个标志量,控制LED的来去方向,当kong=0(表示方向向左)、LED=3 改变kong=1,当kong=1,且LED=0.改变kong=0;这样依次点亮LED灯再返回点亮LED灯,这样才实现了跑马灯的效果。

其次在按键的时候,按键出现问题,后来讨论在知道是没有加入去抖动程序导致。

2.在设计LCD程序时,遇到的有LCD的调试问题,开始对LCD的写入字、位图、LCD能写64字符,32个汉字,且汉字必须送入要求的内存中,才可以写出正确的字,或则会出现乱码。

 

实验三简单点对点无线通信实验

一、实验内容

1.分别为Coordinator和EndDevice设计一个程序,分别用按键控制切换对方对应LED亮/灭状态。

如Coordinator的SW3控制EndDevice的LED3,EndDevice的SW0控制Coordinator的LED0。

2.分别为Coordinator和EndDevice设计一个程序,其功能为:

按下Coordinator的SW0,某变量X(初始值0)显示在LCD上,同时将X发送给EndDevice,EndDevice收到该数据后进行数据处理(加1),等待1秒后再将其发送给Coordinator,Coordinator收到后将该值赋予X并显示在LCD上,同时再次发送给EndDevice,如此重复运行。

二、实验原理

1.主要分别为Coordinator和EndDevice设计一个程序,因为Coordinator的地址是固定不变的(0x0000),所以EndDevice向Coordinator发数据时,目标地址设置为0x0000。

但是当Coordinator向EndDevice发数据时,由于EndDevice地址不知道,因此我们要保存EndDevice地址,但EndDevice结点加入时,Coordinator会保存EndDevice的16位短地址。

从此来着直接可以进行通信。

2.Coordinator的BOS周期调用函数当检测按键按下,调用发送函数,将发送协议数据。

当EndDevice的MsgObject调用的函数JZA_bAfMsgObject(),接受数据处理相应的协议内容,点亮对应的LED灯。

相反一样。

三、软件设计

1.程序流程图

 

Coordinator建网,EndDevice结点加入成功后,两者进行通信。

按下中断SW0,发送数据0,当协调器接受到0时,点亮LED0灯,其他一样。

同样按下Coordinator的按键SW0~SW3,可以点亮EndDevice的LED0~LED3。

2.程序流程图:

按下Coordinator的SW0,某变量X(初始值30)显示在LCD上,同时将X发送给EndDevice,EndDevice收到该数据后进行数据处理(加1),等待1秒后再将其发送给Coordinator,Coordinator收到后将该值赋予X并显示在LCD上,同时再次发送给EndDevice,如此重复运行。

四、实验结果与分析

1.实验现象:

分别按动Coordinator的按键SW0~SW3,可以控制EndDevice的LED0~LED3的亮灭状态。

同样分别按动EndDevice的按键SW0~SW3,可以控制Coordinator的LED0~LED3的亮灭状态。

分析:

Coordinator建网,EndDevice结点加入成功后,两者进行通信。

按下中断SW0,发送数据0,当协调器接受到0时,点亮LED0灯,其他一样

2.实验现象:

接通电源,可以看到LCD上显示030;让后,LCD上数据会自动加1。

时间间隔1s(左右)。

五、存在问题和解决方法

1.第一问题:

设计好Coordinator和EndDevice,但接通电源后,结点加到别人的Coordinator,EndDevice控制了其他人的LED灯的亮灭。

经老师的告诉,因为大家的信道用了相同的信道,因此结点加到了别人那里。

改变信道后,实验圆满成功。

2.LCD的实验,主要在于是使用影子内存的处理,在实验时,显示存在问题。

30显示为030程序存在问题。

还没有找到解决措施。

实验四两个EndDevice之间的无线通信实验

一、实验内容

1.分别为Coordinator和EndDevice设计一个程序,其功能为:

Coordinator负责建立网络和分配短地址。

按下EndDeviceA的按钮SW0发送广播请求绑定信息,收到该信息的EndDeviceB的LED0闪烁,按下其按钮SW0则返回绑定应答信息,同时LED0处于点亮状态,EndDeviceA收到应答后LED0也处于点亮状态,表示双方绑定成功。

之后按动每个EndDevice的按钮SW2、SW3可分别切换对方对应LED亮/灭状态。

如果按下任何EndDevice的SW1则解除绑定,且LED1闪烁3秒。

2.分别为Coordinator和EndDevice设计一个程序,其功能为:

Coordinator负责建立网络和分配短地址及绑定的媒介。

按动EndDevice按钮SW0,向Coordinator发送绑定请求信息,LED0闪烁10秒,Coordinator收到该信息后记录其短地址并定时10秒,按动另外一个EndDevice的按钮SW0向Coordinator发送绑定应答信息,LED0闪烁5秒,在有效定时时间10秒内若Coordinator收到该应答信号,则记录其短地址,分别将记录的两个短地址发送给两个对应EndDevice,两个EndDevice收到短地址后分别点亮LED0(不再闪烁),若在规定时间内没有建立绑定关系,超时后灭LED0。

如果按下任何EndDevice的SW1则解除绑定,且LED1闪烁3秒。

绑定状态下按动每个EndDevice的按钮SW2、SW3可分别切换对方对应LED亮/灭状态。

二、实验原理

在基于JennicZigBee协议栈中,每个设备必须知道对方的16位短地址,才能进行直接通信,而16位短地址是在EndDevice或Router加入网络时由Coordinator动态分配的。

本次我们采用使用在使用afdeDataRequest()函数发送数据包时,将16位的目标地址设置为0xffff,将数据包以广播包的形式发送出去,按动EndDevice或Router按钮,调用afdeDataRequest()函数向Coordinator发送绑定请求信息,Coordinator收到该信息后记录其短地址并定时,按动另外一个结点的按钮使用afdeDataRequest()函数向Coordinator发送绑定应答信息,在有效定时时间内若Coordinator收到该应答信号,则记录其短地址,分别将记录的两个段地址发送给两个对应结点,两个结点收到短地址后便可以相互直接通信。

JZA_vZdpResponse()是一个协议栈调用应用程序的函数,当一个结点通过zdpNwkAddrReq()发送查找另一个结点的短地址后,匹配的结点发送的应答消息可通过请求者的协议栈调用JZA_vZdpResponse()处理

三、软件设计

1.程序流程图:

实验一流程图:

将网络成功节点加入成功后,改变灯的状态,发送广播包得形式获取对方地址,让人眼看到入网成功,按下EndDeviceA的按钮SW0发送广播请求绑定信息,收到该信息的EndDeviceB的LED0闪烁,按下其按钮SW0则返回绑定应答信息,同时LED0处于点亮状态,EndDeviceA收到应答后LED0也处于点亮状态,表示双方绑定成功。

如果按下任何EndDevice的SW1则解除绑定,且LED1闪烁3秒。

实验二流程图:

EndDeviceA向Coordinator发送数据,Coordinator保存EndDeviceA的地址;EndDeviceB向Coordinator发送数据,Coordinator保存EndDeviceB的地址;然后Coordinator分别将EndDeviceA地址给EndDeviceB,EndDeviceB的地址发给EndDeviceA,得到对方的地址,两者之间互相通信,可以绑定也可以解除绑定。

2.

四、实验结果与分析

1.按下EndDeviceA的按钮SW0,LED0闪烁。

EndDeviceB的LED0闪烁,按下其按钮SW0则LED0处于点亮状态,同时EndDeviceA的LED0也处于点亮状态。

之后按动每个EndDevice的按钮SW2、SW3可分别切换对方对应LED亮/灭状态。

如果按下任何EndDevice的SW1则解除绑定,各EndDevice的LED0灭,且LED1闪烁3秒。

2.按动EndDevice按钮SW0,LED0闪烁10秒,按动另外一个EndDevice的按钮SW0,LED0闪烁5秒,在有效定时时间10秒内,两个EndDevice分别点亮LED0(不再闪烁),之后按动每个EndDevice的按钮SW2、SW3可分别切换对方对应LED亮/灭状态。

如果按下任何EndDevice的SW1,则各EndDevice的LED0灭,且LED1闪烁3秒。

五、存在问题和解决方法

1.开始时不知道广播包怎么发送,后请才考原始程序了解到,两个EndDevice之间是如何等到对方的地址,开始实现LED的亮灭总是存在问题,后来解决是程序写错。

但是解决绑定的时候灯的效果不没有达到设计的效果,时间相差一点。

实验五DIO中断实验

一、实验内容

1.分别为Coordinator和EndDevice设计一个程序,运用DIO中断的方式分别用按键控制切换对方对应LED亮/灭状态。

如Coordinator的SW3控制EndDevice的LED3,EndDevice的SW0控制Coordinator的LED0等等。

2.分别为Coordinator和EndDevice设计一个程序,运用DIO中断的方式分别用DIO4、DIO5、DIO6、DIO7切换对方相应LED亮/灭状态。

如Coordinator的DIO4控制EndDevice的LED0,EndDevice的DIO5控制Coordinator的LED1等等。

二、实验原理

1.介绍几个常用函数:

(1)vAHI_DioSetDirection()函数

该函数用来设置DIO引脚的方向(输入或输出),

(2)vAHI_DioInterruptEdge()函数

当某个DIO作为输入引脚时,则用该函数设置中断产生时是采用上升沿还是下降沿触

发。

该函数的原型如下:

voidvAHI_DIOInterruptEdge(uint32u32Rising,uint32u32Falling);

u32Rising对应为1表示文上升沿触发中断,其中21—31没有用

u32Falling对应为1表示下降沿触发中断,其中21—31没有用

注:

该函数仅将u32Rising中为1的位对应的引脚设置为上升沿触发中断,u32Falling中为

的位对应的引脚设置为下降沿触发中断,没有涉及到的引脚保持它原来的状态。

如果某一个

引脚在u32Rising和u32Falling中都进行了设置,则默认为上升沿触发。

该函数仅对设置为

输入的DIO引脚有效。

如果一个DIO引脚已安排给另一个外设且该外设已启用,则该函数

对该DIO引脚不产生影响。

(3)vAHI_DioInterruptEnable()函数

当某个DIO作为输入引脚时,则该函数用来设置接收或屏蔽该引脚发来的中断,及使

能/屏蔽中断。

该函数的原型如下:

voidvAHI_DIOInterruptEnable(uint32u32Enable,uint32u32Disable);

注:

该函数仅使能u32Enable中为1的位对应的引脚中断,屏蔽u32Disable中为1的位对应

的引脚中断,没有涉及到的引脚保持它原来的状态。

如果某一个引脚在u32Enable和

u32Disable中都进行

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

当前位置:首页 > 法律文书

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2