关于串口接收Rxd复用为唤醒源唤醒MCU的功耗问题请教

公告

大中华汽车电子生态圈社区并入开发者社区- 更多资讯点击此

Tip / 登入 to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
JeHa_3912621
Level 3
Level 3
25 replies posted 10 replies posted 10 questions asked

psoc6347的MCU,在配置串口唤醒mcu的时候。

            Cy_GPIO_SetDrivemode( UART_DEB_rx_0_PORT, UART_DEB_rx_0_NUM,  CY_GPIO_DM_HIGHZ );

            Cy_GPIO_Clr( UART_DEB_rx_0_PORT, UART_DEB_rx_0_NUM );

            Cy_GPIO_SetInterruptEdge( UART_DEB_rx_0_PORT, UART_DEB_rx_0_NUM, CY_GPIO_INTR_RISING);

            Cy_GPIO_SetInterruptMask( UART_DEB_rx_0_PORT, UART_DEB_rx_0_NUM, 1);

            Cy_GPIO_SetVtrip( UART_DEB_rx_0_PORT, UART_DEB_rx_0_NUM, CY_GPIO_VTRIP_CMOS);

           

            /* Configure CM4+ CPU GPIO interrupt vector for Port 5 */

            Cy_SysInt_Init(&SysInt_1_cfg, Isr_Wakeup);

            NVIC_ClearPendingIRQ( SysInt_1_cfg.intrSrc );

            NVIC_EnableIRQ((IRQn_Type)SysInt_1_cfg.intrSrc);           

           

            Cy_SysPm_DeepSleep(CY_SYSPM_WAIT_FOR_INTERRUPT);

            Cy_GPIO_SetInterruptMask( UART_DEB_rx_0_PORT, UART_DEB_rx_0_NUM, 0);

            Cy_GPIO_SetInterruptEdge( UART_DEB_rx_0_PORT, UART_DEB_rx_0_NUM, CY_GPIO_INTR_DISABLE );

我在测试的时候发现如果配置成

            Cy_GPIO_SetDrivemode( UART_DEB_rx_0_PORT, UART_DEB_rx_0_NUM,  CY_GPIO_DM_ANALOG );

就无法唤醒MCU。   但是在对比两种配置的电流的时候。 我的板子如果配置成CY_GPIO_DM_ANALOG,  睡眠电流会比配置成CY_GPIO_DM_HIGHZ的时候要小20uA。

在串口悬空的状态下测试。 如果我配置成下降沿触发,我就把rx口配置成高电平,会比不配置电流小20uA左右。

           我在配置其它外部中断唤醒mcu的时候,我发现配置成 CY_GPIO_DM_ANALOG也是可以唤醒的。 我现在的产品对于睡眠电流的要求非常高。 能否给出一些设计上的建议。我现在的系统仅仅把睡眠电流搞到70uA左右。 与规格书上的9uA还有不小的差距。 能否提供一些帮助。 尤其是这个串口唤醒部分,感谢!

pastedImage_0.png

0 点赞
1 解答
LinglingG_46
Moderator
Moderator
Moderator
500 solutions authored 1000 replies posted 10 questions asked

1: 数字高阻的管脚不能有不确定的电平,不然内部的逻辑电路一直在工作,导致功耗增大。所以如果你配置成数字高阻态的话,需要外部给芯片一个上拉电阻至高。

2:配置成模拟高阻态的管脚,不能响应外部中断是正常的,input buffer都关闭了。

3:你的芯片,把SWD 改成GPIO,另外 Power Mode改成 0.9V SMIO buck 进行测试。

4: 先disable你工程中的其它功能,直接让芯片进入low power, 看功耗是多少? 应该是12uA左右。如果这个时候还是70uA,说明你板子哪个部分可能存在漏电的情况。

在原帖中查看解决方案

0 点赞
1 回复
LinglingG_46
Moderator
Moderator
Moderator
500 solutions authored 1000 replies posted 10 questions asked

1: 数字高阻的管脚不能有不确定的电平,不然内部的逻辑电路一直在工作,导致功耗增大。所以如果你配置成数字高阻态的话,需要外部给芯片一个上拉电阻至高。

2:配置成模拟高阻态的管脚,不能响应外部中断是正常的,input buffer都关闭了。

3:你的芯片,把SWD 改成GPIO,另外 Power Mode改成 0.9V SMIO buck 进行测试。

4: 先disable你工程中的其它功能,直接让芯片进入low power, 看功耗是多少? 应该是12uA左右。如果这个时候还是70uA,说明你板子哪个部分可能存在漏电的情况。

0 点赞