GB2530 H S 模块打开PA方法
| GB2530 H S 模块打开PA方法 |
| 新闻来源于:gbanadmin 发表于:2014-1-14 16:21:24 浏览6708次 |
|
有很多人回在使用ZStack 协议的时候经常发现距离稍微一大,就掉线或者通讯不稳定,首先应该检查的是程序内部PA是否已经打开,因为在H/S模块内部,CC2530天线部分首先进入PA芯片,然后通过PA芯片放大后在到天线,所以,如果PA没有打开,天线等于没有,所以效果会很差。 在ZStack 工程中,hal_board_cfg.h 文件中有关于PA的配置部分说明,如下
/* ------------------------------------------------------------------------------------------------
* CC2590/CC2591 support
*
* Define HAL_PA_LNA_CC2590 if CC2530+CC2590EM is used
* Define HAL_PA_LNA if CC2530+CC2591EM is used
* Note that only one of them can be defined
* ------------------------------------------------------------------------------------------------
*/
#define xHAL_PA_LNA
#define xHAL_PA_LNA_CC2590
由于H/S模块采用的是CC2591和2401,控制方式和CC2591的方式是一样的, 区别就是S模块不需要控制接收增益了,就是程序里P0_7脚解放出来可以使用了。但对于PA的使用部分是一样的。 这里我们应该定义HAL_PA_LNA,可以看到程序定义的地方加了一个“x” 我们只需要把前面的X去掉就可以了。
改为如下:
#define HAL_PA_LNA
#define xHAL_PA_LNA_CC2590
这样,我们就打开了PA部分。 另外对于S模块,由于已经取消了内部的32.768的晶振 所以注意
/* 32 kHz clock source select in CLKCONCMD */
#if !defined (OSC32K_CRYSTAL_INSTALLED) || (defined (OSC32K_CRYSTAL_INSTALLED) && (OSC32K_CRYSTAL_INSTALLED == TRUE))
#define OSC_32KHZ 0x00 /* external 32 KHz xosc */
#else
#define OSC_32KHZ 0x80 /* internal 32 KHz rcosc */
#endif
如果要使用internal 32 KHz rcosc,则需要定义OSC32K_CRYSTAL_INSTALLED为FALSE 。
在条件编译前增加
#define OSC32K_CRYSTAL_INSTALLED FALSE 则定义使用内部RC震荡源了。
再测试通讯,这样通讯就应该正常了,如果还不正常使用SmartRF Studio 7 测试是否模块损坏。SmartRF Studio 7的使用请参照开发板使用说明
如果是S模块,由于不需要P0_7来控制PA的接收增益,所以,在使用PA定义后,如果需要使用此IO脚。则在
#define HAL_BOARD_INIT() \
{ \
uint16 i; \
\
SLEEPCMD &= ~OSC_PD; /* turn on 16MHz RC and 32MHz XOSC */ \
while (!(SLEEPSTA & XOSC_STB)); /* wait for 32MHz XOSC stable */ \
asm("NOP"); /* chip bug workaround */ \
for (i=0; i<504; i++) asm("NOP"); /* Require 63us delay for all revs */ \
CLKCONCMD = (CLKCONCMD_32MHZ | OSC_32KHZ); /* Select 32MHz XOSC and the source for 32K clock */ \
while (CLKCONSTA != (CLKCONCMD_32MHZ | OSC_32KHZ)); /* Wait for the change to be effective */ \
SLEEPCMD |= OSC_PD; /* turn off 16MHz RC */ \
\
/* Turn on cache prefetch mode */ \
PREFETCH_ENABLE(); \
\
/* set direction for GPIO outputs */ \
LED1_DDR |= LED1_BV; \
\
/* Set PA/LNA HGM control P0_7 */ \
P0DIR |= BV(7); \
\
/* configure tristates */ \
P0INP |= PUSH2_BV; \
\
/* setup RF frontend if necessary */ \
HAL_BOARD_RF_FRONTEND_SETUP(); \
}
删除绿色的2行内容,并且在
mac_radio_defs.h文件中
#define HAL_PA_LNA_RX_HGM() st( P0_7 = 1; )
#define HAL_PA_LNA_RX_LGM() st( P0_7 = 0; )
部分修改为
#define HAL_PA_LNA_RX_HGM()
#define HAL_PA_LNA_RX_LGM()
这样,在无线发送和接收的P0_7 就不会影响到了。
|

浙公网安备 33010602011771号