2023年通信新技术实验报告20230509.pdf

JIANGSUTEACHERSUNIVERSITYOFTECHNOLOGY

通信新技术综合训练报告

学院名称:_________________________________

专业:______________________________

班级:________________________________

姓名:___________________________________

学号:_______________________________________

指导老师:______________________________________

2023年3月

目录

实验一Jennic—WSN开发环境。错误!未定义书签。

实验二GP10及LCD使用实验...............................4

实验三简朴点对点无线通信实验8。

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

实验五DI0中断实验...........................................18

实验六定期器实验。23

实验七1;人近实验。27

实验八ADC及数据采集实验。错误!未定义书签。2

实验九休眠和掉电保护实验。错误!未定义书签。8

心得体会44。

附录45。

实验一Jennic-WSN开发环境

一、实验内容

1.熟悉基于JN5139芯片所开发的一系列开发板及外围部件;

2.了解zigbee系统;

3.掌握软件的安装与调试;

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

二、实验原理

1.JN5139最小系统及外围部件

基于JN5139芯片所设计的最小系统。SPISSZ与SPISSM连接,S

PISWP接高电平,JN5139上电自动复位或按键复位,SPIMISO为编程控制端,

与复位按键配合使用,经DI06、DI07实现程序BIN文献的下载。

JN5139模块提供如下外围部件功能:

5个主SPI选择口;

2个UART串口;

2个带捕获/比较功能的可编程定期器/计数器;

2个可编程睡眠定期器和1个滴答定期器;

两线串口(兼容SMbus和I2C);

从SPI接口(与数据I/O共享);

21个数据I/O口(与UART串口、定期器及SPI选择复用);

4通道12位100kbps模数转换输入;

2个11位数模转换输入;

2个可编程模拟比较输入;

内部温度传感及电压监控。

2.开发板

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

UI:JN5139系列Zigbee模块;

U2:板载光照度传感器;

U3:板载温湿度一体传感器;

J3:外供电(5VDC)接口;

Swith:供电开关;

J7:编程与运营状态选择,左跳并给传感器板加电,则进入可编程状态,或

者在加电的情况下,按住RESET按钮,左跳J7,然后放开RESET按钮,再右跳

J7,也可进入可编程状态,退出可编程状态,只需要按一下RESET按钮即可;

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

DB9:RS232编程接口;

UARTO:串口0;

JP6:模块所有管脚的引出排线;

LCD:液晶接口;

Power:电源指示灯;

REST:复位按键;

LED3,LED2,LED1,LEDO:可编程LED,分别相应DI019.DI018.DI017.DI016;

SW3,SW2,SW1,SWO:可编程按键,分别相应DIO20、DI011、DI010>D

I09;

GND:地。

3.软件的安装与调试

(1)建立开发环境

在光盘中找到software文献夹下的JN-SW-4031-SDK-Toolchain-v

l.l.exe文献(或者在Jennie公司网站上获得该文献)并运营。在安装过程中,最

简朴的方法是按默认设立安装。

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

编写代码完毕后,可按Ctr1+F9快捷键或选择主菜单Build下的Bui1d子菜

单或点击图标建立可执行二进制代码文献。

若工程编译(Bui1d)成功,则可在C:\Jennic\cygwin\jennic\SDK\App

1ication

\test\JN5139—Build\Release目录下生成test,bin文献。否则,犯错信息

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

JennicJN51xxFlash可编程器是用来将编译好的二进制代码文献(*.b

in)下载至【JJN51xx模块中的F1ash芯片的代码下载工具,它通过串行总线与JN5

1xx模块相连。

JennicJN51xxFlash可编程器的用户界面如图1一18所示,它可以将

*.bin文献下载到目的板或模块中,下载环节如下:

a.用串口线连接PC机和目的板或模块。

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

c.将目的板上的J7跳线至编程(左侧)状态,给目的板上电,按一下RESET按

钮后释放,再恢复J7跳线至右侧。

d.在图1T8所示的Flash可编程界面上点击Browse按钮(图中①处)查找

并选择要下载的目的文献。

e.选择好目的文献后,点击Progrm按钮(图中②处)开始下载。在下载

的过程中会显示一个下载的进度条,如图1—19所示。当下载完毕后,将显示下

载成功或错误,如图120所示下载成功对话框。假如碰到错误,请尝试重新下载。

f.成功下载后,关掉Flash可编程器再给目的板或模块上电、或按Reset按

钮,则刚下载的代码自动运营。

4.常用API接口函数介绍

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

AppColdStart()

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

执行应用程序。该函数需要完毕以下功能:1.通过设立函数中的参数值来设立

信道号(JZS_sConfig.u32Channel)和PANID(JZS_sConfig.ul6

Panld);2.调用函数JZS_u32InitSystem(TRUE)来初始化ZigBee协

议栈;3.调用函数vlnit()对用户的应用进程进行初始化,涉及初始化按钮动

作和程序变量,设定绑定等操作;4.调用bBosRun(TRUE)来启动操作系统

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

AppWarmStart()

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

数据都没有丢失。假如设备不需要休眠唤醒功能,这个函数可认为空。用户可根

据具体的应用设计该函数。一般情况下,该函数会调用AppColdStart()重

新启动设备。

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

JZS_u32InitSystem()

初始化JennieZigBee协议栈。

JZS_vStartStack()

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

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

JZS_vStartNetwork()

手动控制Coordinate网络启动,相对于自动网络启动,使用该功能,需要

设立JZS_sConfig.bAutoJoin=FALSE.该函数执行后,返回的协议栈事件为

JZS_EVENT_NWK_STARTEDJZS_EVENT_FAILED_TO_START_NETWOR

Ko

vAppSaveContexts()

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

络参数的保存。

ul6AppGetContextSize()

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

vAppGetContexts()

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

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

JZA_boAppStart()

让用户可以在协议栈启动前定义endpoint的descriptor,通常开发人

员应当在这个函数中调用JZS_vStartStack启动协议栈。

JZA_vStartEvent()

协议栈将通过这个函数反馈网络层的一些网络事件,比如网络启动成功、结

点加入成功或者数据发送完毕等。

JZA_vPeripheralEvent()

该函数重要用来解决外部的硬件中断,比如按钮、定期器、UART等。

JZA_vAppEventHand1er()

BOS周期性地调用该函数解决硬件中断。用户可以运用它进行网络状态的判

断和按钮的检查等,也可以在这个函数中,写入自己的应用程序。在设计该函数

JZA_vAppDefineTasks()

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

JZA_bAfMsgObject()

收到其他结点发送来的MSG帧的解决函数。

实验二GPIO及LCD使用实验

1.运用基本GPI0函数设计一个程序,分别通过各按键切换相应LED亮/

灭状态。

2.设计一个程序,实现LED自动闪烁,周期为1秒。

3.设计一个程序,按下按键SW0,LCD显示数据加1;按下按键SW1,LCD显示

数据减1。

1.GPIO使用

Jennic的模块具有21路通用的GPIO,可以通过软件的方式进行设立,

这些GPI0口和其他的外围接口是共用的。其共用关系如表2—1所示:

表2-1:10口和其他的外围接口共用关系

DIO引脚共用关系

DIOOSPI从选择1(输出)

DIO1SPI从选择2(输出)

DI02SPI从选择3(输出)

DI03SPI从选择4(输出)

DI04-DIO7UARTO

DI08-DI010TimerO

DIOil-DI013Timerl

DI014-DIO15Serialinterface

DI016IPdatain

DI017-DI020UARTl

常用函数:

(1)对于GPIO的操作一方面需要调用vAHI_DioSetDirection来进行GPI0输

入输出方向的设立。该函数的原型如下:

PUBLICvoidvAHI_DioSetDirection(uint32u32Inputs,uint

32u320utputs);

这里u321nputs和u32Outputs是设立GPIO输入和输出地mask码。

(2)对于GPIO的输出操作比较简朴,通过调用如下原型函数:

PUBLICvoidvAHI_DioSet0utput(uint32u320n,uint32u3

2Off);

这里u320n和u32Off分别是设立GPIO输出高、低电平的掩码。

⑶对于GPIO的输入操作,通常调用如下原型函数:

PUBLICuint32u32AHI_DioReadlnput(void);

返回值相应每个输入DIO的高低电平。

2.LED使用

LED驱动库文献提供了LED的控制方法,在LedControl.h中宏定

义了相应功能函数。

对于LED的操作,一方面要调用初始化函数vLedlnitFfd()初始化FFD

开发板上的四个LED,然后调用函数vLedControl(LED,ON)控制相应LED点

亮或熄灭。相应函数原型如下:

PUBLICvoidvLedlnitFfd(void);

PUBLICvoidvLedContro1(uint8u8Led,boo1—tbOn);

3.按键使用

按键驱动库文献提供了按键的控制方法,在Button.h中宏定义了相应功能函

数。

对于按键的操作,一方面要调用初始化函数vButtonlnitFfd()初始化FFD

开发板上的四个按键,然后调用函数u8ButtonReadFfd()读取相应按键的状态。

相应函数原型如下:

PUBLICvoidvButtonInitFfd(void);

PUBLICuint8u8ButtonReadFfdCvoid);

4.LCD使用

LCD驱动库文献库提供了液晶的驱动方法,在Lcd_JMl2864_Driver.h中

提供了相应功能的原型函数。

5.BOS定期器的使用

为了消除按钮抖动对控制器的影响,本实验设立的一个读取按钮的标志变量

NextReadStart,若其值为TRUE且有按下按钮SW的操作,则设立其为FALS

E,并运用BOS的定期器函数bBosCreateTimer。定期,50Oms后再次设立Ne

xtReadStart为真。通过关这种方法可有效地消除按钮抖动的影响。

bBosCreateTimer()函数是一个解决软件定期器的BOSAPI函数,调用该函

数可由BOS创建一个软件定期器,该定期器要运用内部硬件滴答定期器(tick

决程序。

6.协议栈事件

函数JZA_vStackEvent()是一个协议栈调用应用程序的函数(回调函数)。

它的重要功能是解决来自于协议栈底层的各种事件,比如,APS层数据传输确认。

用户通过该函数可以解决来自于AF和ZDP层的事件。该函数的原型为:

PUBLICvoidJZA_vStackEvent(teJZS_EventIdentifi

ereEventld,

tuJZS_StackEvent*puStac

kEvent);

其中参数eEventId表达事件的类型,参数puStackEvent表达有关发生事

件的补充信息。

7.周期性调用函数

网络启动后,每隔一定期间,BOS就会调用JZA_vAppEventHand1er()

函数一次,该函数专门来解决硬件中断,用户可以在该函数中添加用于网络状态

判断、按钮检查等检测中断事件的程序代码,也可以添加用于发送数据的程序代

码等。本实验运用该函数检查是否按下SW按钮。

三、软件设计

程序一方面执行AppC。1dStart。函数,自动寻找最安静的信道,然后调用

vlnit()函数,初始化系统、LED、按键和协议栈,并且启动BOS定期时钟,其后

判断网络是否启动成功,若启动成功,则硬件上的标志位LEDO灭,网络启动成功

后就开始读取按键值,并执行相应的按键控制LED亮灭的子程序,主程序流程图

如下图所示:

2.设计一个程序,实现LED自动闪烁,周期为1秒。

程序一方面执行AppColdStart()函数,自动寻找最安静的信道,

然后调用vlnit()函数,初始化系统、LED、按键和协议栈,并且启动BOS定期时

钟,其后判断网络是否启动成功,若启动成功,则硬件上的标志位LEDO灭,网络

ppTickLED()函数,通过定义一个变量LED,LED循环变化,运用vLedC

ontrol(LED,TRUE),实现LED的流水灯显示。主程序流程图如下图所示:

(开始)

系统、LED、按键初始化

N

、网络是否启动成功二------

调用vAppTickLED。函数,

实现LED自动闪烁

3.设计一个程序,按下按键SWO,LCD显示数据加1;按下按键SW1,LCD

显示数据减1。

程序一方面执行AppCo1dStart()函数,自动寻找最安静的信道,然后调用

vlnit()函数,初始化系统、LED、按键和协议栈,并且启动BOS定期时钟,其

后判断网络是否启动成功,若启动成功,则硬件上的标志位LEDO灭,网络启动

成功后调用JZA_vAppEventHand1er()函数读取按键值,若有键按下,调

用按键子程序vProcessSplashKeyPress(),执行case语句:按键0,对液晶

显示的数进行加1;按键1,对液晶显示的数进行减lo主程序流程图如下图所示:

四、实验结果与分析

1.实验一中分别按下按键SW0~SW3,相应的LED0~LED3可以改变当前的

状态,按动一下亮、按动一下灭,实现了按键控制LED灯的亮灭;

2.实验二中实现LED的自动闪烁,实际实验中实现的是4个LED灯依次闪

3.实验三中实现了LCD的显示,并通过按键控制相应的显示为加1还是减

1,按下SW0,数值加1,按下SW1,数值减1,LCD上显示的初始值为000,加满后为

255o

五、存在问题和解决方法

1.在完毕实验二时,题目规定周期为1s,设计成流水灯的形式,其周期为1

为1S,所以通过改变延时来解决此问题,因此,在阅读题目的时候需要仔细阅读题

目规定,弄清题意。

2.在完毕实验三时,LCD刚开始的时候不能显示,但是通过检测LED的

亮灭可以知道,程序已经执行,可以看出,LCD的显示程序存在一些问题,通过仔

细研究,发现LCD显示部分有所漏缺,修改后LCD正常显示。

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

1.分另ij为Coordinator和EndDevice设计——个程序,分另U用按键控制

切换对方相应LED亮/灭状态。如Coordinator的SW3控制EndDevice的LE

D3,EndDevice的SWO控制Coordinator的LEDO。

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

dinator的SW0,某变量X(初始值0)显示在LCD上,同时将X发送给EndDevi

ce,EndDevice收到该数据后进行数据解决(加1),等待1秒后再将其发送给

Coordinator,Coordinator收到后将该值赋予X并显示在LCD上,同时再次

发送给EndDevice,如此反复运营。

1.获得16位短地址的方法

Coordinator的16位短地址固定为0x0000,而EndDevice的16位短

地址是由Coordinator动态分派的。EndDevice可直接使用短地址0x0000

与Coordinator通信,而Coordinate)r与EndDevice通信时,Coordinator

必须使用EndDevice的短地址。在应用程序中,Coordinator获得EndDevi

ce短地址的方法比较简朴,每当有新的结点加入到网络时,Coordinator协议栈

就会调用解决协议栈低层的回调函数JZA_vStackEvent(teJZS_Even

tIdentifiereEventId,tuJZS_StackEvent*puStackEvent),参数p

uStackEvent是一个指向栈事件tuJZS_StackEvent类型的指针,通过该参数即

可获得新加入结点的16位短地址。下面的JZA_vStackEvent()函数的代码中给

出了获取16位短地址DstAddress的具体方法。

if(eEventId==JZSEVENTNEWNODEHASJOI

NED)

DstAddress=puStackEvent->sNewNodeEvent.u16ShortAd

dr;

}

2.数据格式

ZigBee2023支持KVP键值对和MSG消息帧两种类型数据格式。KVP是

ZigBee2023协议中规定的一种特殊的数据传输机制,通过一种规定来标准化数

据传输格式和内容,重要用于传输较简朴的变量值格式;MSG是ZigBee协议中规

定的另一种数据传输机制,这种机制在数据传输格式和内容上并不做更多的规

定,重要用于专用的数据流或文献数据等数据量较大的情况。由于在ZigBe

e2023及以后的版本中不再支持KVP格式的数据包,因此,在本实验中,仅使用

MSG消息帧进行数据的传输。

在JennicZigBee应用程序中,通常使用协议栈提供的afdeDataRequest()

函数发送数据帧。当一个结点收到来自其他结点的MSG帧时,协议栈就会调用回

调函数JZA_bAfMsgObject()对接受的MSG帧进行解决。在数据收发过

程中,发送和接受设备双方都需要知道事件的数据格式,才干对的解决信息。

3.创建和发送数据请求函数afdeDataRequest()

该函数属于AFDE(AFSub-layerDataEntity)类函数,用来向网

络层发出数据发送的请求。

该函数的原型为:

Stack_Status_eafdeDataRequest(APS_Addrmode_eeAddr

Mode,

uint16u16AddrDst,

uint8u8DstEP,

uint8u8SrcEP,

uint16u16ProfileId,

uint8u8ClusterId,

AF_Frametype_eeFrameType,

uint8u8TransCount,

AF_Transaction_s*pauTransact

ions,

APS_TxOptions_eu8txOptions,

NWK_DiscoverRoute_eeDiscov

erRoute,

uint8u8RadiusCounter);

各形参描述如下:

eAddrMode:该参数定义了发送的目的地址模式,它是APS_Addrmode_e

枚举类型的数据。

u16AddrDst:该参数是数据要发送的目的地址,地址范围为0x0000到

OxFFFEo

u8DstEP:目的地址的端标语,范围是0x01到|0xF0。

u8SrcEP:源地址的端标语,范围是0x01到0xF0。

u16Profileid:所采用的profi1eID。

u8ClusterId:所采用的clusterID0

eFrameType:使用的数据帧类型0x01=KVP,Ox02=MSG。

u8TransCount:本次请求发送的数据事务的数量。取值范围在0到0x0f。

pauTransactions:该参数是一个指向AF_Transaction_s结构体类型的指针,

在该结构体类型的变量中,存放着需要发送的数据。

bTxOpti。ns:指定发送方式,可以选择下列的值,这些值可以进行逻辑或。

u8DiscoverRoute:设定所采用的路由发现模式。

u8RadiusCounter:数据发送的深度,即所发送数据包的最大转发次数,假

如设立为0,协议栈将采用2倍的MaxDepth发送深度。

4,收到MsgObject调用的函数JZA_bAfMsgObject()

该函数属于协议栈调用应用程序的函数,用来解决来自其他结点发送来的

MSG帧。

PUBLICboo1_tJZA_bAfMsgObject(APS_Addrmode_eeAddrMo

de,

uintl6ul6AddrSrc,

uint8u8LQI,

uint8u8ClusterID,

uint8*pu8ClusterIDRsp,

AF_Transaction_s*puTrans

actionlnd,

AF_Transaction_s*p

uTransactionRsp)

eAddrMode:该参数定义了发送的目的地址模式,它是APS_Addrmode_e枚

举类型的数据.

ul6AddrSrc:该参数是数据发送方的源短地址,地址范围为0x0000到

u8SrcEP:源端标语,范围是Ox01到OxFO。

u8LQI:接受帧的链路质量。

u8DstEP:目的端标语,范围是0x01到OxF0。

*puTransactionlnd,:该参数是一个指向AF_Transaction_s结构体类型

的指针,在该结构体类型的变量中,存放着接受的数据。

*puTransactionRsp:该参数是一个指向AF_Transaction_s结构体类

型的指针,在该结构体类型的变量中,存放着response信息。

5.简朴设备描述函数afmeAddSimpleDesc()

该函数属于AFME(AFSub-1ayerManagementEntity)类函

数,在增长设备描述符函数vAddDesc(void)中调用,其功能是为一个endpoin

t增长一个简朴描述符(simpledescriptor)o假如一个endpoint上没有对的

定义的简朴描述符,那么它将不能对的地接受来自其他结点的数据,通常简朴描述

符应当在设备建立网络成功或者加入网络成功后添加。

1.分别为Coordinator和EndDevice设id个程序,分别用按键控制切

换对方相应LED亮/灭状态。如Coordinator的SW3控制EndDevice的LED

3,EndDevice的SWO控制Coordinator的LEDO。

Coordinator:程序一方面执行AppCoIdStart()函数,设立信道号和PAN

ID,然后调用vlnit()函数,初始化系统、按键、LED灯和协议栈,若启动成

功,则硬件上的标志位LEDO灭,另一方面再判断是否有新的结点加入,若有新结

点加入,硬件上得标志位LED1灭;判断是否有按键被按下,若按下了则调用vS

endData()函数向enddevice发送一个数据,在程序运营过程中若接受到MSG信

息,贝U调用vLedControl(0,bToggle)控制灯的亮灭。

Coordinator主程序流程图:

Enddevice:程序一方面执行AppCok!Start()函数,设立信道号和PANID,

然后调用vlnit()函数,初始化系统、按键、LED灯和协议栈,并且启动B0

S定期时钟;其后判断是否加入网络成功,若加入成功,则硬件上的标志位LED0

灭;判断是否有按键被按下,若按下了则调用vSendData()函数向enddevice发

送一个数据,在程序运营过程中若接受到MSG信息,则调用vLedContro

1(0,bToggle)控制灯的亮灭。主程序流程图如下图所示:

Enddevice主程序流程图:

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

oordinator的SW0,某变量X(初始值0)显示在LCD上,同时将X发送给EndDev

ice,EndDevice收到该数据后进行数据解决(加1),等待1秒后再将其发送给

Coordinator,Coordinator收到后将该值赋予X并显示在LCD上,同时再次发

送给EndDevice,如此反复运营。

Coordinator:程序一方面执行AppColdStart()函数,设立信道号和PA

NID,然后调用vlnit()函数,初始化系统、按键、LED灯和协议栈,并且启动BOS

定期时钟;其后判断网络是否启动成功,若启动成功,硬件上得标志位LED1

灭;判断是否有按键被按下,若按下了,调用函数vSendData()向EndDevice

发送x;在程序运营过程中若接受到EndDevice发送的数据,调用LED显示,

再调用函数vSendData()向EndDevice发送x。主程序流程图如下图所示:

Enddevice:程序一方面执行AppCo1dStart()函数,设立信道号和PANI

D,然后调用vlnit()函数,初始化系统、按键、LED灯和协议栈,并且启动BO

S定期时钟;其后判断是否加入网络成功,若加入成功,则硬件上的标志位LED

0灭;判断若接受到Coordinator发送的数据胳接受的数据加1,最后调用BOS

时钟周期性调用vAppTick函数,函数中调用vSendData()向Coordinator发

送x,这样就能实现定期发送。主程序流程图如下图所示:

1.在实验一中分别按动Coordinator的SW0~SW3,在Enddevice上

的LEDOLED3可以实现相应的亮灭,同样地,分别按动Enddevice上的

SW0-SW3,也能使得Coordinator上相应的LED0~LED3亮灭。可以

达成按键控制双方的效果,符合题目规定,说明程序设计对的。

2.在实验二中按动Coordinator的SW0,可以看见LCD液晶显示频上数据

从0开始自加一,说明Coordinator和Enddevice之间互相发送数据了,符

合题目规定,说明程序设计对的。

1.在下载完程序上电测试时,发现Coordinator和Enddevice的LED0、

LED1均不灭,那就说明网络建立没有成功,不能实现互相间的通信,考虑到这

有也许是信道干扰的问题,和其别人的信道相冲突了。于是,我将信道改成了21,

同时将网络号也改掉了,重新进行下载,上电后,测试灯均灭掉了,说明网络建立

成功,可以实现通信。

2.在实验一中,当按下SW0是LED0亮时,必须按两次SW1才干使LE

D1亮,先开始认为是按键的问题,可是后来发现自己程序中指定义了一个变量

bToggle,所以只有当LEDO灭了后,那么按一下SW1则LED1就亮了,

这是程序中需要改善的地方。

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

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

Coordinator负责建立网络和分派短地址。按下EndDeviceA的按钮SWO发

送广播请求绑定信息,LED0闪烁,收到该信息的EndDeviceB的LED()闪

烁,按下其按钮SWO则返回绑定应答信息,同时LEDO处在点亮状态,EndDevice

A收到应答后LED0也处在点亮状态,表达双方绑定成功。之后按动每个EndD

evice的按钮SW2、SW3可分别切换对方相应LED亮/灭状态。假如按下

任何EndDevice的SW1则解除绑定,各EndDevice的LEDO灭,且LED1

闪烁3秒。

2,分别为Coordinator和EndDevice设il-一1个程序,其功能为:Coordina

tor负责建立网络和分派短地址及绑定的媒介。按动EndDevice按钮SWO,

向Coordinator发送绑定请求信息,LEDO闪烁10秒,Coordinator收到该

信息后记录其短地址并定期10秒,按动此外一个EndDevice的按钮SWO向C

Coordinator收到该应答信号,则记录其短地址,分别将记录的两个短地址发送给

两个相应EndDevice,两个EndDevice收到短地址后分别点亮LED0(不

再闪烁),若在规定期间内没有建立绑定关系,超时后灭LEDOo假如按下任何

EndDevice的SW1则解除绑定,各EndDevice的LED0灭,且LED1闪烁3秒。绑

定状态下按动每个EndDevice的按钮SW2、SW3可分别切换对方相应LED

亮/灭状态。

1.通过对方的MAC地址获得它的16位短地址

在基于JennicZigBee协议栈中,每个设备必须知道对方的16位短地址,才

干进行直接通信,而16位短地址是在EndDevice或Router加入网络时由Coor

dinator动态分派的。假如一个设备(请求者)知道另一个设备的MAC地址时,

则请求者可通过调用zdpNwkAddrReq()函数广播查寻与该MAC地址相

匹配的结点,当匹配的结点收到该数据包则返回自己的短地址给请求者,请求者即

可用该短地址与其进行通信。

2.通过广播请求对方绑定获得它的16位短地址

在使用2££^口212口6口起51()函数发送数据包时,将16位的目的地址设立

为0Xffff,即可以广播的形式将数据包发送出去。一个设备(请求者)想获取另一个

设备的16位短地址的方法是:发送一个广播请求绑定指令数据包,符合条件的结

点(如判断指令包内容,按下按钮等)发送应答包(含自己的短地址)给请求者,

请求者即可用该短地址与其进行通信。

3.通过发送请求/应答绑定信息给Coordinator获得对方的16位短地址

按动EndDevice或Router按钮,调用afdeDataRequest()函数向

Coordinator发送绑定请求信息,Coordinatoi收到该信息后记录其短地址并

定期,按动此外一个结点的按钮使用afdeDataRequest()函数向Coordinato

录其短地址,分别将记录的两个段地址发送给两个相应结点,两个结点收到短地

址后便可以互相直接通信。

4.高功率模式

M02与M04高功率模块使用时,需要进行高功率配置,一般在初始化阶段设

立。高功率模块配置函数原型为:

VoidvAHI_HighPowerModuleEnable(bool_tbRFTXEn,

Bool_tbRFRXEn);

5.网络地址请求函数zdpNwkAddrReq()

在Coordinator与EndDevice实现的点对点实验介绍了Coordina

tor获取16位短地址的方法,而对于EndDevice和Router,当一个结点知道

另一个结点的MAC地址后,则可以通过网络地址请求函数zdpNwkAddrR

eq()以广播的方式发送数据包,查找与该MAC地址相匹配的结点在网络中的

短地址。协议栈可通过调用JZA_vZdpResponse(涵数解决响应消息。

6.网络地址请求响应函数JZA_vZdpResponse()

JZA_vZdpResponse()是一个协议栈调用应用程序的函数,当一个结点通

过zdpNwkAddrReq()发送查找另一个结点的短地址后,匹配的结点发送的

应答消息可通过请求者的协议栈调用JZA_vZdpResponse()解决。

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

dinator负责建立网络和分派短地址。按下EndDeviceA的按钮SWO发送

广播请求绑定信息,LED0闪烁,收到该信息的EndDeviceB的LEDO闪烁,

按下其按钮SWO则返回绑定应答信息,同时LEDO处在点亮状态,EndDevice

A收到应答后LEDO也处在点亮状态,表达双方绑定成功。之后按动每个EndDevi

ce的按钮SW2、SW3可分别切换对方相应LED亮/灭状态。假如按下任何

EndDevice的SW1则解除绑定,各EndDevice的LEDO灭,且LED1闪烁3秒。

Coordinator:Coordinator负责建立网络和分派短地址,程序一方面执

行AppCoklStart()函数,设立信道号和PANID,然后调用vInit0函数,初

始化系统、按键、LED灯和协议栈,并且启动BOS定期时钟;其后判断网络是

否启动成功,若启动成功,则硬件上的标志位LEDO灭。主程序流程图如下图所

示:

Coordinator主程序流程图:

EnddeviceA:程序一方面执行AppColdStart()函数,设立信道号和P

ANID,然后调用vlnit()函数,初始化系统、按键、LED灯和协议栈,并且启动

BOS定期时钟淇后判断网络是否加入成功,若加入成功,则硬件上的标志位LEDO

灭。判断是否按下SW0键,若有按下,则调用vSendData()函数发送广播请求

绑定信息;判断是否收到应答信息,若收至(则调用vLedControl(LTRUE)控制

LEDO处在点亮状态,表达双方绑定成功,并且获取对方短地址,此时可以与E

nddeviceB进行通信;然后就开始读取按键值,若有按键按下,则调用按键解决

函数进行按键解决;同时若收到目的地址的MSG信息,则执行相应控制指令。主

程序流程图如下图所示:

EnddeviceA主程序流程图:

EnddeviceB:程序一方面执行AppColdStart()函数,设立信道号和P

BOS定期时钟;其后判断网络是否加入网络成功,若加入成功,则硬件上的标志

位LEDO灭。判断若接受到广播请求绑定信息,则获取对方短地址,且Enddev

iceB的LEDO闪烁,若按下其SW0,则返回绑定应答信息,同时调用vLedContr

01(1,TRUE)控制LEDO处在点亮状态,并且调用vSendData(0)函数发送应答信

息,此时与EnddeviceA建立通信;若有按键按下,则读取按键的值,若读取成功

则调用按键解决函数进行按键解决;同时若收到目的地址的MSG信息,则执行相

应控制指令。主程序流程图如下图所示:

EnddeviceB主程序流程图:

1.给电路板上电后,Coordinator负责建立网络和分派短地址,且三方

的网络建立成功。然后按下EndDeviceA的SW0向EndDeviceB发送广播请

求绑定信息,此时EndDeviceA的LEDO不断地闪烁,收到该信息的E

ndDeviceB的LED0也闪烁,在程序中我定义了他们两方是一直闪烁的。当按

下EndDeviceB的SWQ按钮则返回绑定应答信息,此时EndDeviceB通过其

中的JZA_bAfMsgObject函数将EndDeviceA的地址记录下来,作为目

的地址,同时LEDO处在点亮状态。与此同时EndDeviceA收到应答后也同样

将EndDeviceB的地址作为目的地址,同时LEDO也处在点亮状态,表达双方绑定

成功。之后按动每个EndDevice的按钮SW2、SW3可分别切换对方相应LE

D亮/灭状态。假如按下任何EndDevice的SWL此时的目的地址都为0,解除绑

定,且LED1闪烁3秒,实验现象符合规定。

1.在本次实验中,当EndDeviceA发送信息后LEDO我设立了长闪,但

会出现永远闪烁的情况,即跳不出闪烁的循环子程序,针对这一问题,我写了两个

闪烁程序,同时设立了一个标志位,使得n=l的时候才执行闪烁程序,问题得以解

决。

实验五DIO中断实验

1.分别为Coordinator和EndDevice设il个程序,运用DIO中断的方式分

别用按键控制切换对方相应LED亮/灭状态。如Coordinator的SW3控制EndDe

vice的LED3,EndDevice的SWO控制Coordinator的LED0等等。

2.分别为Coordinator和EndDevice设■■一个程序,运用DIO中断的方式

分别用DI04、DIO5、DIO6、DI07切换对方相应LED亮/灭状态。如Coor

dinator的DIO4控制EndDevice的LED0,EndDevice的D105控制Coo

rdinator的LEDl等等。

1.vAHI_DioSetDirection()函数

该函数用来设立DI。引脚的方向(输入或输出),其函数原型和使用方法参见

讲义2。当某个DIO作为外部终端源时,则意味着该DIO引脚设立为输入。假如一

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

生影响。

2.vAHI_DioInterruptEdge()函数

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

下降沿触发。该函数的原型如下:

voidvAHI_DIOInterruptEdge(uint32u32Rising,uint32u32Fa

1ling);

各参数的具体含义描述如下:

u32Rising:32位位掩码,其位0至位20相应于每一个DIO引脚。当某一位

为1时,则意味着该位相应的引脚在输入信号的上升沿触发中断。u32Rising

的位21至位31无定义,可设立为1或0。u32FaHing:32位位掩码,其位0至位20

相应于每一个DIO引脚。当某一位为1,则意味着该位相应的引脚在输入信号的下

降沿触发中断。u32Rising的位21至位31无定义,可设立为1或0。该函数仅将

u32Rising中为1的位相应的引脚设立为上升沿触发中断,u32FaIIing中

为1的位相应的引脚设立为下降沿触发中断,没有涉及到的引脚保持它本来的状

态。假如某一个引脚在u32Rising和u32Falling中都进行了设立,则默认为

上升沿触发。该函数仅对设立为输入的DIO引脚有效。假如一个DIO引脚已安排

给另一个外设且该外设已启用,则该函数对该DIO引脚不产生影响。例如:

vAHI_DioSetDirection(0xOOO000FF,0x00000000);

vAHI_DioInterruptEdge(0x0000000F,0x00000077);

函数vAHI_DioSetDirection设立DIO0、DIO1...........DIO7等8个引脚

方向为输入,函数vAHI_DIOInterruptEdge设立DI00、DIOKDI02和D

I03等4个引脚为上升沿触发中断,DI04、DIO5和DI06等3个引脚为下降沿

触发中断,DIO7引脚保持原状态。

3.vAHI_DioInterruptEnable()函数

当某个DIO作为输入引脚时,则该函数用来设立接受或屏蔽该引脚发来的中

断,及使能/屏蔽中断。该函数的原型如下:

voidvAHI_DIOInterruptEnab1e(uint32u32Enable,uint32u32D

isable);

u32Enab1e:32位位掩码,它的位0至位20相应于每一个DIO引脚。当某一

位为1时,则使能该位相应的引脚发来的中断。u32Enable的位21至位31无定义。

u32Disable:32位位掩码,它的位0至位2()相应于每一个DIO引脚。当某一

位为1时,则屏蔽该位相应的引脚发来的中断。u32Disable的位21至位31无定

义。

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

为1的位相应的引脚中断,没有涉及到的引脚保持它本来的状态。假如某一个引

THE END
1.真相让人大跌眼电瓶油泵自检传感器指示灯发动机你是不是听过这样的说法开车前先把车钥匙拧到ON挡位,让全车电脑通电,这时候仪表盘会亮起很多指示灯。稍等片刻,有些指示灯会熄灭,这时候就可以拧钥匙点火了。 人们把这个操作叫做“通电自检”,据说启动发动机前如果不自检就无法及时发现一些故障,对发动机不好,很多车主对此深信不疑。 https://www.163.com/dy/article/JIJSFEPO0553OUYV.html
2.通电自检发动机灯不亮是怎么回事?通电自检发动机灯不亮属于正常的现象,因为汽车没有启动时发动机灯都会亮起来,而当启动后3-5秒就会自动熄灭。发动机自检灯也就是发动机故障灯,当发动机出现故障时,这些故障会生成一串代码,ECU读取到故障码后,会以指示灯的形式出现在仪表台上。拓展资料:1、发动机故障灯一直亮着:如果在行驶中一直亮着,那基本上就是发https://www.yoojia.com/wenda/303120.html
3.奥迪A6L(C6)仪表保险丝盒位置及图解不亮或长亮表示发动机故障,需及时进行检修. 燃油指示灯--提示燃油不足的指示灯,该灯亮起时,表示燃油即将耗尽,一般从该灯亮起到燃油耗尽之前,车辆还能行驶约50公里左右。 清洗液指示灯--显示风挡清洗液存量的指示灯,如果清洗液即将耗尽,该灯点亮,提示车主及时添加清洗液。添加清洁液后,指示灯熄灭. 电子油门指示灯https://www.360docs.net/doc/f014445916.html
4.www.jxmzxx.com/appnews对于插电式混动车来说,当可重复利用的电量用尽后,传统发动机将独自负担继续行驶的动力需求。尽管比起电机加持时的燃油效率会大幅降低,但起码能让你安全返回。 与之相比,并联式和串联式混动车在电池故障后就没这么好的运气了。它们的发动机和电机是协同工作的,缺一不可。电池一旦失灵,整个动力系统便陷入瘫痪,别说跑车http://www.jxmzxx.com/appnews_20241103/98120644.html
5.www.bjvip3000.com/aplpage89747.html此外,日本经济新闻报道称,日本IHI公司11月5日与普拉特惠特尼公司签署了共同为F-35隐形战机生产发动机的协议。该款战斗机主要由美国洛克希德马丁公司负责开发,IHI公司将负责制造日本购买的38架飞机的发动机零部件,并交付美方。在F-35的相关零部件领域,日本企业参与制造尚属首次,在日本国内国防产业中,三菱电机正力争承担雷https://www.bjvip3000.com/aplpage89747.html
6.SS4改进型电力机车应急及一般故障处理1、劈相机起动正常,劈相机灯不亮维持运行。 2、567KA故障可人为固定闭合,注意过分相绝缘释放567KA,过分相后再闭合567KA,起动劈相机。 五、闭合劈相机扳钮劈相机为不灭 1、显示3秒后灯不灭,立即断电关闭劈相机扳钮。 2、劈相机起动电阻甩不开,起劈相机3秒后,人为捅566KA;劈相机起动电阻仍甩不开,检查确认527https://wenku.baidu.com/view/6333aac2fc0a79563c1ec5da50e2524de418d03b.html
7.吉利几何A说明书.pdf吉利几何A说明书.pdf,前前言言 尊敬的用户: 感谢您对吉利汽车的信任,选择了具有优良安全性、舒适性、动力性和经济性的吉利汽 车,我们期待着以优质的产品和服务为您的工作和生活带来乐趣。 首次使用前请阅读并遵守本手册的内容,将帮助您更好的了解、使用吉利汽车,使您的https://max.book118.com/html/2022/0211/5004341203004141.shtm
8.煤气基础知识试题6篇(全文)5、管道燃气经营者因施工、检修等原因需要临时调整供气量或者暂停供气的,应当将作业时间和影响区域提前()予以公告或者书面通知燃气用户,并按照有关规定及时恢复正常供气。 A、24小时 B、36小时 C、48小时 D、72小时 6、家庭装修需改动燃气管线时,应由()的人员进行,以免引起燃气泄漏,发生火灾或爆炸。A、曾经做过管https://www.99xueshu.com/w/file81pc425g.html
9.ak.akvtc.cn/mokoi12“2009年中国对外直接投资流量达到565亿美元,名列全球第五位,发展中国家首位。”这是本报记者11月1日从国新办新闻发布会上了解到的。|_。 4月30日电 据台湾《联合晚报》报道,李登辉是否会赴日访问,外界关注。李登辉基金会秘书长王燕军表示,李登辉今天进行一整天精密身体检查,健检结果傍晚会知道,会视医疗团队建议,http://ak.akvtc.cn/mokoi12_01/561948.html
10.www.scmc黄色午夜大毛片 黄A免费看 另类熟妇诱惑 手机av电影 二区无码毛片视频 中国人免费的视频下载 人妖系列精品无码专区 操美视频国产 新蜂娱乐 麻7IIII2扣不错 操逼啊啊啊啊视频 电视剧《男生和女生一起的轮滑鞋网》手机高清免费在线观看_中文网 又大又长又粗在线网站 国产精品嫩操视品 91九色绿帽人妻http://www.scmc-xa.com/xxxr/005927.shtml
11.sxshxx.cn/xxxr96284850.html之所以要进行单方面试行免签,主要是因为要服务高质量发展和高水平对外开放。并且此次对这六国试行免签的时间,定为2023年12月1日至2024年11月30日。、.. 历史上的今天|1945年8月15日,日本宣布无条件投降 “随着中央社会工作部统筹指导信访工作,未来信访工作思路有望实现由‘堵’到‘疏’,由被动应付到主动下访http://sxshxx.cn/xxxr96284850.html
12.www.ltctb.com/aplpage41384.html三,民工小伙又粗又硬又长,美女露%100的身体运动 四,黄片国产AV,小雪被房东 的好爽动态图 五,日日摸日日碰夜夜爽亚洲,做运动打扑克的过程视频 六,国产啪网爆网站日韩欧美网,诱惑骚逼的场所 七,男生塞女生的游戏软件 【联系我们】 客服热线:133-2881-646 https://www.ltctb.com/aplpage41384.html
13.10款乐风报B059a乘空座椅安全带指市灯回路雪佛兰乐风09年雪佛兰乐风显示故障码为乘客侧安全带指示灯回路怎么回事? 师傅,您好!我想问一下雪佛兰乐风用431读出故障为:乘客座椅安全带指示灯回路,该怎么办? 各位师父好,我的是10年乐风,安全汽囊灯一直亮的问题一直没有解决,今天有时间去路边修小车线路的店用平板电脑检测了一下,上面显示乘客座椅安全带回路b059a这是什么https://m.qcds.com/chat/talk/1116107/9007355
14.电力机车(精选十篇)A/B组两节窜车:(1)主司控故障或司控插头松,紧司控插头无效,用副台维持。(2)操纵节556KA卡劲,人为闭合。(3)(159#、160#机车)非操纵端钥匙未断,各司控器不在0位。N105、N106插座接触不良时紧固。 1.5.主台“牵引电机”灯亮,副台某牵引电机灯亮,牵引电机过载,跳主断或窜车时的处理 https://www.360wenmi.com/f/cnkey61ctxxa.html
15.www.nbxinxi.com/xxxr61577612/415942.shtml他表示。 此外,为帮助市民更好地了解以旧换新政策,来现余介绍称,北京12345公众号汇总发布政策解读,逐项说明如何领补贴,同时制作相关宣传视频、动画,利用公交、地铁等媒介宣传,让政策触及更多市民。近期,京通、市发展改革委网站还开设"两新"专栏,更加便利市民查询政策,同时收集意见建议,进一步动态优化政策措施。http://www.nbxinxi.com/xxxr61577612/415942.shtml