[原创] TI CC2530 配置 外部PA LNA
1362 查看
7 回复
 楼主 | 发布于 2018-06-02 | 只看楼主
分享到:

    新手在初玩TI的zigbee时,如果没有官方的demo板,上手会比较麻烦。因为官方协议栈为了兼容多个demo板,定义了很多宏。自己最初玩CC2530时,在网上买了个CC2530的开发板(其实只能算模块),带CC2592这个FEM。刚买到模块时把Z-Stack中的sample light 和sample switch烧录到板子上时,发现不能发现网络,也无法组网,sniffer只能断断续续的收到一些包,收到的包的RSSI非常低。(Zstack 例程中需要配合ui操作才能配网,我修改为上电后延时1秒开始组网)。

    怀疑可能是FEM并没有正常工作,导致输出信号弱,而且官方例程默认状态是不带PA_LNA的,我还没修改。查看了CC2592的datasheet,这颗FEM的控制引脚有3个,分别是PA_EN,LNA_EN和 HGM。不同工作状态下,真值表如下图。

实测发现CC2592的这几个引脚确实一直为低电平,用示波器抓包也并没有发现有拉高的脉冲。

回去检查买到的模块电路连线,发现PA的引脚不是官方demo板上用的P1.1 P1.0 和 P0.7,而是用的P1.3 P1.4 控制 LNA 和 PA,LGM 好像用的 P0.1。再回到TI 例程,去修改hal_board_cfg.h这个文件(外设配置基本都在这里)。我这里用的FEM 是CC2592,宏定义的位置就在这个文件的头几行。将xHAL_PA_LNA_CC2592 改为 HAL_PA_LNA_CC2592。那么在后续的HAL_BOARD_INIT() 中,首先会配置HGM 的引脚为输出:

  /* Set PA/LNA HGM control P0_7 */                           
  P0DIR |= BV(7);          
这里需要将这个IO改为自己板子上的IO。我用的是BV(1)

然后会调用 MAC_RfFrontendSetup() -->   HAL_PA_LNA_RX_HGM();

此处的  HAL_PA_LNA_RX_HGM(); 用于控制HGM引脚,也需要修改其宏定义,修改为自己板子上的IO

#define HAL_PA_LNA_RX_HGM()                           st( P0_7 = 1; )
#define HAL_PA_LNA_RX_LGM()                           st( P0_7 = 0; )
接下来要配置PA_EN 和 LNA_EN ,配置的地方在mac_radio_defs.c 中的 macRadioTurnOnPower()函数
    else if(paLnaChip == PA_LNA_CC2592)
    {
      /* P1_1 -> PAEN */
      RFC_OBS_CTRL0 = RFC_OBS_CTRL_PA_PD_INV;
      OBSSEL1       = OBSSEL_OBS_CTRL0;
      
      /* P1_0 -> EN (LNA control) */
      RFC_OBS_CTRL1 = RFC_OBS_CTRL_LNAMIX_PD_INV;
      OBSSEL0       = OBSSEL_OBS_CTRL1;
    }  

CC2530支持3个调试信号的输出,rfc_obs_sig0, rfc_obs_sig1, and rfc_obs_sig2 这三个信号具体输出什么信号,通过对应的 RFC_OBS_CTRLx 来控制,通过查阅CC2530 user guide 可以知道。这三个调试信号的IO 只能通过 P1.0~P1.5 输出,配置方式为修改 相应的OBSSELx。

官方代码是用的P 1.1 和P1.0,网上模块上时P1.3(PA_EN) 和 1.4(LNA_EN),按照上面规则修改成下面的配置:
    else if(paLnaChip == PA_LNA_CC2592)
    {
      /* P1_3 -> PAEN */
      RFC_OBS_CTRL0 = RFC_OBS_CTRL_PA_PD_INV;
      OBSSEL3       = OBSSEL_OBS_CTRL0;
      
      /* P1_4 -> EN (LNA control) */
      RFC_OBS_CTRL1 = RFC_OBS_CTRL_LNAMIX_PD_INV;
      OBSSEL4       = OBSSEL_OBS_CTRL1;
    }  

致此,TI CC2530 修改PA LNA 引脚的过程就完成了,三个控制引脚都需要检查一下。修改完过后,可以发现抓包器里面抓到的包的RSSI明显比修改前强,而且用示波器抓控制引脚上的包可以看到周期的脉冲,对应是协议里 mac 层心跳包。(data poll)

(0 ) (0 )

嵌入式开发

回复 举报

回复于 2018-06-03 沙发

不错,感谢楼主分享;
(0 )
评论 (1) 举报

回复于 2018-06-03 2#

感谢楼主分享;
(0 )
评论 (0) 举报

回复于 2018-06-04 3#

多谢分享!!!
(0 )
评论 (0) 举报

回复于 2018-06-04 4#

支持下,谢谢分享!
(0 )
评论 (0) 举报

回复于 2018-06-20 5#

感谢分享!有需要机械臂,电源,硬件电路设计,软件编程,开发板等各种定制的可以私聊我哦,相互学习,共同进步。
(0 )
评论 (0) 举报

回复于 2018-06-28 6#

感谢分享,欢迎关注我,资料持续更新中。有需要机械臂,电源,硬件电路设计,软件编程,开发板等各种定制的可以私聊我哦,相互学习,共同进步。
(0 )
评论 (0) 举报

回复于 2018-07-14 7#

谢谢分享!!!
(0 )
评论 (0) 举报
  • 发表回复
    0/3000





    举报

    请选择举报类别

    • 广告垃圾
    • 违规内容
    • 恶意灌水
    • 重复发帖

    全部板块

    返回顶部