微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI无线射频设计 > CC1101超低功耗问题:运行将CC1101设置为接收模式的指令,功耗马上变大。

CC1101超低功耗问题:运行将CC1101设置为接收模式的指令,功耗马上变大。

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

把板子上的CC1101的WOR配置好之后,消耗的电流稳定在1mA,但是一旦运行指令:CC1101_Set_Mode( RX_MODE );//将CC1101设置为接收模式。电流马上变成15mA。

请问应该怎么解决这个问题,系统电流最大不能超过1mA。

注:主控是Stm8S003

在RX模式下,15mA是正常的,除非一直低功耗,RX,TX都是十几mA的电流

  • In RX, the current drawn from a 3.6 V battery is typically less than 
    11 mA when TPS62730 output voltage is 2.1 V. When connecting CC1101 
    directly to a 3.6 V battery the current drawn is typically 17 mA
  • In TX, at maximum output power (+12 dBm), the current drawn from a 
    3.6 V battery is typically 22 mA when TPS62730 output voltage is 2.1 V. 
    When connecting CC1101 directly to a 3.6 V battery the current drawn is 
    typically 34 mA

以上是RX/TX模式下的电流消耗,可以参考一下

那我是应该,每次发送或者接收后,马上进入睡眠模式,然后定时唤醒,是这样么。

我刚接触这款芯片,有问的不合适的地方您多包涵。

你好,就是请问一下,如果你说将CC1101设置成数据接收完成后立即进入sleep模式(降低功耗),那这颗芯片在sleep时候是regulator off、crystal off,那它是怎么知道下一次有信息传送过来需要再次进入到RX模式的呢?你说的通过单片机SPI定时的唤醒它,如果数据发射端刚好是在它sleep时间段内怎么办,岂不是会接收不到?

我现在刚开始做不久,打算采取的方案是,发送端连续发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 

我现在试着进入睡眠模式,但是一直进不去,请问你们这有可以参考的程序么?

  我就想知道RX端在sleep时候是如何监听有没有数据过来然后进入RX模式的,是被动的被MCU的CSN脚唤醒,还是RX端自己知道有数据来了,主动转到RX模式的,,,另外你说的连续发送三次数据,只需确保接收成功一次就可以,这种做法是合理的做法吗,

我也是刚接触这个芯片,怕回答错了,你最好去看一下官方手册swrs064i中19.5节,有详细的讲解。

第二个问题,我在论坛里看到有这种做法,我自己也觉得可行,暂时还在调试睡眠和唤醒,还没有做大这一步。

希望你这头有进展也能分享给我。

RF芯片在sleep状态下,是不能接收数据的。必须在发送端开始发送之前,将接收端的RF置为rx状态,才能接收到数据。

对于有功耗要求的应用,一般是两种处理方式。

1. 收发两端保持时间同步,接收端MCU知道应该在什么时刻唤醒并处于rx状态接收数据。考虑到时间同步的偏差,接收端需要稍微提前一些进入rx状态,以保证发送端发出的数据能落入接收窗口。

2.如果发送端没有低功耗要求,则可以发送端不停的发送,接收端周期性唤醒接收。

关于第二个问题,在有些应用场合,接收端只有接收功能,没有发送功能,因此无法回复ACK告知发送端接收成功。针对这种应用,为了提高数据被接收到的概率,通常采用发送端同一个数据包连续发送多次的方法。

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

网站地图

Top