This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

mesh1.0 开启HAL_PA_LNA ,LED受影响

Other Parts Discussed in Thread: CC2590, CC2592

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

#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都正常了。

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

  • PIN冲突了,你修改一下led的PIN就可以了。
  • 你好,是否可以从PA这一边修改。因为硬件P0.0已经固定是LED2了。PA使用RXF2401,用到的脚P1.1和P1.2。
  • 共用到预设的LED脚位。貌似PA不会占用到P0.0?请问可以从哪里找到被设置的代码或者改修改哪部分代码?谢谢
  • 不建议,那样要修改PA程序,不如修改led 简单。
    www.ti.com.cn/.../swra465a.pdf
  • 如果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;

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

    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初始化?

  • 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_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
    #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_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(1)
    #define LED2_SBIT P1_1
    #define LED2_DDR P1DIR
    #define LED2_POLARITY ACTIVE_HIGH

    /* 3 - Yellow */
    #define LED3_BV BV(4)
    #define LED3_SBIT P1_4
    #define LED3_DDR P1DIR
    #define LED3_POLARITY ACTIVE_HIGH
    #endif
  • 那应该没问题的。

    硬件配置:

    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

  • 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 );
  • 您好,目前问题初步解决了。您提出的第一点改成1,2,3,我都试过,无影响。

    后面我发现这一段代码,于是改为红色部分。蓝灯正常闪烁。应该是这个点没改到的原因。

    #elif defined (HAL_BOARD_CC2530EB_REV13) || defined (HAL_PA_LNA) || \
    defined (HAL_PA_LNA_CC2590)
    #define HAL_TURN_OFF_LED1()     st( LED1_SBIT = LED1_POLARITY (0); )
    #define HAL_TURN_OFF_LED2()     st( LED2_SBIT = LED2_POLARITY (0); )      //HAL_TURN_OFF_LED1()
    #define HAL_TURN_OFF_LED3()     HAL_TURN_OFF_LED1()
    #define HAL_TURN_OFF_LED4()     HAL_TURN_OFF_LED1()

    #define HAL_TURN_ON_LED1()     st( LED1_SBIT = LED1_POLARITY (1); )
    #define HAL_TURN_ON_LED2()     st( LED2_SBIT = LED2_POLARITY (1); )       //HAL_TURN_ON_LED1()
    #define HAL_TURN_ON_LED3()     HAL_TURN_ON_LED1()
    #define HAL_TURN_ON_LED4()     HAL_TURN_ON_LED1()

    #define HAL_TOGGLE_LED1()       st( if (LED1_SBIT) { LED1_SBIT = 0; } else { LED1_SBIT = 1;} )
    #define HAL_TOGGLE_LED2()       st( if (LED2_SBIT) { LED2_SBIT = 0; } else { LED2_SBIT = 1;} )    //HAL_TOGGLE_LED1()
    #define HAL_TOGGLE_LED3()       HAL_TOGGLE_LED1()
    #define HAL_TOGGLE_LED4()       HAL_TOGGLE_LED1()

    #define HAL_STATE_LED1()          (LED1_POLARITY (LED1_SBIT))
    #define HAL_STATE_LED2()          (LED2_POLARITY (LED2_SBIT))     //HAL_STATE_LED1()
    #define HAL_STATE_LED3()           HAL_STATE_LED1()
    #define HAL_STATE_LED4()           HAL_STATE_LED1()

  • 對,这一段代码也需要修改