Dear friends,
I am developing an application using keil's RL-USB library to turn the microcontroller into a USB host controller so that I can read a flash memory device.
I am at the very beginning down the road and I want to use the keil's sample for LPC1788 board of embedded artists. the project is located at: C:\Keil_v5\ARM\Boards\Embedded Artists\LPC1788-32 Developers Kit\RL\USB\Host\MSD_File
I have designed my own board (I am not using embedded artists' board) and I have used USB2 as the host controller, not USB 1. Therefore I need to change the HOST controller in USB_Config.c from USB HOST 0 to USB HOST 1. I have done all the programming and everything is fine. There is just one problem that prevents the project from being compiled correctly: .\Obj\MSD_File.axf: Error: L6218E: Undefined symbol usbh1_hcd_ohci (referred from usb_config.o).
It is important to say that the program is compiled successfully when USB HOST 0 is chosen in USB_Config.c. I was wondering if anybody has faced the same problem and solved it before.
If you use LPC1788 oem board can you try it with Embedded Artists base board and go from there.
Ok, I've tried it now with the Embedded Artists base board. The jumpers are set as described in Abstract.txt.
But the result is the same. Without any modifications on the example, the program does not return from the function USBH_Initialize(0).
What versions do you have of: - Embedded Artists LPC1788 OEM board - Embedded Artists base board - MDK - Middleware - LPC1700 DFP
I use the following versions: - LPC1788 OEM Board REV D - OEM Base Board rev PB1 - µVision V5.14.0.0 - MDK-Middleware 7.00-beta - LPC1700_DFP 2.1.0
I have: - LPC1788 OEM Board REV A - OEM Base Board rev A
and it works on my board, perhaps you can try to find out what are the differences between these two boards regarding USB interface.
Thanks for your help. I finally got it running.
The problem was the I2C communication with the OTG Transceiver for setting the Pull-downs on the D+ and D- data lines. If the communication fails, the program stays in an endless while loop.
I do not use the OTG Transceiver, so disable it in RTE_Device.h solved the problem. Important fact I noticed is that disable the entire Port U1 will not disable the OTG initialization.
Also it works only with the port functionality configuration "U1 = host, U2 = host". Why this is I don't know.
However everything I need for my project now works well.