1 Reply Latest reply on Jul 5, 2020 10:43 PM by LinglingG_46

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

    JeHa_3912621

      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. Re: 关于串口接收Rxd复用为唤醒源唤醒MCU的功耗问题请教
          LinglingG_46

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

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

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

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