AnsweredAssumed Answered

LPC4357 with external USB Phy

Question asked by lpcware Employee on Jun 15, 2016
Latest reply on Feb 25, 2020 by Jean-Marc Rouxel
Content originally posted in LPCWare by chris.bayley on Thu Jan 29 16:32:59 MST 2015
Has anyone had success using an external USB Phy with the 4357 ?

I have been working on this for a while, and following Application Note AN11309 I have configured the micro for an external transceiver on the ULPI bus.
Communication over the ULPI bus is established but the transceiver is not getting configured correctly.

In this thread royg describes a problem having the same symptoms on the 4350. His problems were addressed when the 4350 went from RevA to RevC although no acknowledgment of the problem was made in the errata.

I'll summarize the problem here but link to the full description and obseravtions as a PDF in my dropbox (also attached to this post) as the tabularized information seems diffcult to present here.

The LPC43xx Microcontrollers from NXP mostly all feature 2 High-Speed USB Controller logic units, however the these 2 controllers are furnished with 1 High-Speed on-chip Phy and 1 Full- Speed on-chip Phy. If the user wishes to employ 2 high-speed Phys then a second High-Speed Phy can be attached to selected MCUs in the family line via an industry standard ULPI bus. When appropriately configured the MCU will direct all USB traffic across the bus to the external Phy. Such configuration is detailed in the Application note AN11309 from NXP.
I am developing with a LPC4357-Xplorer++ kit from NGX Technologies complimented by a breakout board designed in house fitted with a USB3343 USB transceiver.
The LPC4357 MCU has been configured as per the application note and communication with the transceiver has been established, however normal USB communications are NOT yet working.
I am fairly confident that the MCU is properly configured for ULPI communications as we are able to read and write the internal registers of the attached Phy and the contents of those registers are as we expect from the data-sheet.

The most immediate problem with the commencement of a USB connection is the the proper configuration of the USB bus pull-up/pull-down and termination resistors is not taking place and hence the USB device (the LPC dev board) is not being detected by the host.
I have been able to monitor the ULPI bus between the MCU and transceiver and log the transactions that occur there while the transceiver is configured for operation. A transaction log in the linked report shows that the transceiver is misconfigured for the desired operating mode.
The MCU has been configured to operate USB1 in High-Speed Device mode in which the pre-connection state requires D+ to be pulled up but we can see from the logs that D+ is in fact configured for Pull-Down, additionally we note that in fact the configuration of Pull-Up Pull-down and termination resistors meets the criteria of an invalid configuration as defined by the USB3343 data sheet and the behavior of the transceiver in that state is undefined.

Further Work:
Pending advice from NXP or other parties I will manually configure the ULPI registers in the Phy setting the pull-ups and termination resistors into valid state and hope that the LPC's USB controller can be coaxed into life.

I can be contacted via my contact page or via the email given in the report