BasicRF 简析(三:halRfInit())

halRfInit()中调用了halPaLnaInit()和halRfEnableRxInterrupt(),由于在实际使用过程中涉及到 PA部分为RFX2401的模块,因此对halPaLnaInit()先在这里做下简单说明(木有使用过2591的模块 - -!)。

static void halPaLnaInit(void)
{
#if INCLUDE_PA==2591          //对于使用2591的模块,可以通过宏定义INCLUDE_PA为2591来启用PA模块; 
    // Initialize CC2591 to RX high gain mode
    static uint8 fFirst= TRUE;

    if(fFirst) {
        AGCCTRL1  = 0x15;
        FSCAL1 = 0x0; 
        RFC_OBS_CTRL0 = 0x68;
        RFC_OBS_CTRL1 = 0x6A;
        OBSSEL1 = 0xFB;
        OBSSEL4 = 0xFC;
        P0DIR |= 0x80;
        halRfSetGain(HAL_RF_GAIN_HIGH);
    }

#else // do nothing
#endif
}

对于使用RFX2401的模块,其中RFX2401的 TX/RXN 和 CE针分别为P1.2和P2.0,并参照 2591的寄存器设置做了如下更改:

static void halPaLnaInit(void)
{
#if INCLUDE_PA==2591
    // Initialize CC2591 to RX high gain mode
    static uint8 fFirst= TRUE;

    if(fFirst) {
        AGCCTRL1  = 0x15;
        FSCAL1 = 0x0; 
        RFC_OBS_CTRL0 = 0x68;
        RFC_OBS_CTRL1 = 0x6A;
        OBSSEL1 = 0xFB;
        OBSSEL4 = 0xFC;
        P0DIR |= 0x80;
        halRfSetGain(HAL_RF_GAIN_HIGH);
    }

#else // do nothing
    AGCCTRL1  = 0x15;
    FSCAL1 = 0x00; 
    RFC_OBS_CTRL0 = 0x68;
    //RFC_OBS_CTRL1 = 0x6A;
    OBSSEL2 = 0xFB;          //信号对应针做下修改,具体介绍参看数据手册;
    //OBSSEL4 = 0xFC;
    P2DIR |= 0x01;               //由于该代码是处于接收模式,因此根据2401的真值表,将其设置为高电平(有时间关于2401做下总结:))
    P2 |=0x01;
    halRfSetGain(HAL_RF_GAIN_HIGH);
#endif
}

/***********************************************************************************
* @fn      halRfInit
*
* @brief   Power up, sets default tuning settings, enables autoack, enables random
*          generator.
*
* @param   none
*
* @return  SUCCESS always (for interface compatibility)
*/

uint8 halRfInit(void)
{
    // Enable auto ack and auto crc

    //始能ACK和CRC校验,其中是否自动发送一个ACK取决于FCF相应位是否置一;
    FRMCTRL0 |= (AUTO_ACK | AUTO_CRC);

    // Recommended RX settings

    // 手册中的推荐简单设置
    TXFILTCFG = 0x09;
    AGCCTRL1 = 0x15;
    FSCAL1 = 0x00;

    // Enable random generator -> Not implemented yet

    // Enable CC2591 with High Gain Mode
    halPaLnaInit();

    // Enable RX interrupt

    // 为什么在这块做个RF接收中断的始能???
    halRfEnableRxInterrupt();

    return SUCCESS;           //成功状态是一直返回的- -!
}

总结:貌似没什么总结的,都推到后面了- -!;

另外,halRfInit()在整个项目中存在的意义是什么?

一些成文字性的东西 各种不明白的地方,看来写这东东 意义相当的大:)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值