wenking99 发表于 2011-5-24 09:45:57

24le1接收模式下,电流达18MA,怎么回事?程序如下

现在我的从机上电处于接收数据模式,用的是干电池供电。但发现在电流比较大,有18MA.看资料上说。处于接收模式,只有12MA样子。我现在外围什么都没有接,就只有无线单片机部分。不知道是什么原因电流这么大?或者说还有什么好的方式可以降低电流的消耗吗?

/**************************************************
功能:RF初始化
**************************************************/
void Init_Rf(void)
{
   RFCE = 0;                                     // RF关闭
   RFCKEN = 1;                                 // 启动RF时钟
   RF = 1;                                       // 允许RF中断
Delay_MS(1000);

   SPI_Write_Buf(WRITE_REG + TX_ADDR, TX_ADDRESS, TX_ADR_WIDTH);   // 设置发射地址长度
   SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, TX_ADDRESS, TX_ADR_WIDTH);// 设置接收地址长度
   SPI_RW_Reg(WRITE_REG + EN_AA, 0x01);         // 启动自动应答功能
   SPI_RW_Reg(WRITE_REG + EN_RXADDR, 0x01);   // PIPE0接收数据
   SPI_RW_Reg(WRITE_REG + SETUP_RETR, 0x1a);    // 自动重传10次
   SPI_RW_Reg(WRITE_REG + RF_CH, 40);         // RF频率2440MHz
   SPI_RW_Reg(WRITE_REG + RF_SETUP, 0x05);//-6dBm   发射功率
   SPI_RW_Reg(WRITE_REG + RX_PW_P0, TX_PLOAD_WIDTH);// PIPE0 接收数据包长度
}
初始化后,然后处于接收方式

/**************************************************
功能:设置为接收模式
**************************************************/
void RX_Mode(void)
{
RFCE=0;
   SPI_RW_Reg(WRITE_REG + CONFIG, 0x0f);    // 上电, CRC为2 bytes,接收模式,允许RX_DR产生中断
   RFCE = 1;          // 启动接收模式
}

请教电流为什么比正常资料上大7个MA?
或者是还有什么好的降低功耗的办法?

mybmyb 发表于 2011-5-24 10:41:59

你的程序有问题

wenking99 发表于 2011-5-24 10:52:02

你好,可以指点一下吗?现在不知道程序哪里出了问题。

bbsniua 发表于 2011-11-21 00:27:50

你的单片机不用电?你要省电的话只能把单片机进入掉电模式,打开RF中断就可以达到只用RF的耗电,
还有你要更省电就把全部进入掉电模式!但RF进入掉电后就无法接收了!

zplmcu 发表于 2011-11-21 01:51:37

回复【3楼】bbsniua 鹏
-----------------------------------------------------------------------

如果不开其它外设 只开RF的话,一直处于RX_MODE的话,不可能会有18MA,那里没设置好,时钟处理这里是关键。。。。。。

tcm123 发表于 2011-12-6 23:46:50

甚至连IO方向都有影响
页: [1]
查看完整版本: 24le1接收模式下,电流达18MA,怎么回事?程序如下