我有一个关于双核Delfino MCU休眠模式的问题。
我用包含F2.8377万D的中断板制作了一个电路。
我一直在RAM上运行它,有时我尝试进入休眠模式以节省电量。
我测量了从VDD到GND的电流消耗,但我得到的电流消耗量与处于活动状态时相同。 (~450mA)
在测量过程中,MCU仍连接到JTAG调试器(XDS100V2)。
这是否正常? 因为我真的需要减少电流消耗。
谢谢!
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.
我有一个关于双核Delfino MCU休眠模式的问题。
我用包含F2.8377万D的中断板制作了一个电路。
我一直在RAM上运行它,有时我尝试进入休眠模式以节省电量。
我测量了从VDD到GND的电流消耗,但我得到的电流消耗量与处于活动状态时相同。 (~450mA)
在测量过程中,MCU仍连接到JTAG调试器(XDS100V2)。
这是否正常? 因为我真的需要减少电流消耗。
谢谢!
这是我的董事会。 很抱歉这么乱! 我只连接了1.2V和3.3V电源。 去耦电容使其看起来非常肮脏。 不要介意右下角的电阻器和二极管,因为它们未连接。
我将1.2V电源连接到VA,将3.3V电源连接到VC。 通过JTAG电缆正下方的绿色大线是连接至电源板的GND线。
我跑过lpm_hibwake和lpm_idlewake以及lpm_standbywake。 我已确认,仅当中断的GPIO设置为1时,设备才会唤醒。
我只在RAM上运行代码。
我测量了从VA到GND的电源的电流,但我现在一直测量~350mA。 实际上,当我不小心将GND断开时,我测量了325mA。 我确认设备在发生时未通电,并且只能在接地GND PowerPAD时进行调试。 因此,即使设备未打开,我也在测量325mA。
我迷路了,甚至不知道我是否以正确的方式测量电流。 我非常感谢您的帮助!
你(们)好
我正在尝试检查我的主板是否进入休眠模块。 我正在使用 TM4C123G LaunchPad,我通过使用sw1将其配置为进入休眠模式,这就是我所做的软功能。
Void
ConfigureUART (void)
{
//
//启用UART使用的GPIO外设。
//
ROM_SysCtlPeripheralEnable(sysctl_Periph_GPIOA);
//
//启用UART0
//
ROM_SysCtlPeripheralEnable(sysctl_Periph_UART0);
//
//为UART模式配置GPIO引脚。
//
ROM_GPIOPinConfigure(GPIO_PA0_U0RX);
ROM_GPIOPinConfigure(GPIO_PA1_U0TX);
ROM_GPIOPinTypeUART (GPIO_Porta_base,GPIO PIN_0 | GPIO PIN_1);
//
//使用内部16MHz振荡器作为UART时钟源。
//
UARTClockSourceSet (UART0_BASE,UART_CLARK_PIOSC);
//
//初始化控制台I/O的UART
//
UARTStdioConfig (11.52万,1600万);
}//*****************************************************************************************************************
////
按钮的中断处理程序。
////*************************************************************************************************
void bottonsHandler(void){
IF((GPIOIntStatus(GPIO_PORTF_BASE,TRUE)& Buttoninit1))
{
GPIOIntClear (GPIO _PORTF_BASE,Buttoninit1);//清除中断标志
TimerEnable(TIMER0_base, timer_a);//启用计时
器}
否则IF ((GPIOIntStatus(GPIO_PORTF_BASE,TRUE)& Buttoninit0))
{
GPIOIntClear (GPIO _PORTF_BASE,Buttoninit0);//清除中断标志
TimerDisable (TIMER0_BASE,TIMER_A);//禁用计时器
SysCtlPeripheralDisable(sysctl_Periph_hibernate);//禁用休眠模块
休眠GPIOoretentionDisable();//禁用GPIO保留
HibernateDisable();//禁用休眠模块以进行操作
。}
}
void configureButtons(void){//configureButton0
GPIOPinTypeGPIOInput (ButtonBase,Button0);
GPIOPadConfigSet (ButtonBase,Button0,GPIO强度2mA,GPIO PIN类型STD_WPU);//注册端口F的处理程序函数
GPIOIntTypeSet(GPIO_PORTF_BASE,GPIO PIN_0,GPIO Falling_EDGE);//为下降边缘触发器配置PF4
GPIOIntRegister (GPIO _PORTF_BASE,BottonsHandler);//注册端口F的处理程序函数
GPIOIntEnable (GPIO _PORTF_BASE,GPIO _INT_PIN_0);//为PF0启用中断
//configureButton1
GPIOPinTypeGPIOInput (ButtonBase,Button1);
GPIOPadConfigSet (ButtonBase,Button1,GPIO强度2mA,GPIO PIN类型STD_WPU);//注册端口F的处理程序函数
GPIOIntTypeSet(GPIO_PORTF_BASE,GPIO PIN_4,GPIO Falling_EDGE);//为下降边缘触发器配置PF4
GPIOIntRegister (GPIO _PORTF_BASE,BottonsHandler);//注册端口F的处理程序函数
GPIOIntEnable(GPIO_PORTF_BASE,GPIO_INT_PIN_4);//为PF4启用中断
}
void
Timer0IntHandler(void)
{////
清除计时器中断。
//
TimerIntClear (TIMER0_BASE,TIMER_TIMA_TIMEOUT);
UARTprintf (“休眠模式已打开!\n”);
HiberalEnable(sysctl_Periph_hibernate);//启用
GPIO模块HibernateEnablehibernation Expansion Clk (SysctlClockGet);//定义在调用过程中提供的时钟保持状态/启用此模块。
SysClertDelay(SysClockGatet()/10 );
HibernateWakeSet(hibernate_wake_PIN);//将唤醒条件设置为唤醒针
SysDelay(SysClertClockSet()/10);
//GPIOPinWrite(GPIO_PORTF_Base,GPIO PIN_3,0);//在设备进入休眠状态LED指示灯之前关闭设备。
/*函数请求休眠模块禁用外部稳压器,从而断开
处理器和所有外围设备的电源。*/
休眠请求();
}//*****************************************************************************************
////
打印"Hello World!" 到评估板上的UART。
////*************************************************************************************************
int
main (void)
{
//volatile UINT32_t ui32Loop;
//
//为中断处理程序启用延迟堆栈。 这允许浮点
//在中断处理程序中使用的指令,但费用为
//额外的堆栈使用。
//
//ROM_FPULazyStackingEnable();
//
//将时钟设置为直接从晶体运行。
//
ROM_SysClockSet(sysctl_SYSDIV_5| sysctl_use_PLL | sysctl_XTAL_16MHz |
sysctl_OSC主);
//
//启用用于板载LED的GPIO端口。
//
ROM_SysCtlPeripheralEnable(sysctl_Periph_GPIOF);
//
//启用LED的GPIO引脚(PF2 & PF3)。
//
ROM_GPIOPinTypeGPIOOutput (GPIO _PORTF_BASE,GPIO PIN _1|GPIO PIN _2|GPIO PIN _3);
//
//启用此示例使用的外围设备。
//
ROM_SysCtlPeripheralEnable(sysctl_Periph_TIMER0);
//
//为计时器中断注册中断处理程序。
//
TimerIntRegister (TIMER0_BASE,TIMER_A,Timer0IntHandler);
//
//启用处理器中断。
//
ROM_IntMasterEnable();
//
//配置两个32位定期计时器。
//
ROM_TimerConfigure(TIMER0_BASE,TIMER_CFG_Periodic);
ROM_TimerLoadSet(TIMER0_BASE,TIMER_A,ROM_SysClockSet());
//
//设置定时器超时的中断。
//
ROM_IntEnable (INT_TIMER0A);
ROM_TimerIntEnable(TIMER0_BASE,TIMER_TIMA_TIMEOUT);
//
//初始化UART。
//
配置UART();
//
//初始化按钮。
//
configureButtons();
//
//您好!
//
UARTprintf ("你好,世界!\n");
SysCTlDelay (SysCTlClockGet ());
同时(1)
{
UARTprintf ("运行模式已打开!\n");
SysCTlDelay (SysCTlClockGet ());
GPIOPinWrite (GPIO_PORTF_BASE,GPIO PIN_3,GPIO PIN_3 );
SysCTlDelay (SysCTlClockGatet()/10);
GPIOPinWrite (GPIO _PORTF_BASE,GPIO PIN _3,0);
SysCTldelay(SysCTlClockGatet()/10 );
}
}
我所做的是从午餐板上取下跳线,尝试在不同模式下测量电流,但在不同模式下,DMM不会显示任何差异。
如果您知道如何使用某些命令来检查主板是否进入休眠状态,我将非常感谢。
谢谢你。
此致
胺。