CC2530+RFX2401啓用功放小結
CC2530+RFX2401如果不開啓功放的話是用不了的,協調器和終端節點是無法建立通信的。我用的協議棧是Z-Stack2.5.1a,啓用功放過程如下。
一、開啓功放。
1.打開HAL–>Target–>CC2530EB–>Config–>hal_board_cfg.h文件
2.然後將#define xHAL_PA_LNA的x去掉開啓功放
二、配置TXEN和RXEN管腳
1.打開MAC–>Low Level–>System–>mac_radio_defs.c文件找到MAC_INTERNAL_API void macRadioTurnOnPower(void)函數裏的PAEN和EN。
PAEN→TXEN,EN→RXEN
2.查看賣家提供的電路圖,如果是TXEN接P1_1,RXEN接P1_4,那就默認不變(這也是協議棧的默認配置),但如果店家給的不是TI推薦的這兩個管腳連接方式,那就需要改動,比如用七星蟲的CC2530+RFX2401,該店提供的帶PA的核心板是TXEN接P1_5,RXEN接P1_4,那麼更改配置中對應的OBSSEL1爲OBSSEL5即可默認:
默認:
/* P1_1 -> PAEN */
RFC_OBS_CTRL0 = RFC_OBS_CTRL_PA_PD_INV;
OBSSEL1 = OBSSEL_OBS_CTRL0;
/* P1_4 -> EN (LNA control) */
RFC_OBS_CTRL1 = RFC_OBS_CTRL_LNAMIX_PD_INV;
OBSSEL4 = OBSSEL_OBS_CTRL1;
更改爲:
/* P1_5 -> PAEN */
RFC_OBS_CTRL0 = RFC_OBS_CTRL_PA_PD_INV;
OBSSEL5 = OBSSEL_OBS_CTRL0;
/* P1_4 -> EN (LNA control) */
RFC_OBS_CTRL1 = RFC_OBS_CTRL_LNAMIX_PD_INV;
OBSSEL4 = OBSSEL_OBS_CTRL1;
如圖:
同理,如果TXEN和RXEN換成了其他管腳,只需要對應更改爲OBSSEL0~5即可。
以上,功放配置完成了。
附:下面討論一下細節。
OBSSEL1可以右鍵Go to definition of …看到它的範圍,所以說只有OBSSEL0 ~ 5,分別對應P1_0 ~ P1_5管腳。
我在程序中用到了P0_7腳採集傳感器數據,然而根據網上的一些說法,最好把P0_7腳也配置一下,主要就是要註釋掉它(但是我沒註釋時運行起來也沒什麼影響,但爲了保險起見,爲了能讓我的P0_7成爲一個自由IO口我就配置一下吧)
打開HAL–>Target–>CC2530EB–>Config–>hal_board_cfg.h文件找到Set PA/LNA HGM control P0_7
然後,我們註釋掉這一行
接下來,我們再打開MAC–>Low Level–>System–>mac_radio_defs.h文件,找到PA/LNA control
將兩行代碼
/* ----------- PA/LNA control ---------- */
#define HAL_PA_LNA_RX_HGM() st( P0_7 = 1; )
#define HAL_PA_LNA_RX_LGM() st( P0_7 = 0; )
中的
st( P0_7 = 1; )
st( P0_7 = 0; )
註釋掉
至此,P0_7就變成了自由IO口,之後想怎麼用就怎麼用了。
以上對於CC2530+CC2591同樣適用,方法一樣。
開啓功放的過程其實很簡單,但是在調試的過程中,我也碰到了一個很嚴重的問題,讓我一度以爲自己沒有配置成功,然後把網上的方法試了一遍都不行。後來向Q羣裏的人請教,他們說讓我把板子拿遠一點,然後,我就通上了…
非常神奇…
對於這種現象的解釋是:協調器和終端節點都帶PA的時候,兩個板子靠的太近時輸入功率過大,經過RFX2401內部的LNA後功率進一步增大,進入CC2530時的功率會超過其最大值造成通信阻塞從而通信不上。但拉遠一點(至少30釐米開外)通上之後,距離多近都不會再有影響了。
這個小細節一定要注意!!!