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