微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI无线射频设计 > CC1101的IDLE和WOR问题

CC1101的IDLE和WOR问题

时间:12-23 整理:3721RD 点击:

现正用CC1101进行无线产品的研发,接收端和发送端都使用CC1101,现有以下疑问:

1、CC1101是否只能在接收模式和WOR模式下接收?如果在非WOR模式下,用中断的方式接收,已经初始化好了RX接收设置,在IDLE状态下能不能中断接收?

2、接收端使用WOR模式时,发送端进行发送是否应连续发送以提高接收端的接收概率;如果只定时1分钟发1次数据,若未收到数据,500MS后再发送,连续进行数次,这种方式可行吗?

因这两个问题涉及到产品的研发方向,请指点,谢谢!

1.可以进入中断接收模式,需要退出IDLE状态后接收!

2. 对于唤醒模式接收,通常可以采取连续发送三次,接收到有效数据后给反馈信号表示已收到。

设备进入睡眠状态时,先要唤醒睡眠状态,再进行数据接收

不太懂,感兴趣,我是来学习的! 希望又大神帮解答,以后遇到类似问题可以参考借鉴~

1.在空闲状态下的话,设置RX接收唤醒中断就可以了

2.接收和发送最好握手一下   这样比干等的时间要快点。

1.可以利用中断模式,但是比唤醒模式更耗电。

2.一般换醒模式,采用2至3次发送,成功接收到后,给个反馈,这也可以说是成功握手。

在空闲(IDLE)状态时,XOSC和数字核的电源被打开,但是其他模块全部掉电。当芯片处于接收模式时,接收(RX)状态是激活。在IDLE状态时应该是中断接收;

对于第二个问题,我觉得这样发送很占有空间,不太懂,谢谢

想接收数据必须让CC1101工作在RX(接收)模式或WOR(无线唤醒)模式下,能够产生中断也可以,然后在中断中设为RX状态接收数据。

您好,能分享一下进入睡眠部分和唤醒的例程么,我现在运行了:

CC1101_SET_CSN_HIGH( );
CC1101_Write_Cmd(CC1101_SPWD);

这两条指令,但是进不去睡眠模式。

heng li1

您好,能分享一下进入睡眠部分和唤醒的例程么,我现在运行了:

CC1101_SET_CSN_HIGH( );
CC1101_Write_Cmd(CC1101_SPWD);

这两条指令,但是进不去睡眠模式。

你可以参考simpliciTI代码中关于sleep和wakeup的操作

/**************************************************************************************************
* @fn MRFI_Sleep
*
* @brief Request radio go to sleep.
*
* @param none
*
* @return none
**************************************************************************************************
*/
void MRFI_Sleep(void)
{
bspIState_t s;

/* Critical section necessary for watertight testing and
* setting of state variables.
*/
BSP_ENTER_CRITICAL_SECTION(s);

/* If radio is not asleep, put it to sleep */
if(mrfiRadioState != MRFI_RADIO_STATE_OFF)
{
/* go to idle so radio is in a known state before sleeping */
MRFI_RxIdle();

mrfiSpiCmdStrobe( SPWD );

/* Our new state is OFF */
mrfiRadioState = MRFI_RADIO_STATE_OFF;
}

BSP_EXIT_CRITICAL_SECTION(s);
}


/**************************************************************************************************
* @fn MRFI_WakeUp
*
* @brief Wake up radio from sleep state.
*
* @param none
*
* @return none
**************************************************************************************************
*/
void MRFI_WakeUp(void)
{
/* if radio is already awake, just ignore wakeup request */
if(mrfiRadioState != MRFI_RADIO_STATE_OFF)
{
return;
}

/* drive CSn low to initiate wakeup */
MRFI_SPI_DRIVE_CSN_LOW();

/* wait for MISO to go high indicating the oscillator is stable */
while (MRFI_SPI_SO_IS_HIGH());

/* wakeup is complete, drive CSn high and continue */
MRFI_SPI_DRIVE_CSN_HIGH();

/*
* The test registers must be restored after sleep for the CC1100 and CC2500 radios.
* This is not required for the CC1101 radio.
*/
#ifndef MRFI_CC1101
mrfiSpiWriteReg( TEST2, SMARTRF_SETTING_TEST2 );
mrfiSpiWriteReg( TEST1, SMARTRF_SETTING_TEST1 );
mrfiSpiWriteReg( TEST0, SMARTRF_SETTING_TEST0 );
#endif

/* enter idle mode */
mrfiRadioState = MRFI_RADIO_STATE_IDLE;
MRFI_STROBE_IDLE_AND_WAIT();

#ifdef MRFI_TIMER_ALWAYS_ACTIVE
stx_active = false; // indicate we're not in transmit
#endif // MRFI_TIMER_ALWAYS_ACTIVE
}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top