3 Replies Latest reply on Apr 3, 2019 11:38 PM by PriyaM_16

    CYW43907 gpio on exit from hibernation

    NiMc_1688136

      As far as I can tell from the CYW43907 datasheet/ref manual, the default GPIO settings should be an input.

       

      GPIOOutEn Release 9c5be10 0x18000068

      Bits Name Function R/W Reset

      31:0 GPIOOutEn

      The 4-byte General Purpose I/O Output Enable register is writable, has a reset value of zero,

      and determines which GPIO pins are used as inputs and which are used as outputs. When a bit

      in this register is set, the corresponding GPIO pin is driven as an output.

      RW 0

      Reset: 0x00000000

       

      When I exit the device from Hibernation mode, one of the GPIO pins switches to an output low for a short duration,  ~1mS, I happen to have this GPIO connected to the reset pin of a secondary MCU and this is causing it to reset when it cannot reset (At this point the secondary MCU is waking the CYW43907 by HIB_WAKE to send serial data).

       

      I tried leaving the pin config alone, making it an high impedance input on startup, and making it an input with a pullup on startup, but nothing has changed the behavior. These gpio configurations are being called as part of the platform_init_external_devices call.

       

      platform_gpio_init( &platform_gpio_pins[ST_RST_PIN], INPUT_HIGH_IMPEDANCE ); // has internal pullup

       

      Is there something prior to platform_init_external_devices that is configuring the pin? The pin is not redefined in my platform code.