您的位置:首页 > 其它

CC2530调试过程中遇到的问题们

2013-07-21 20:49 99 查看
应用场景描述:

多个发送端在不同的信道上发送信息(11~26)信道,接收端轮询所有信道(11~26),若有信号,则接收,若无信号则继续轮询。形成多个点对点的收发系统。

一、问题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调制,确定问题为发送序列过于有规律的问题。

clear all
% close all

D=[];
Data=[];
% data_hex='5555CCCCCCCCCCCCCCCCCCCCCCCCCCAAAA';
%  data_hex='5555BBBBBBBBBBBBBBBBBBBBBBBBBBAAAA';
data_hex='51555086F61C3CA2F7C71A4B4C046ADAAAA';
data_map=[
'11011001110000110101001000101110';
'11101101100111000011010100100010';
'00101110110110011100001101010010';
'00100010111011011001110000110101';
'01010010001011101101100111000011';
'00110101001000101110110110011100';
'11000011010100100010111011011001';
'10011100001101010010001011101101';
'10001100100101100000011101111011';
'10111000110010010110000001110111';
'01111011100011001001011000000111';
'01110111101110001100100101100000';
'00000111011110111000110010010110';
'01100000011101111011100011001001';
'10010110000001110111101110001100';
'11001001011000000111011110111000'];
for i=1:length(data_hex)
tmp=hex2dec(data_hex(i));
Data=[Data data_map(tmp+1,:)];
end

for i=1:2:length(Data)
t=[Data(i) Data(i+1)];
T2=bin2dec(t);
D=[D repmat(T2,1,fs/fb)];
end

modObj = modem.oqpskmod;
M1=modulate(modObj,D');
M=M1(3:length(M1));

N1=0:length(M)/2-1;
N2=-length(M)/2:-1;
N=[N1,N2];
figure,plot(N,abs(fft(M)));
figure,plot(real(M),imag(M),'*');


View Code
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: