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?
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