一、问题1
Ø 问题现象描述:
Zigbee接收端轮询信道,当发送端正常时
实验一:1.若发送端由A信道发,可正确接收;2.若发送端由A+4信道发,则不可正确接收。
实验二:1.若发送端由A信道发,可正确接收;2若发送端由A+2信道发,可正确接收;.3.若发送端由A+4信道发,可正确接收;
以上现象经确认与发送端无关,且接收端硬件复位无用。
Ø 问题分析
1.经过在接收中断中加入LED灯闪,发现切换信道后没有收到信息的原因是压根没有进入接收中断。
2.没有进入中断,说明在从天线接下信号后的处理中,没有正确分辨出信号。且切换信道主要是切换接收频率。所以问题可能频率有关。
3.点对点的情况下不会出现该问题。
4.在CC2530_userguide中找到frequency calibration相关的寄存器RFST的ISRXON指令。(在代码中为由light_switch.c调用的basicRfReceiveOn()。)其作用Enable and calibrate frequency synthesizerfor RX。所以加入basicRfReceiveOn()与basicRfReceiveOff(),便解决问题。
二、问题2
Ø 问题现象描述:
Zigbee发送正常,当加入了basicRfReceiveOn()后,可以接收到所有信道信息,但是个别信道上信息会发生错误。
Ø 问题分析
1.改为点对点,即接收端不轮询。因为加入了basicRfReceiveOn(),同样也会出现问题,所以问题是由basicRfReceiveOn()引起的,而非轮询等。
2.考虑到basicRfReceiveOn()有校正频偏的作用,所以需要一定的时间,加入Delay问题解决。
三、问题3
Ø 问题现象描述:
Zigbee接收端运行一段时间会接收不到数据,经在中断中加入LED灯闪和在接收while中加入打印,确定程序在运行,但没有收到数据。
Ø 问题分析
1.发送端连续发送数据55 55 BB BB BB BB BB BB BB BB BB BB BB BB BB AA AA。
通过MATLAB仿真Zigbee调制,确定问题为发送序列过于有规律的问题。
可知,其频谱如下:
当改为发送随机信号时,其频谱为
四、附:
A. light_switch.c最终版代码
B. ZIGBEE_OQPSK调制MATLAB代码