单片机/MCU论坛
直播中

李春梅

7年用户 1738经验值
私信 关注

求助,关于串口接收Rxd复用为唤醒源唤醒MCU的功耗的问题求解

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还有不小的差距。 能否提供一些帮助。 尤其是这个串口唤醒部分,感谢!

                                                                                                                                                                                                                                                                                                                                                                                             

回帖(1)

张鹏

2024-2-19 14:49:51
1: 数字高阻的管脚不能有不确定的电平,不然内部的逻辑电路一直在工作,导致功耗增大。所以如果你配置成数字高阻态的话,需要外部给芯片一个上拉电阻至高。
2:配置成模拟高阻态的管脚,不能响应外部中断是正常的,input buffer都关闭了。
3:你的芯片,把SWD 改成GPIO,另外 Power Mode改成 0.9V SMIO buck 进行测试。
4: 先disable你工程中的其它功能,直接让芯片进入low power, 看功耗是多少? 应该是12uA左右。如果这个时候还是70uA,说明你板子哪个部分可能存在漏电的情况。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分