Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Молчит USB на LPC1751, но работает на LPC1768
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
ruslannd
Доброго времени суток.

есть две почти одинаковые схемы, одна на lpc1751, другая на lpc1768. Заливается одинаковая программа одинаковая для обоих контроллеров (по даташиту получается, что они в части USB одинаковые, а отличаются памятью). Все, что не касается USB device - работает на обоих контроллерах. USB работает только на 1768. Не могу понять в чем дело.
Cхема подключения USB одинаковая. Программы пробовал разные, из разных USB библиотек - результат одинаков.
Где-то на форуме видел, что человек сталкнулся с точно такой же проблемой на LPC1752, но там тема заглохла.
Помогите кто чем может)))) Кто-нибудь запускал USB на LPC1751/1752?

Заранее спасибо.
megajohn
ножки на USB используются одинаковые ? А то там есть маленькая премудрость
ruslannd
Цитата(megajohn @ Jan 21 2014, 00:35) *
ножки на USB используются одинаковые ? А то там есть маленькая премудрость


Вроде одинаковые. А что за премудрость?
jcxz
LPC1751 не пробовал, но LPC1768->LPC1758 без проблем.
Начинал проект на отладке (LPC1768) с USB-device, когда появилась готовая раб. плата с LPC1758 просто поменял номера ног и всё пошло без проблем.
Разберитесь хотя-бы, что именно у вас не работает - на каком этапе затыкается.
megajohn
Цитата(ruslannd @ Jan 21 2014, 00:41) *
Вроде одинаковые. А что за премудрость?

не, у посчитал LPC1768 и LPC1778 схожими, но не так.
Вообщем в LPC1778 есть такое:
Note that GPIO pins P0[29] and P0[30] are shared with the USB_D+ and USB_D- pins
and must have the same direction. If either DIR0 bit 29 or 30 are configured as zero, both
P0[29] and P0[30] will be inputs. If both DIR0 bits 29 and 30 are ones, both P0[29] and
P0[30] will be outputs
andrewlekar
Connect лапа дергается?
У LPC1778 другие номера эндпоинтов используются.
Память под USB дескрипторы правильно разместили?
jcxz
Цитата(megajohn @ Jan 21 2014, 11:57) *
не, у посчитал LPC1768 и LPC1778 схожими, но не так.
Вообщем в LPC1778 есть такое:

Читайте ветку внимательнее. При чём тут LPC1778???
Между LPC175x и LPC176x различий очень мало. А LPC177x уже сильно от них отличается.
ruslannd
Цитата(andrewlekar @ Jan 21 2014, 10:17) *
Connect лапа дергается?
У LPC1778 другие номера эндпоинтов используются.
Память под USB дескрипторы правильно разместили?


Connect в единице. Хотя, возможно, при включении происходит инициализация USB, и он переключается. Физически Connect не использую, т.к. в мануале сказано, что он для програмного перезапуска или что-то вроде этого. Мне это не нужно. Просто повесил ресзистор на +3v3

А вот с памятью я не знаю где смотреть. Я плохо понимаю, где надо выделять память. В меру беглое чтение даташита результата не дало. Может ткнете куда надо? Или в приаттаченном примере посмотрите?

Мне кажется, что дело именно в памяти, что мною найденные примеры были расчитаны на жирные LPC17xx, а на самой хилой 1751 работать не хотят из-за того, что неправильно память где-нибудь в модуле USB распределена. Хотя, все компилится и компилятор говорит о том, что требуется меньше 1кБ ОЗУ
ruslannd
Сделал следующее:
Спаял две одинаковые платы с одинаковыми компонентами из одних и тех же упаковок, но на одну поставил LPC1751, а на другую LPC1758.
Компилил, как на 1751 и заливал в оба контроллера без изменений

В результате на 1758 USB работает без проблем, а на 1751 - нет((
Эту же прошивку параллельно заливал в LPC1768 в аналогичной схеме - все работает как часы.
По мануалу (он общий для этих трех контрллеров) эти контроллеры для меня различаются только объемом памяти.

Может, будут какие идеи?
andrewlekar
Резистор между +3.3 и D+?

Открыл наконец доку по LPC1751. Блин, там всего 8к озу на всё. Вряд ли дело в памяти. А вот инициализация частоты у вас странная.
Для PLL0 MSEL = 100, а NSEL = 4. При этом для PLL1 MSEL = 6, а PSEL = 2. Если у вас кварц 4 мгц, то сам проц работать будет, а вот 48 мгц для USB уже не получается. Если у вас кварц 12 мгц, как написано в комментариях, то у вас проц не должен запускаться.
ruslannd
Цитата(andrewlekar @ Jan 22 2014, 09:22) *
Резистор между +3.3 и D+?

Открыл наконец доку по LPC1751. Блин, там всего 8к озу на всё. Вряд ли дело в памяти. А вот инициализация частоты у вас странная.
Для PLL0 MSEL = 100, а NSEL = 4. При этом для PLL1 MSEL = 6, а PSEL = 2. Если у вас кварц 4 мгц, то сам проц работать будет, а вот 48 мгц для USB уже не получается. Если у вас кварц 12 мгц, как написано в комментариях, то у вас проц не должен запускаться.


Резистор, конечно, есть, на 1к5.

Кварц на 8Мгц. С LPC1768 такие настройки уже третий год штампуются.

Здесь разница именно в контроллерах. Вот только где?
andrewlekar
Ну вот в даташите написано, что с такими настройками как у вас, не должно ничё работать. 8 мгц с множителем 100 даст Fcco = 800, а это нельзя. Про PLL1 сказано, что он с кварцами до 10 мгц не стартует.
ruslannd
Цитата(andrewlekar @ Jan 22 2014, 09:37) *
Ну вот в даташите написано, что с такими настройками как у вас, не должно ничё работать. 8 мгц с множителем 100 даст Fcco = 800, а это нельзя. Про PLL1 сказано, что он с кварцами до 10 мгц не стартует.


Вы правы, за исключением того, что Fcc=400 (итоговый множитель там 200, а не 100, но есть предделитель на 4), А с PLL1 косяк вышел, будем исправлять. Спасибо за замечания.

С USB только что разобрался, оказалось, что ребята из Keil'a неправильно обращались с регистром USBClkSt и ждали когда в его бите 3 появится единица. Недоразумение исправил. Все заработало. Всем спасибо.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.