TI中文支持网
TI专业的中文技术问题搜集分享网站

mesh1.0 开启HAL_PA_LNA ,LED受影响

使用原协议栈,在无任何其他改动的情况下。做如下修改

#define HAL_PA_LNA

/* 1 – Green P1.0*/
#define LED1_BV       BV(0)
#define LED1_SBIT    P1_0
#define LED1_DDR    P1DIR
#define LED1_POLARITY    ACTIVE_HIGH

#if defined (HAL_BOARD_CC2530EB_REV17)
/* 2 – Red P0.0*/
#define LED2_BV      BV(0)
#define LED2_SBIT   P0_0
#define LED2_DDR   P0DIR
#define LED2_POLARITY    ACTIVE_LOW

结果发现LED1正常,LED2不亮。后面把#define x HAL_PA_LNA  关闭。则两个LED都正常了。

YiKai Chen:

使能HAL_PA_LNA會共用到預設的LED腳位所以LED2會被不動作

Alvin Chen:

PIN冲突了,你修改一下led的PIN就可以了。

user5032796:

回复 Alvin Chen:

你好,是否可以从PA这一边修改。因为硬件P0.0已经固定是LED2了。PA使用RXF2401,用到的脚P1.1和P1.2。

user5032796:

回复 YiKai Chen:

共用到预设的LED脚位。貌似PA不会占用到P0.0?请问可以从哪里找到被设置的代码或者改修改哪部分代码?谢谢

Alvin Chen:

回复 user5032796:

不建议,那样要修改PA程序,不如修改led 简单。
www.ti.com.cn/…/swra465a.pdf

YiKai Chen:

回复 user5032796:

如果P1.1是PAEN和P1.2是LNA control,可以到macRadioTurnOnPower內修改/* 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_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;OBSSEL2= OBSSEL_OBS_CTRL1;

應該就可以了

user5032796:

回复 YiKai Chen:

按照您说的 修改了,上电闪了一下,然后就熄灭了。

void GenericApp_Init( uint8 task_id )

{ 。。。。

  HalLedBlink ( HAL_LED_1, 0, 50, 1000 );

  HalLedBlink ( HAL_LED_2, 0, 50, 500 );

}。

硬件部分:

LED2是:3.3V连电阻连LED再连到P0.0。 低电平使能。

是否需要在应用层进行IO初始化?

YiKai Chen:

回复 user5032796:

LED的設置你要去修改hal_board_cfg.h下面的程序

#if defined (HAL_BOARD_CC2530EB_REV17) && !defined (HAL_PA_LNA) && \!defined (HAL_PA_LNA_CC2590) && !defined (HAL_PA_LNA_SE2431L) && \!defined (HAL_PA_LNA_CC2592)#define HAL_NUM_LEDS3
#elif defined (HAL_BOARD_CC2530EB_REV13) || defined (HAL_PA_LNA) ||\defined (HAL_PA_LNA_CC2590)|| defined (HAL_PA_LNA_CC2592) || \defined (HAL_PA_LNA_SE2431L)#define HAL_NUM_LEDS1
#else#error Unknown Board Indentifier
#endif

#define HAL_LED_BLINK_DELAY()st( { volatile uint32 i; for (i=0; i<0x5800; i++) { }; } )

/* 1 – Green */
#define LED1_BVBV(0)
#define LED1_SBITP1_0
#define LED1_DDRP1DIR
#define LED1_POLARITYACTIVE_HIGH

#if defined (HAL_BOARD_CC2530EB_REV17)/* 2 – Red */#define LED2_BVBV(1)#define LED2_SBITP1_1#define LED2_DDRP1DIR#define LED2_POLARITYACTIVE_HIGH
/* 3 – Yellow */#define LED3_BVBV(4)#define LED3_SBITP1_4#define LED3_DDRP1DIR#define LED3_POLARITYACTIVE_HIGH
#endif

user5032796:

回复 YiKai Chen:

那应该没问题的。

硬件配置:

RXF2401:TXEN–P1.1         RXEN–P1.2。

LED1:P1.0–电阻–灯–GND      高电平使能

LED2:3.3V–电阻–灯–P0.0       低电平使能

我所有的修改的代码如下(红色为在修改部分):

//LED1和LED2闪烁—————————————————

在GenericApp.c中

void GenericApp_Init( uint8 task_id ){          …

HalLedBlink ( HAL_LED_1, 0, 50, 1000 ); HalLedBlink ( HAL_LED_2, 0, 50, 500 );

}

//开启PA——————————————————————–

在hal_board_cfg.h中

#define HAL_PA_LNA

在mac_radio_defs.c中

MAC_INTERNAL_API void macRadioTurnOnPower(void){         …..

else { /* 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; OBSSEL2 = OBSSEL_OBS_CTRL1; }

}

//LED配置—————————————————————–

在hal_board_cfg.h中

/* 1 – Green */#define LED1_BV BV(0)#define LED1_SBIT P1_0#define LED1_DDR P1DIR#define LED1_POLARITY ACTIVE_HIGH

#if defined (HAL_BOARD_CC2530EB_REV17) /* 2 – Red */ #define LED2_BV BV(0) #define LED2_SBIT P0_0 #define LED2_DDR P0DIR #define LED2_POLARITY ACTIVE_LOW

/* 3 – Yellow */ #define LED3_BV BV(4) #define LED3_SBIT P1_4 #define LED3_DDR P1DIR #define LED3_POLARITY ACTIVE_HIGH#endif

YiKai Chen:

回复 user5032796:

1. 你下面這段程序的HAL_NUM_LEDS有沒有改成3?
#elif defined (HAL_BOARD_CC2530EB_REV13) || defined (HAL_PA_LNA) || \
defined (HAL_PA_LNA_CC2590) || defined (HAL_PA_LNA_CC2592) || \
defined (HAL_PA_LNA_SE2431L)
#define HAL_NUM_LEDS 1
2. 如果你是要讓led2在GenericApp_Init的時候閃一下,HalLedBlink ( HAL_LED_2, 0, 50, 500 ) 應該改成HalLedBlink ( HAL_LED_2, 1, 50, 500 );

赞(0)
未经允许不得转载:TI中文支持网 » mesh1.0 开启HAL_PA_LNA ,LED受影响
分享到: 更多 (0)