把板子上的CC1101的WOR配置好之后,消耗的电流稳定在1mA,但是一旦运行指令:CC1101_Set_Mode( RX_MODE );//将CC1101设置为接收模式。电流马上变成15mA。
请问应该怎么解决这个问题,系统电流最大不能超过1mA。
注:主控是Stm8S003
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.
以上是RX/TX模式下的电流消耗,可以参考一下
我现在刚开始做不久,打算采取的方案是,发送端连续发3次指令,比如发这三次指令所需的时间是3t的话,我接收机睡眠的时间是1t,那么在这3t内,接收机是一定能够接收到一次完整的数据的。而且我有开WOR。
现在我一开接收,电流就变成十几毫安,所以打算用睡眠模式把电流降到1mA一下。
这个是我在英文论坛找到的信息:
Okay, here is another update and errata about last answer.
First bit in "TI_CCxxx0_MCSM0" register need to be configured to "0", if you want possibility to turning On/Off internal oscillator.
And also after putting CC1101 module to sleep, if you want to send/ receive data, you need to wake up module from "Sleep" state.
Code should look like that:
TI_CC_CSn_PxOUT &= ~TI_CC_CSn_PIN; // /CS low
while (TI_CC_SPI_USCIA0_PxIN & TI_CC_SPI_USCIA0_SOMI); // Wait till SOMI go to "0"
TI_CC_CSn_PxOUT |= TI_CC_CSn_PIN; // /CS high
TI_CC_SPIStrobe(TI_CCxxx0_SFRX); // Flush RX buffer
TI_CC_SPIStrobe(TI_CCxxx0_SIDLE); // IDLE
RF芯片在sleep状态下,是不能接收数据的。必须在发送端开始发送之前,将接收端的RF置为rx状态,才能接收到数据。
对于有功耗要求的应用,一般是两种处理方式。
1. 收发两端保持时间同步,接收端MCU知道应该在什么时刻唤醒并处于rx状态接收数据。考虑到时间同步的偏差,接收端需要稍微提前一些进入rx状态,以保证发送端发出的数据能落入接收窗口。
2.如果发送端没有低功耗要求,则可以发送端不停的发送,接收端周期性唤醒接收。
关于第二个问题,在有些应用场合,接收端只有接收功能,没有发送功能,因此无法回复ACK告知发送端接收成功。针对这种应用,为了提高数据被接收到的概率,通常采用发送端同一个数据包连续发送多次的方法。