Hi,
I am trying to suspend the USB 1 port. The LPC1857 is the Host and I have a fingerprint module connected to USB1.
Here is my code and the chip hangs up (when I run in debug mode with LPC link, it shows that CPU is stalled when i run this code).
void USB1_ForcePortSuspend()
{
// only set suspend bit if the port is currently enabled (PE bit set to 1)
if (LPC_USB1->PORTSC1_H & (1 << 2))
{
LPC_USB1->PORTSC1_H |= 1 << 7; // Enable suspend bit
// wait for port to suspend
while (!(LPC_USB1->PORTSC1_H & (1 << 7)));
vTaskDelay(1000);
// now suspend the PHY Clock
LPC_USB1->PORTSC1_H |= (1 << 23);
// wait for the clock to suspend
while (!(LPC_USB1->PORTSC1_H & (1 << 23)));
vTaskDelay(10);
}
}
Is there a recommended step to suspend the USB 1 port?
Just to add on that it is when i suspend the PHY clock that the CPU gets stalled.
Thanks!
Hello Vivien,
Let share my findings with you, since you are using the LPC USB port as a Host, then the device that it is going to be attach to the USB need to be first enter into Suspend Mode before you put the LPC USB host port into Suspend Mode, so first you need to see if the device connected to the HOST it is already in Suspend and then use your function with only
void USB1_ForcePortSuspend()
{
//FIRST CHECK IF DEVICE IT IS IN SUSPEND
// only set suspend bit if the port is currently enabled (PE bit set to 1)
if (LPC_USB1->PORTSC1_H & (1 << 2))
{
LPC_USB1->PORTSC1_H |= 1 << 7; // Enable suspend bit
// wait for port to suspend
while (!(LPC_USB1->PORTSC1_H & (1 << 7)));
vTaskDelay(1000);
}
}
Hope this clarifies
Have a nice day!
Best Regards,
Sol
Thank you!