打印

请教香主STM32低功耗问题

[复制链接]
3827|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
f43067|  楼主 | 2009-3-30 15:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请教香主STM32从不同状态下进入STOP模式后电流为何不一样啊?我把RCC和GPIO都初始化后进入STOP模式后电流大概127uA,但是当进入STOP模式之前使能USB模块并连接至计算机,然后断开与计算机的连接并且关闭USB模块,此时进入STOP模式电流大概800多uA。请教这是什么原因?两次进入STOP模式时的GPIO口配置都一样。
沙发
ST_ARM| | 2009-3-30 16:27 | 只看该作者

请问你是如何关闭USB模块的

把RCC和GPIO都初始化后进入STOP模式后电流大概127uA,此电流你是如何测得的?电路中是否还有其他芯片处于供电状态?其他的IO口是如何配置的和连接的?

使用特权

评论回复
板凳
f43067|  楼主 | 2009-3-30 16:59 | 只看该作者

谢谢!

关闭USB模块:RCC_APB1PeriphClockCmd(RCC_APB1Periph_USB, DISABLE);

电路中还有一个AD芯片、NandFlash芯片和电平转换芯片。我知道那127uA可能会包括这三个芯片所耗的电流,但是我的意思是接与不接USB为什么会有那么大的电流差别?接USB时对NandFlash芯片进行了操作,但是操作完就恢复成以前的状态了。另外那个D+的1.5K的上拉电阻是没有开关的,就是D+始终有一个1.5K电阻上拉到3V。

使用特权

评论回复
地板
ST_ARM| | 2009-3-31 10:52 | 只看该作者

STM32有几个模块的关闭比较特殊

有些外设的寄存器里使能/禁止的功能位:如ADC,有些外设的寄存器里专用关闭功能位,如USB,在关闭这些外设时,需先使用其内部的寄存器的关闭功能,然后再关闭其时钟。

USB是一个特殊外设:
请看附图,图中蓝色框内的时钟是48MHz,其来源是直接来之PLL(见附图的下半部),其余框中部分的时钟来自APB1,你使用RCC_APB1PeriphClockCmd(RCC_APB1Periph_USB, DISABLE);只是关闭这部分外设;而图中红色部分的并没有关闭,这一部分是模拟部分,所以你需要使用USB控制寄存器(USB_CNTR)中的PDWN位来关闭该模块(PDWN位---断电模式位;此模式用于彻底关闭USB模块。当此位被置位时,不能使用USB模块。0:退出断电模式;1:进入断电模式。)

下面使用关闭该功能的源代码:
/************************************************
* Function Name  : PowerOff
* Description    : handles switch-off conditions
* Input          : None.
* Output         : None.
* Return         : USB_SUCCESS.
************************************************/
RESULT PowerOff()
{
  /* disable all ints and force USB reset */
  _SetCNTR(CNTR_FRES);
  /* clear interrupt status register */
  _SetISTR(0);
  /* Disable the Pull-Up*/
  USB_Cable_Config(DISABLE);
  /* switch-off device */
  _SetCNTR(CNTR_FRES + CNTR_PDWN);
  /* sw variables reset */
  /* ... */

  return USB_SUCCESS;
}

使用特权

评论回复
5
f43067|  楼主 | 2009-4-1 16:30 | 只看该作者

原来如此!

太感谢ST_ARM了。如果没请教您我还不知道要找多久呢。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

20

帖子

0

粉丝