微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > 射频无线通信设计 > ZDO层的优化

ZDO层的优化

时间:10-02 整理:3721RD 点击:
LZ经验之谈,真不错,能详细点就好了。

另请教,在多个网络并存的情况下,节点怎么判断自己要加入哪个协调器,协调器的PANID是随机的

PANID一定要随机,不能写死,如果在程序里面写死,协调器会跳到另一个PANID。我以前搞过别人破坏,在截获别人PANID后,我启动了一个与之相同PANID的协调器,他的节点全部加到我的协调器里面来了。

ZMAC_CB.C里面有个事件MAC_MLME_ASSOCIATE_IND,协调器可以看到入网申请的节点物理地址。

能大概解释一下组网的过程么,从协调器开始还是子节点发起

在协调器端输入节点的物理地址,我们的节点传感器全部用杰士邦包死的,不留任何接口。

"在协调器端输入节点的物理地址,我们的节点传感器全部用杰士邦包死的,不留任何接口"

楼主是做什么设备的,协调器上设置白名单,是可以区分哪个节点可以加入,可是这样做岂不是操作很麻烦。
节点传感器封死了,以后程序升级怎么办?考虑过OTA吗?

您有什么好的办法么?请指教

指教谈不上,我采取的办法是固定PANID,每个网络的设备的PANID设置成相同,协调器只接收属于该网络的设备。OTA功能正在实验中。

这样的话不是每组网都要分开下载程序,有办法通过跳线或其他什么指定PANID么

程序是一样的,PANID等网络参数可以通过像你所说的用跳线来选择的方式,我是采用的串口设置来实现的。

TI例子里是在那个文件参数里面配置的?能给个例子么?

找到了,在cfg文件,我想说的是,那是个宏定义,我应该修改那个变量呢
/* Define the default PAN ID.
*
* Setting this to a value other than 0xFFFF causes
* ZDO_COORD to use this value as its PAN ID and
* Routers and end devices to join PAN with this ID
*/
-DZDAPP_CONFIG_PAN_ID=0xFFFF

ZDAPP_CONFIG_PAN_ID这个数值在程序启动时赋值给了变量zgConfigPANID :
uint16 zgConfigPANID = ZDAPP_CONFIG_PAN_ID;
利用串口通信修改变量zgConfigPANID ,并保存在NV区中,以后程序每次启动都从NV区中读这个参数就可以了。

我们的产品,要考虑批量生产的。而且生产线上的工人和最终用户的文化程度都不高。录入白名单的方式很简单,贴一张写有IEEE地址的RFID就可以了。

你这种方法容易受到攻击,别人也设置一个和你PANID相同的协调器,你的协调器就没法用了。

你说的攻击的情况确实有可能发生,但是多数情况下是用户使用不当造成的,比如设置了两个相同网络参数的设备。但是只要使用好了,还没有人闲着没事来攻击你的设备,毕竟不是用在什么特关键的场合。
比较感兴趣您说的设置白名单的方法,不知道你的协调器端是如何操作的,按键录入?还是有上位机软件?另外,你说的IEEE地址是芯片中的Primary地址吗,如果是的话,是不是设备生产出来后还需要手动读出设备的这个IEEE地址?

协调器有串口,接一个读卡器。
修改烧写软件,在烧写hex的时候把物理地址读出来,写到RFID卡上面。
你那种又是怎么去设置PANID的?PANID不可靠,用Ext PANID可靠。我们先前用过这种方法,不过缺点是节点上面要保留串口或者其它输入口,一不方便生产,二不方便使用。

不太了解你的应用环境,所以不好评论你的读卡器的使用方法。
对于你说的extendedPANID,这个我没有用过,在协议栈中搜索了一下,发现也是一个8字节的数组,感觉跟设备的IEEE地址类似,这个是指的是Zigbee网络中协调器的IEEE地址吗?新加入网络的设备会判断协调器的IEEE地址是否是自己已设定的extendedPANID数值,是则加入,不是则拒绝加入?是这样子的吗?请指教。
节点设置参数的问题,我们采用了串口数据传输的方式,考虑采用无线通信的方式,这个正在实验中,不知你有什么好的办法没有?

我们是做消费电子产品,可能和你实验室产品不一样。
另外我们要为售后服务考虑,我们不会向负责售后服务的代理商提供源代码,也不会派出程序员去用户那里(用户可能是阿拉胡阿克吧)

学习

学习

这个有TI 官方的更新吗

学习学习

学习了,谢谢分享

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top