Zigbee蓝牙无线模块设计那些难点知道多少?

  • 秒速时时彩 2019-12-08 分享新闻到:
<返回列表

  秒速时时彩周立功教授新书《面向AMetal框架与接口的编程(上)》,对AMetal框架进行了详细介绍,通过阅读这本书,你可以学到高度复用的软件设计原则和面向接口编程的开发思想,聚焦自己的“核心域”,改变自己的编程思维,实现企业和个人的共同进步。经周立功教授授权,即日起,致远电子公众号将对该书内容进行连载,愿共勉之。

  AW824P2EF 是由广州致远电子有限公司开发的,基于LPC824+JN5161 组合而成的支持Fastzigbee 组网协议和用户二次开发的核心板,JN5161 是NXP 半导体公司提供的zigbee 芯片,其支持的频段为IEEE802.15.4 标准ISM(2.4-2.5GHz)。该模块最大的特点是具备完整的软硬件生态链,因此可快速应用于工业控制、数据采集、农业控制、矿区人员定位、智能家居和智能遥控器等场合。

  Fastzigbee 的终端节点负责传感设备的数据采集,一般是使用电池供电间歇工作,要求设备功耗很低;Fastzigbee 的路由节点负责信号的中继,当终端节点信号不能直接到达网关节点时,由路由节点负责终端节点信号的中继,路由节点还有一个功能是给终端节点提供多条信号路径,保证信号传递的健壮性,路由节点不能休眠;Fastzigbee 网关节点负责把终端节点采集的数据上传到云端服务器,网关节点可使用有线G 网络传输采集数据到云端服务器。组建Fastzigbee 网络需配置几个重要的参数。

  通道号决定了zigbee 网络使用哪个无线频率工作,zigbee 可工作在2.4GHz(全球流行)、●868MHz(欧洲流行)、915MHz(美国流行)3 个频段上。2.4GHz 频段的zigbee 网络使用的频率范围从2405MHz~2480MHz,共分为16 个通道,通道号从11~26,每个通道的中心频率间隔是5MHz。同一个zigbee 网络的所有节点必须工作在同一个通道,通过把两个不同的zigbee 网络分配在不同的通道上,可以把两个不同的网络物理上隔离,▪️•★杜绝了两个不同网络的无线. 节点类型

  Fastzigbee 网络把zigbee 节点分为两种类型:终端节点和路由节点。终端节点是负责执行具体功能的节点,该节点需要休眠;路由节点是负责信号的中继,当终端节点间信号不可达时,可通过加装路由节点实现信号的中继,增加无线的传输距离。Fastzigbee 网络是一个对等网路,★△◁◁▽▼所有终端节点和路由节点都是对等的,都能相互收发数据,不需要像传统的zigbee网络一样需要有一个协调器建立网络,对等网络使网络组建更加简单、稳定可靠。

  PanID 为zigbee 的网络ID 号,通过PanID 可以把两个不同的zigbee 网络区分开来,跟通道号不同的是,PanID 只是逻辑上把两个网络区分开来,如果两个不同PanID 的网络工作在同一个通道下,也会造成相互的无线. 网络地址

  9.2.3 zigbee 初始化AMetal 平台已经支持ZM516X 模块,可以直接使用相应的API 完成相关网络参数的配置与收发数据,用户无需关心底层的通信协议。在使用各个功能函数前必须先完成初始化,其函数原型(am_zm516x.h)为:该函数意在获取ZM516X 模块的实例句柄,其中,p_dev 为指向am_zm516x_dev_t 类型实例的指针,p_devinfo 为指向am_zm516x_devinfo_t 类型实例信息的指针,uart_handle为与zigbee 模块通信使用的串口句柄。

  为了提高数据处理的效率和确保接收数据不会因为正在处理事务而丢失,zigbee 模块的数据发送和接收都需要一个用于缓存数据的缓冲区,缓冲区的实际大小由用户根据实际情况指定,建议在256 字节以上,一般设置为256 字节。p_txbuf 和txbuf_size 描述了发送缓冲区的首地址和大小,p_rxbuf 和rxbuf_size 描述了接收缓冲区的首地址和大小。比如,分别定义其大小为256 字节的缓冲区供发送和接收使用:

  其中,g_zm516x_txbuf[128]为用户自定义的数组空间,供发送使用,充当发送缓冲区,其地址(数组名g_zm516x_txbuf 或首元素地址&g_zm516x_txbuf[0])作为实例信息中p_txbuf成员的值,数组大小作为实例信息中txbuf_size 成员的值。同理,g_zm516x_rxbuf[256]充当接收缓冲区,其地址作为实例信息中p_rxbuf 成员的值,数组大小作为实例信息中rxbuf_size成员的值。基于以上信息,实例信息可以定义如下:

  其中,g_zm516x_devinfo 为用户自定义的实例信息,★▽…◇其地址作为p_devinfo 的实参传递。

  若返回值为NULL,说明初始化失败;若返回值不为NULL,说明返回了一个有效的handle。基于模块化编程思想,将初始化相关的实例、实例信息等的定义存放到ZM516X 的配置文件(am_hwconf_zm516x.c)中,通过头文件(am_hwconf_zm516x.h)引出实例初始化函数接口,源文件和头文件的程序范例分别详见程序清单9.34 和程序清单9.35。

  后续只需要使用无参数的实例初始化函数即可获取到ZM516X 的实例句柄。即:

  9.2.4 zigbee 配置接口AMetal 提供了10 个ZM516X 模块配置相关的接口函数,用户可以直接使用这些接口函数完成zigbee 模块的配置,详见表9.7。表9.7 ZM516X 模块配置接口函数

  其中,p_info 是用于获取配置信息的指针,am_zm516x_cfg_info_t 为配置信息结构体的类型,包含了ZM516X 模块所有的永久配置参数的信息,其定义详见程序清单9.36。

  该函数用于修改当前永久配置参数的信息,修改后的配置信息在掉电后不会丢失,其函数原型为:

  其中,p_info 是指向配置信息的指针。在函数执行完毕后,如果要想配置参数生效,需要执行模块复位函数去复位模块,让模块重新加载新的配置参数运行,修改本地配置的范例程序详见程序清单9.38。

  复位函数让用户可以对模块执行复位操作,如用户使用am_zm516x_cfg_info_set()函数修改配置后,需要执行模块复位函数,让模块复位后重新加载新的参数运行。模块复位的范例程序详见程序清单9.39。

  该函数用于将ZM516X 模块的永久参数恢复为出厂的默认参数,其函数原型为:

  该函数用于在系统运行过程中临时改变ZM516X 模块的通道号,其函数原型为:

  该函数设置的通道号仅临时有效,模块重新启动(掉电重启或软件复位)后,该设置将丢失,模块会重新使用永久参数配置信息中的通道号。设置模块通道号的范例程序详见程序清单9.41。•☆■▲

  该函数用于在系统运行过程中临时改变ZM516X 模块的目的地址,其函数原型为:

  其中,p_addr 指向按字节存放的网络地址的缓冲区,addr_size 指定地址的长度。如目标地址为0x2002,则其zigbee 模块地址可以定义如下:

  该函数设置的目的地址仅临时有效,模块重新启动后,该设置将丢失,■□模块会重新使用永久参数配置信息中的目的地址。设置模块目的地址的范例程序详见程序清单9.42。

  ZM516X 模块提供的是透明的数据传输通道,如果只有两个模块进行通信,就不用关心接收到的数据是从哪个模块发送过来的,○▲但如果是接收多个模块的数据,用户想知道当前接收到的数据到底是从哪个模块发过来的,就可以使用该函数设置显示接收数据的来源,其函数原型为:

  其中,flag 为包头显示标志,当其值为TRUE 时,表示当模块收到一帧数据时,数据包的前2 个字节为数据包源节点的网络地址,用户就可以区分当前接收到的数据是从哪个模块发送过来的;反之,若值为FLASE,★◇▽▼•则不会增加前2 个字节来表示数据包源节点的网络地址。该设置仅临时有效,模块重新启动后,设置的信息将丢失。设置模块包头显示的范例程序详见程序清单9.43。

  模块进入休眠后不保存临时的参数配置,◆▼通过复位模块函数可以唤醒模块。使模块进入休眠的范例程序详见程序清单9.44。

  ZM516X 模块支持单播(默认)和广播两种通讯模式,使用该函数可以改变使用的通讯模式,其函数原型为:

  该函数设置的通讯模式仅临时有效,模块重新启动后,该设置将丢失。设置模块通讯方式的范例程序详见程序清单9.45。

  该函数用于读取指定地址的节点与本地节点之间的信号强度,用于评估两个节点间链路的质量,其函数原型为:

  其中,*p_zb_addr 是指向目标节点的zigbee 模块地址的指针,p_signal 用于得到信号强度。读取模块信号强度的范例程序详见程序清单9.46。

  9.2.5 zigbee 数据传输接口数据传输接口实现了数据的透传,数据传输包含数据的发送与接收,其接口详见表9.9。表9.9 ZM516X 数据传输接口函数(am_zm516x.h)

  ZM516X 模块在参数配置好后提供给用户是一个透明的通道,用户只需往ZM516X 模块的串口发送数据,模块就会把数据发送到配置好的目的地址,AMetal 提供了专门的发送数据接口函数,用户只需调用该接口即可完成用户数据的发送,该函数原型为:

  ZM516X 模块发送函数调用的是带有环形队列的串口发送函数,环形队列的长度在驱动初始化函数里定义。发送的数据指针定义为void *,用户可发送指定长度的任意类型的数据。

  AMetal 也提供了专门的接收数据接口函数,用户只需调用该接口函数即可完成用户数据的接收,该函数原型为:

  接收函数调用的是带有环形队列的串口接收函数,用户需根据系统的需要在驱动初始化函数里定义环形队列的长度。接收函数存放数据的指针定义为void *,◇•■★▼可将接收的数据放在任意类型的数据缓存里。接收数据的范例程序详见程序清单9.48。

  其中一个模块配置本地网络地址为0x2001,目标网络地址为0x2002,另一个模块配置本地网络地址为0x2002,目标网络地址为0x2001,两个模块间隔1s 发送一次数据,然后接收对方的数据,将接收到的数据打印出来,详见程序清单9.49。

  程序中ZM516X 模块的数据接收函数接收超时时间为10ms,snd_tick 累加到100 后,既时间累加到1s 后调用一次数据发送函数,向目标节点发送一次数据。上述应用程序将本地网络地址配置为0x2001,目标网络地址配置为0x2002。而另一个模块的地址恰恰是相反的,因此另一模块的程序需要修改程序清单9.49(20 ~ 23)如下:

  9.2.6 应用案例AM824ZB 是广州致远电子有限公司基于AW824P2EF 开发的zigbee 二次开发评估板。评估板集成了多种实验用的电路,如看门狗、蜂鸣器、数字温度传感器、热敏电阻、按键等,方便用户使用zigbee 进行无线通讯的交互实验。AM824ZB 开发套件包括两块AM824ZB 开发板、MiniCK100 仿真器和两根天线用于远距离组网应用。AM824ZB 开发板的示意图详见图9.9,主控核心为AW824P2EF,详见广州致远电子有限公司网站()。

  其完整资料详见(广州致远电子有限公司)和(广州周立功单片机科技有限公司)网站,索取样品请联系各地办事处。

  在这里,首先根据参数,完成本地地址和通信目标地址的配置,配置完成后,通过模块复位使设置生效,然后在while(1)主循环中检测是否有按键按下,按键按下时,则发送字符串“key_pressed”,接着接收数据,若接收到“key_pressed”,则翻转本地LED0 的状态。为了便于主程序使用,将其接口声明到app_led_control.h 文件中,详见程序清单9.51。

  程序清单9.51 应用程序接口声明(app_led_control.h)

  为了便于区分,特将两块板分别称为A 板和B 板。其中,A 板的网络地址为0x2001,目标地址为0x2002,详见程序清单9.52。

  B 板的网络地址为0x2002,目标地址为0x2001,详见程序清单9.53。Zigbee蓝牙无线模块设计那些难点知道多少?

分享新闻到:

更多阅读

Zigbee蓝牙无线模块设计那些难

秒速时时彩 2019-12-08
秒速时时彩 周立功教授新书《面向AMetal框架与接口的编程(上)》,对AMetal框......查看全文

一个将Wi-Fi和蓝牙连接组合在单

秒速时时彩 2019-12-08
在设计电子产品项目或产品时,电子产品经常需要能够与其他设备进行通信。它......查看全文

2018年一级建造师《通信与广电

行业动态 2019-12-08
一级建造师合格分数线年一级建造师《通信与广电》执业范围及挂靠价格。虽然......查看全文
返回全部新闻
扫描二维码分享到微信
确 认

友情链接:

Copyright 2019 秒速时时彩开奖_首页_最权威官网 苏ICP12345698

网站地图
扫描二维码关注我们:AB模版网
确 认