原创 2013.6.29 Zigbee组网

2013-6-29 15:57 921 9 9 分类: MCU/ 嵌入式
自从组网碰壁之后就是瓶颈了,今天6.29终于突破瓶颈了!!    
    ST_RadioReceiveIsrCallback函数是必须的,一开始没有把这个函数复制到主函数中,导致了没有把接收到的数据复制出来,所以一直组不了网。
    
    首先是形成网络,当一个模块来到一个陌生的环境中时,形成自己的一个网络,步骤:
    —>初始化网络状态(清掉planet列表里的东西,PAN ID和node ID先设为ff,清掉发送数据队列)
    —>打开radio
    —>轮询11--26信道,得到每个信道里面的能量值,选取那个最大能量的信道,在ST的函数中,先设定某个信道,然后延时256ms稳定,之后读取能量值32次,取最大值
    —>确定信道,打印信道编号和该信道的能量值
    —>通过随机取值的到PAN ID,设置node ID为00,这里的随机取值有一个随机函数halCommonGetRandom(),是从电压值的到的,得到的数很随机就是了
    —>网络状态设为活动状态
   这几个步骤之后,一个sun就建立起来了,接着就是让一个planet加入到这个sun网络中去,步骤:
   —>初始化网络状态(如sun)
   —>打开radio
   —>轮询11--26信道,在每个信道里面发送搜索sun命令,如果这个信道里面有sun,就会得到回复,事例如下
        planet在进入网络命令中发送12 01 C8 EF FF FF FF FF FF FF E9 9F 15 00 02 E1 80 00 01(12表示数据量,有18个数据,01表示发送为数据,C8表示长源地址,短目标地址,搜索sun当然用ff短目标地址啦,EF为序列号,忽略,FF FF为PAN ID,一开始不知道,默认sunPAN ID为ff,FF FF FF FF为目标地址,发给sun,接下来的E9 9F 15 00 02 E1 80 00为源地址,就是该planet的地址,01表示搜索sun,其实还有两位校验码的,没有显示出来)
        sun接收到搜索sun命令后,如果有空位留给planet回应:18 01 CC B0 FF FF E9 9F 15 00 02 E1 80 00 3C A7 AD CA 15 00 02 E1 80 00 02(有24个数据量,长源地址长目标地址,3C AF为sun回应plant sun的PAN ID 最后的02表示我这里有空位啦,可以给你进来)
        planet得到sun许可之后,发送真实加入:16 61 CC F0 3C A7 AD CA 15 00 02 E1 80 00 E9 9F 15 00 02 E1 80 00 03(22个数据量,61表示长源地址长目标地址,在同个PAN中,3C A7就是PAN ID啦,之后就是两个地址,03表示加入网络)
        sun接到planet的加入命令后,在table中安排一个短地址,并发送给planet:18 61 CC B1 3C A7 E9 9F 15 00 02 E1 80 00 AD CA 15 00 02 E1 80 00 04 01 00(这次,有24个数据量,长源地址长目标地址,3C AF为同个PAN ID,之后两个地址,04为承认planet进入 0100是sun安排给planet的短地址)
   —>如果完成了以上步骤,则planet加入sun成功!!
PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
9
关闭 站长推荐上一条 /3 下一条