Bootloadable application fails to enumerate USBUART via a hub controller

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
dari_292216
Level 2
Level 2
First like received First like given

I am using the sample code for Bootloader/Bootloadable -- a code that I know works Ok when the PSoC is connected directly to the computer. 

However, when it is connected via an intermediate USB hub (Genesys Logic GL852G -- http://minipcsale.ru/images/Minix-Neo-X8-h/GL852G.pdf ) the following happens:

When I power up the system (both the PSoC and the hub) the Bootloader Host can see the USB HID and I can upload the application fine.

However, when the application is passed control, the USB fails to enumerate.  Instead, the code keeps waiting on the while loop in this piece of code:

USBUART_Start(...);

while(0 == USBUART_GetConfiguration()) {

}

USBUART_CDC_Init();

The Bootloader Host application will still list the USB HID. 

At that point, if I disconnect from the USB cable from the port and reconnect, the application will enumerate a COM correctly (and the USB HID will go away).

Any ideas why this happens?

How can I get the USB_UART to enumerate in this condition? Will a change to the bootloadable code do it?

Thanks!

--

Dario

0 Likes
1 Solution
himam_31
Employee
Employee
50 likes received 25 likes received 10 likes received

Hello Dario,

Check the voltage provided as a parameter in the USBFS_Start(uint8 device,uint8 mode) API function. If the board is powered with a 5-V supply, the argument mode must be assigned as USBFS_5V_OPERATION. In this case, the internal regulator is enabled. If the board power supply is 3 V, the macro USBFS_3V_OPERATION must be used. If the supply voltage is unknown, it is better to use USBFS_5V_OPERATION because in this case the internal regulator is enabled.

Also please have a look at the KBA: Troubleshooting PSoC® 3, PSoC 4 L-Series, and PSoC 5LP USB Designs - KBA210620

Thanks,

Hima

View solution in original post

0 Likes
2 Replies
himam_31
Employee
Employee
50 likes received 25 likes received 10 likes received

Hello Dario,

Check the voltage provided as a parameter in the USBFS_Start(uint8 device,uint8 mode) API function. If the board is powered with a 5-V supply, the argument mode must be assigned as USBFS_5V_OPERATION. In this case, the internal regulator is enabled. If the board power supply is 3 V, the macro USBFS_3V_OPERATION must be used. If the supply voltage is unknown, it is better to use USBFS_5V_OPERATION because in this case the internal regulator is enabled.

Also please have a look at the KBA: Troubleshooting PSoC® 3, PSoC 4 L-Series, and PSoC 5LP USB Designs - KBA210620

Thanks,

Hima

0 Likes

Hi Hima,

The problem is with USBFS version 3.20.  A simple downgrade to 2.80 fixed this issue with no change to the code.

0 Likes