标题:
求救关于mc13192发射功率问题
[打印本页]
作者:
kingbs
时间:
2007-5-15 15:35
标题:
求救关于mc13192发射功率问题
求救:
MC13192的MAX_POWER 是3~5dbm而节点每次收到包的LQI都是95dbm左右,
请问那位大侠知道原因,为什么接收到的LQI比最大发射功率还大?
这跟天线增益问题有关吗?
谢谢!
[glow=255,red,2]文字[/glow]
作者:
jimmytan
时间:
2007-5-15 16:00
我想你确定收到的功率是95dbm吗?mc13192的最大发射功率一般是3.6dbm,接收到的功率根据距离的不同会不一样。mc13192的接收灵敏度是-92dbm,也就是说在-92dbm的信号下,还可以保证1%的误码率。要是低于-92dbm,信号就很弱了,误码率也会很高。一般来说,接收到的信号强度大概是-20dbm到-92dbm.我想你读到的LQI是一个读数,它和dbm之间还是需要换算的。-LQI/2 dbm,所以你的读数是95的话,正确的功率应该是,-95/2dbm.
作者:
kingbs
时间:
2007-5-15 22:04
非常感谢 jimmytan的回答,你说的很对,忘记做运算了应该是:,-95/2dbm.
我还有个问题,功率调节函数SMACRM中定义, MLMEMC13192PAOutputAdjust(UINT8);有16个等级 0-15,参数也应该是0-15,但是为什么在pub_def.h定义的 MAX_POWER 为100,MIN_POWER 为 50,并且使用 MLMEMC13192PAOutputAdjust(MAX_POWER );而不会发生OVERFLOW的错误吗!
作者:
jimmytan
时间:
2007-5-16 10:32
这是两种不同的表达方式,如果用0-15共16个不同的等级表示的话,分别表达不同的功率值,你可以在SMACRM的表中,分别查到对应的功率之。如果用这种方式表示的话,返回值大于15的话,就会OVERFLOW.另外一种表达方式,是用MAX_POWER,MIN_POWER,NOMIAL_POWER表示,这三种功率代表三种不同的功率值,你可以在程序中查到它们分别对应的功率。在pub_def.h中,应用的是MAX_POWER,MIN_POWER,NOMIAL_POWER,都在正常的功率范围之内。
作者:
kingbs
时间:
2007-5-16 16:18
应该该是两种表达方式,但是,我在分别使用MAX_POWER 和15作参数发送数据包时,接收到的LQI值相差很大,MAX_POWER 比15的接收能量大约小11个dbm,大概只有参数为10的能量值!
请问:
为什么MAX_POWER不是最大的功率值呢?这种模式适合用在什么情况下?
作者:
jimmytan
时间:
2007-5-16 23:46
你可以在程序里面去查一下MAX_POWER的具体设置,我记得好像不是最大(4dbm),而是2.7dbm.你可以具体看一下。另外,你在测试的时候,LQI的值可能会跟你的测试环境会有一些误差。你需要保证两种测试下的条件要完全一样,才有比较性。
作者:
kingbs
时间:
2007-5-18 15:56
jimmytan说的很对,我做比较时,充分考虑到试验环境的问题,保证了试验环境相同,MAX_POWER确实不是最大功率。
调节发射功率的物理层源代码如下,涉及到一些寄存器的值,比较复杂。我看不太懂MAX_POWER的确切值,麻烦高手看看!
UINT8 PLMEMC13192PAOutputAdjust(UINT8 u8RequestedPAValue)
{
UINT16 u16Reg;
UINT8 u8PAValue;
switch (u8RequestedPAValue)
{
case MAX_POWER: /* Sets the PA drive level and PA gain to MAX */
u8PAValue = 0xFF;
break;
case MIN_POWER:
u8PAValue = 0x00; /* Sets the PA drive level and PA gain to MIN */
break;
default:
if (u8RequestedPAValue > 15) {
return OVERFLOW;
}
else {
u8PAValue = u8RequestedPAValue;
}
break;
}
u16Reg = SPIDrvRead(PA_ADJUST_ADDR); /*
* Read the current value of GAIN
* Register
*/
u16Reg &= 0xFF00;
if ((u8RequestedPAValue == MAX_POWER) || (u8RequestedPAValue == MIN_POWER)){
u16Reg |= u8PAValue;
}
else {
u16Reg |= ((u8PAValue << 4) | 0x000C);
}
SPIDrvWrite(PA_ADJUST_ADDR, u16Reg);
return SUCCESS;
}
作者:
jimmytan
时间:
2007-6-4 16:44
你可以查看mc1321x RM文档,其中的寄存器12有具体设置功率的说明。
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/)
Powered by Discuz! 7.0.0