- 联系我们
-
- 手机:13177883011 &13177779588
- Q Q:157091043 & 623958103
- 淘宝:http://gban.taobao.com/
- 阿里国际站:
- http://zigbee.en.alibaba.com/
- 亿贝:http://stores.ebay.com/w
- szigbeetricoteco?_rdc=1
- 邮箱:sales@gban.cn
- 应用案例 您现在的位置 :首页 -- 应用案例
GB2530 H S 模块打开PA方法 新闻来源于:gbanadmin 发表于:2014-1-14 16:21:24 浏览10993次 有很多人回在使用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 就不会影响到了。