реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> LPC2388 USB host -- отсутствие OTG регистров
Des V. Maryin
сообщение Mar 9 2009, 16:49
Сообщение #1





Группа: Новичок
Сообщений: 6
Регистрация: 3-02-09
Пользователь №: 44 352



Пробую запустить 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 )

Подскажите, уважаемые коллеги, в какую сторону копать?
Go to the top of the page
 
+Quote Post
meister
сообщение Mar 10 2009, 07:06
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 219
Регистрация: 20-11-07
Пользователь №: 32 484



Питание на OTG (PCONP) есть?
Go to the top of the page
 
+Quote Post
Des V. Maryin
сообщение Mar 10 2009, 09:08
Сообщение #3





Группа: Новичок
Сообщений: 6
Регистрация: 3-02-09
Пользователь №: 44 352



Цитата(meister @ Mar 10 2009, 11:06) *
Питание на OTG (PCONP) есть?


PCONP |= PCONP_PUSB;
насколько я понял там одним битом включается USB "вообще". Или есть отдельный бит для OTG?
Go to the top of the page
 
+Quote Post
Alechek
сообщение Mar 10 2009, 09:45
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 241
Регистрация: 15-11-05
Из: Челябинск
Пользователь №: 10 882



Насколько я помню, в 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.
Go to the top of the page
 
+Quote Post
Des V. Maryin
сообщение Mar 10 2009, 13:05
Сообщение #5





Группа: Новичок
Сообщений: 6
Регистрация: 3-02-09
Пользователь №: 44 352



Спасибо, попробую его (пример от IAR) найти и внимательно посмотреть.

Сообщение отредактировал Des V. Maryin - Mar 10 2009, 13:05
Go to the top of the page
 
+Quote Post
Des V. Maryin
сообщение Mar 10 2009, 17:42
Сообщение #6





Группа: Новичок
Сообщений: 6
Регистрация: 3-02-09
Пользователь №: 44 352



Проблема решена, дело было в незапущенном OTG клоке в OTGClkCtrl. Прерывание приходит, буду разбираться дальше. Отдельное спасибо meister за наводку.
Go to the top of the page
 
+Quote Post
Androliz
сообщение Mar 11 2009, 18:41
Сообщение #7


Участник
*

Группа: Новичок
Сообщений: 34
Регистрация: 22-09-06
Из: Беларусь
Пользователь №: 20 595



Занимаюсь сейчас примерно той же задачей: LPC2388 + USBHost.Lite. Но плата у меня конкретного устройства, без поддержки OTG. Host stack запустился с первого раза. И файлы читал/писал. Дальше стал вопрос создания директорий. Выбрал tiny-FatFs и быстренько "прикрутил" её к hoststack'у. Пока работает.
Пока это делал столкнулся с проблемой многократного подключения-отключения флешки: при втором включении на этапе инициализации mass storage class (MS_init -> MS_TestUnitReady) не приходит прерывание и процессор зависает в цикле его ожидания. Поскольку планируется подключение только одной флешки зараз, то решил эту проблему полной реинициализацией HostStack'а после каждого отключения флешки. Хотя думаю это не оптимальное решение и хотелось сделать это более элегантно.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 23:54
Рейтинг@Mail.ru


Страница сгенерированна за 0.01385 секунд с 7
ELECTRONIX ©2004-2016