Mark Butcher

Controlling USB speed using internal pull-ups (M5222X, M5221X)

Discussion created by Mark Butcher on Jun 16, 2008
Latest reply on Jun 28, 2008 by Mark Butcher
Hi All USB Gurus

When working with the internal USB transceiver and its pull-up / pull-downs I was thinking that it should be possible to control how the (PC-)Host detects the USB function as follows:

Test 1: (Full-speed connection)
- Pull D+ high in OTG_CTRL by setting (DP_HIGH | OTG_EN) to signal a full speed function.
The D+ line us pulled high and the host detects this as a full-speed function connect.

Test 2: (Low-speed connection)
- here I didn't find any possibility to control this.

Therefore I am wondering whether there is no advantage of being able to connect as a low-speed device?
Any ideas?

A further question I have is about the electrical connection. I am using the M52223EVB and have found that  not all hosts are communicating correctly with it. I believe that the SW is generally correctly enumerating when connected so I am thinking that it must be something to do with the electrical part.
There are my experiences:
1. PC 1 (Vista) always enumerates on 2 USB ports. I can connect and disconnect many times and each time it sees the connected device (in this case as a virtual COM port).
2. When I connect to a second PC (WinXP) the PC host doesn't recognise the device. I see that the D- line never goes above about 1V and it gives up after several seconds without any attempts to exchange data.
3. I do the same test as 2 with a USB analyser connected between to the board and the PC. Now it works 90% of the time. (I seem to have to sometimes power down the board to get it to work correctly after it has failed).
4. I do the same test as 2 but connecting to a USB2.0 4-port hub instead of directly to the PC. Now it always works correctly (100%).

This suggests to me that the transceiver setup (pull-up/down control?) may not be perfect since it is on the limit somewhere.

Has someone similar experiences or can a Guru say what I should improve?



Message Edited by mjbcswitzerland on 2008-06-17 01:34 AM