I'm trying to implement/get my head around USB sleep/suspend on a XS1-U12. The datasheet states that the device will transition to the Asleep state when USB block requests standby, but this doesn't seem to be happening; am I missing some vital initialisation for this to happen?Alternatively if I manually trigger the sleep inside the XUD_UserSuspend() function the device won't wake again from usb resume.

HI, As far as I'm aware the USB suspend is not functional in the silicon. I don't recall the exact details but there was a project a while ago where suspend was evaluated and external logic was implemented to detect the K state for USB resume which latched the power back on. The work was never productised and it required a lot of work to sc_xud to get it to support the state transitions and work to the bootloader to meet the boot times to meet the USB spec. I'll find out if there is any more info on this.

Thanks for the answer, but that doesn’t quite make sense! The datasheet for the XS1-U12A-128-FB217 (2015-04-14) clearly states that “A transition from the ASLEEP state into the AWAKE state is instigated by a wakeup request triggered by a request from the USB block to exit standby mode an input, or a timer.” – section 14.2.

Also looking at the registers in section K, the power control block, general control register (0x00) bits 8 and 9 are for switching the USB suspend controller to USB power down and power up enable.

Hi, I have done some more digging and that is indeed the design of the logic. It was verified in the chip but software support for it was never developed (sc_xud library) and so I guess you could call that unvalidated. Apologies for the confusion..

Thanks for looking into this, and that sounds more positive. So does that mean in principle that if we poke the various registers directly, we should be able to get the U device to transition from AWAKE to ASLEEP and back again by following the USB bus' suspend state?