Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: LPC2388 USB host -- отсутствие OTG регистров
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Des V. Maryin
Пробую запустить USB host на LPC2388, доска SK-MLPC2388 от starterkit.ru, схема здесь: http://www.starterkit.ru/doc/SK_MLPC2378_88.pdf
разъем USB host подключен к первому каналу USB (p0.29, p0.30). Для начала пробую адаптировать под эту плату код Usbhost.Lite от NXP
Использую CrossStudio с отлажчиком MT-Link.
После инициализации хоста, при вставлении флешки в разъем не приходит прерывание. Программный вызов прерывания ( VICSoftInt = (1<<22); ) приводит к вызову обработчика, отсюда делаю вывод что прерывания сконфигурированны правильно.

При более пристальном изучении кода инициализации хоста пришел к выводу что в нем не хватает такого куска:

#define PORT_FUNC_U1DEV_U2HST 0
#define PORT_FUNC_U1HST_U2HST 1
#define PORT_FUNC_RESERVED 2
#define PORT_FUNC_U1HST_U2DEV 3
OTGStCtrl = ( PORT_FUNC_U1HST_U2DEV << OTGStCtrl_PORT_FUNC_BIT );

так как в спецификации на LPC23xx упоминается, что OTG контроллер перед использованием необходимо сконфигурировать, дабы он понял, что порт 1 ( в моем случае ) будет использоваться в режиме хоста.

проблема собственно в том, что при выполнении этой строчки кода я вылетаю в Data Abort.
в LPC2388.h OTGStCtrl определен так:
#define OTGStCtrl (*(volatile unsigned *)0xFFE0C110)
и это полностью совпадает с LPC23xx User Manual
при попытке просмотреть под отладчиком содержимое памяти по этому адресу вижу 0xAAAAAAAA, что наводит на мысли о том, что отладчик тоже не справляется с чтением этого региона. (все адреса, начиная с FFE0C100, задефайненного (правда в кейловских хедерах, но думаю это не принципиально) как USBOTG_BASE_ADDR читаются как 0xAAAAAAAA )

Подскажите, уважаемые коллеги, в какую сторону копать?
meister
Питание на OTG (PCONP) есть?
Des V. Maryin
Цитата(meister @ Mar 10 2009, 11:06) *
Питание на OTG (PCONP) есть?


PCONP |= PCONP_PUSB;
насколько я понял там одним битом включается USB "вообще". Или есть отдельный бит для OTG?
Alechek
Насколько я помню, в 2388 (MCB2300) подходит изумительно пример от IAR
..\IAR Systems\Embedded Workbench 5.4\arm\examples\NXP\LPC24xx\IAR-LPC-2478\USB_Host_Demo\
Надо только обрезать все касающееся LCD

И, куря UM понял что разграничения на Host - Device в USB контроллере нет. Есть один, OTG, который состоит их Device, Host и коммутатора OTG.
Des V. Maryin
Спасибо, попробую его (пример от IAR) найти и внимательно посмотреть.
Des V. Maryin
Проблема решена, дело было в незапущенном OTG клоке в OTGClkCtrl. Прерывание приходит, буду разбираться дальше. Отдельное спасибо meister за наводку.
Androliz
Занимаюсь сейчас примерно той же задачей: LPC2388 + USBHost.Lite. Но плата у меня конкретного устройства, без поддержки OTG. Host stack запустился с первого раза. И файлы читал/писал. Дальше стал вопрос создания директорий. Выбрал tiny-FatFs и быстренько "прикрутил" её к hoststack'у. Пока работает.
Пока это делал столкнулся с проблемой многократного подключения-отключения флешки: при втором включении на этапе инициализации mass storage class (MS_init -> MS_TestUnitReady) не приходит прерывание и процессор зависает в цикле его ожидания. Поскольку планируется подключение только одной флешки зараз, то решил эту проблему полной реинициализацией HostStack'а после каждого отключения флешки. Хотя думаю это не оптимальное решение и хотелось сделать это более элегантно.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.