关于协议栈和下载的若干问题
本人zigbee新手,学习2530和zigbee协议栈中遇到很多问题暂未解决,特整理一下,希望各位能够帮忙看看,讨论讨论解决办法,谢谢。
首先我是要做一个无线测温系统,采用单播形式组网,总共有九个测温模块再加一个协调器,测温模块定时给协调器发送温度传感器AD采样值,然后进入低功耗睡眠状态,协调器收到后加上对应终端的网络地址信息并打包通过串口发送给ARM进行拆包处理,将对应的终端的温度显示在屏幕对应的位置上。
首先,第一个问题是,以前没开低功耗的时候可以准确的周期性发送数据,开了后,周期不对,osal start timerex函数中将时间参数设置为20000,也就是20000ms,即20s,但是通过led灯观察计时周期不是20s,是45s,不知道为什么会出现这个差异情况,而且设置25s或者30s的时候貌似就不发送数据了,估计是实际情况超过了65535这个上限。
其次,第二个问题是工程采用IAR直接仿真下载可以正常工作,但是输出HEX文件通过smart rf flash programmer进行下载后不能正常运行,不知道是不是工程哪里设置错误了。此处放上我的设置里的几个图片。
然后,针对第二个问题,我把2530f256改成8051,编译出错,如下图。
最后,由于软件是采用旧版协议栈和IAR软件开发的,其中的OSAL START TIMEREX函数中只支持最高65s的时间参数,导致一分钟必然唤醒一次,不利于低功耗,我安装新版协议栈(home 1.22a)和IAR软件(9.10.3)后,看到例程里的这个函数已经支持32位时间参数了,这样就可以支持最多50天的睡眠了。然后我将例程里的APP文件全部删掉换成我原来的APP文件,但是最后看这个函数还是只支持16位时间参数,这又是为什么呢?如下图。而且编译不通过有错误。顺便附上几张程序代码。
PS:附件为所有照片。
1) 你可以使用现在新的协议栈,Z-Stack Home 1.2.2a,定时器的位数是32bit的
2) f8w2530.xcl to : // Include these two lines when generating a .hex file for banked code model:
-M(CODE)[(_CODEBANK_START+_FIRST_BANK_ADDR)-(_CODEBANK_END+_FIRST_BANK_ADDR)]*\ _NR_OF_BANKS+_FIRST_BANK_ADDR=0x8000