CC1101进入掉电模式是直接用这条命令就可以了吧:halSpiStrobe(CCxxx0_SPWD);
为什么我使用这条命令后CC1101还有70uA左右的电流呢,按数据手册上应该在1uA一下啊,怎么大了几十倍。
CC1101进入掉电模式后是自动关闭电压调节器和晶振的吧?还是跟寄存器配置也有关系。
晶体振荡器 (XOSC) 可以为自动控制,也可以是始终开启:
1.在自动模式下,发送 SXOFF 或 SPWD 指令选通脉冲可关闭 XOSC;随后,状态机进入 XOFF 或者 SLEEP 状态。该方法仅在 IDLE 状态下有效。当 CSn获得释放时(变高),XOSC 关闭。当 CSn 变低时,XOSC 会再次自动开启。然后,状态机转入 IDLE 状态.
2.如果强制开启 XOSC,则晶体将始终保持开启,即使是在 SLEEP 状态下也是如此。 MCSM0.XOSC_FORCE_ON =1;
3.WOR模式下, 定时器有两个事件,即事件 0 和事件 1。在启用了 WOR 的 SLEEP 状态下,达到事件 0 将会开启数字调节器,并启动晶体振荡器。Sleep状态后会关闭晶体振荡器。
晶体振荡器开启时间取决于晶体 ESR 和负载电容。
配置寄存器:
0x32 SXOFF 关闭晶体振荡器
0x39 SPWD 当 CSn 为高电平时进入断电模式
另外注意CSN引脚上不要接电容对地。
为什么我使用这条命令后CC1101还有70uA左右的电流呢,按数据手册上应该在1uA一下啊,怎么大了几十倍。
CC1101进入掉电模式后是自动关闭电压调节器和晶振的吧?还是跟寄存器配置也有关系。
请用过的点拨一下啊,谢谢了
两个方面查一下: 1、你的CSn引脚是否为高,如果为低,XOSC仍会处于开启状态。 2、如果XOSC被强迫开启,则晶体将总是保持开启,即使处于休眠状态 |
1.在自动模式下,发送 SXOFF 或 SPWD 指令选通脉冲可关闭 XOSC;随后,状态机进入 XOFF 或者 SLEEP 状态。该方法仅在 IDLE 状态下有效。当 CSn获得释放时(变高),XOSC 关闭。当 CSn 变低时,XOSC 会再次自动开启。然后,状态机转入 IDLE 状态.
2.如果强制开启 XOSC,则晶体将始终保持开启,即使是在 SLEEP 状态下也是如此。 MCSM0.XOSC_FORCE_ON =1;
3.WOR模式下, 定时器有两个事件,即事件 0 和事件 1。在启用了 WOR 的 SLEEP 状态下,达到事件 0 将会开启数字调节器,并启动晶体振荡器。Sleep状态后会关闭晶体振荡器。
晶体振荡器开启时间取决于晶体 ESR 和负载电容。
配置寄存器:
0x32 SXOFF 关闭晶体振荡器
0x39 SPWD 当 CSn 为高电平时进入断电模式
另外注意CSN引脚上不要接电容对地。
真的非常感谢你,找到原因了,虽然不是你所说的那两个问题,但是你启发了我,是你使我把目光转向了单片机与CC1101的那几根信号线来寻找原因。
原因:与GDO0相连的单片机引脚配置成了上拉输入,而GDO0平时处于低电平,故此引脚上有电流。把引脚配置成浮空输入就解决了,现在电流已经降到0.4uA。
这个问题困扰了我很久,还是自己经验不够,解决问题的能力不够。
谢谢你