Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: LPC2148, USB
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
klen
Делаем новый черный ящик для самолетов. Начальник выдал платку на LPC2148 - сказал типа разберись с USB и как программировать. Почитал Тревора Мартина - жиденько, непонятно как на компе писать софт обмена. По контроллеру понятно но мутновато. Тыкните носом в пример со стороны компа и со стороны контроллера.
Сразу возникла проблема программирования - утилита LPC210x - посылает лесом, 2103 берет без проблем. Гле туплю? сигналы нап лапы даются правильно
zltigo
Цитата(klen @ Mar 8 2007, 19:13) *
Сразу возникла проблема программирования - утилита LPC210x - посылает лесом, 2103 берет без проблем. Гле туплю? сигналы нап лапы даются правильно

Возьмите мою AT200 (лежит на форуме)или ныне официальную FlashMagic.
Alex B._
http://wiki.sikken.nl/index.php?title=LPCUSB
вот это посмотрите
Axel
TNKernel.com. Там есть все, что нужно. Если не поможет - обращайтесь, у меня тоже кое-что есть.
Alechek
Смотря в чем программировать.
Если в кейле - так с ним немало примеров идет. и вроде все рабочие.
Если в иаре - тоже примеры есть. Правда кривые. Но ничего, из USB_HID рабочий USB_VCOM получился..
С Universal Serial Bus Specification Revision 2.0 ознакомится все-равно обязательно!
У Тревора Мартина так, поверхностно все.
klen
спасибо, сегодня буду пробывать.
Bosicc
Я вот тоже пробую разобраться с USB. С точки зрения софта я разобрался, написал свой примерчик для отладочной платы MCB 2140. Все работало замечательно.
В новом устройстве также стоит LPC 2148 и обвеска такая же. Только разъем поставил mini B, но думаю проблема не в этом.
Когда подключаю кабель, то винда выдает что мое устройство не найдено. Я посмотрел в дебаггере и увидел, что я не получаю прерывание от EP_SLOW. То есть по рисету я попадаю в функцию обработки прерывания, но бин EP_SLOW в регистре USBDevIntSt не установлен. Когда проделіваю аналогичиски манипуляции с отладочной платой, то там прерывания от едпоинты возникают.
Незнаю даже в какую сторону думать... в сторону Железа или в сторону софта? help.gif
В качестве софта использовал пример от Keil UBSHID.
DASM
вобщем не буду никому ничего советовать, только подедюсь впечатлениями. Поставил USBBulk от Юрия Тёмкина www.tnkernel.com
Избавился полностью от головной боли с 2148. Заоодно и его операционку TNKernel и MicroWindows оттуда же пристроил. Воть. Доволен.
klen
Цитата(DASM @ Mar 19 2007, 09:48) *
вобщем не буду никому ничего советовать, только подедюсь впечатлениями. Поставил USBBulk от Юрия Тёмкина www.tnkernel.com
Избавился полностью от головной боли с 2148. Заоодно и его операционку TNKernel и MicroWindows оттуда же пристроил. Воть. Доволен.

Будем смотреть. А а то чето я залип .. скоро меня пороть начнут, за медленные темпы.
Bosicc
Народ, спасайте!

Уже 5 день пробую понять в чем проблема.

Использую LPC 2148.

Схемотехника следующая:

D+ через резистор в 33 Ома подведена к ноге 10 контроллера, конденсатор 18 пФ на землю, и резистором 1.5кОм подтянута к питанию.

D- через резистор в 33 Ома подведена к ноге 11 контроллера, конденсатор 18 пФ на землю.

Больше никаких ног связаных с USB не задействовано.

Проблема:
Не получаю прерывания от Ендпоинты 0. Подазрения, что то то забыл сделать в железе. ( Софт 100% рабочий, проверено на MCB 2140 )

Вопрос:

1. Будит ли такое чюдо работать?
2. Нужно ли использовать ногу P0.31 ( UBS_CONNECT ) ?
3. Нужно ли использовать ногу P0.23 ( Vbus ) ?
OVladimir
Цитата(Bosicc @ Mar 20 2007, 15:08) *
резистором 1.5кОм подтянута к питанию



через ключ к Р0.31, в дейташите этого проца всё это описано (Application information), на всякий случай посмотри схему вот тут:
http://www.embeddedartists.com/download/pd...rdSchematic.pdf
DASM
Да вобщем-то и без P0.31 все работает... И 0.23 тоже необязателен
Dron_Gus
Про земли не забыли? это так... всякое бывает...
Если раньше использовали UBS_CONNECT, то возможно прерывания от EP0 активизируются в прерывании от UBS_CONNECT...
Alechek
Цитата(DASM @ Mar 20 2007, 23:02) *
Да вобщем-то и без P0.31 все работает... И 0.23 тоже необязателен

Ничего подобного.
см errata последнюю
Цитата
USB.1 USB interface does not function if port pin P0.23 (Vbus ) is held low in GPIO mode
Introduction: The USB Vbus pin is shared as an alternate function with GPIO pin P0.23. The Vbus pin indicates
the presence of USB power. On reset, this pin is configured as a GPIO and it can be set to the Vbus
function using the PINSEL1 register (PINSEL1=0xE002 C004). The USB interface should be able
to function correctly if the Vbus feature is not used.
Problem: If P0.23 is used as a GPIO pin (i.e. the USB Vbus feature is not used) and is driven low(output) or
held low (input) then the USB interface will not function.
Workaround: P0.23 should be set high.
Note.1: Port pin P0.31 must not be driven low during reset. If low on reset the device behaviour is
undetermined.
DASM
На самом деле они пишут, что с этими ногами делать нельзя. У меня они просто NC, и все прекрасно работает в пусть и небольшой, но серии
Bosicc
Итак, я прочитав Еррату и посмотрев все предложенные примеры провел кучу экспериментов.

Проверил подключение земли, все необходимые ноги на земле.

Ногу P0.31 на всякий случай подтянул через резистор к Питанию 3.3В - Не заработало.

Ногу P0.23 прибывал делать как GPIO и как Vbus. Подключил через резистор к 3.3В - Не заработало.

Без подсоединения ног P0.31 и P0.23 то же - Не заработало.

Но прерывания от рисета происходят. Может проблема в самом чипе, что он не ставит флаг прерывания в ендпоинте ?
DASM
попробуйте пример с TNKernel зашить, а ? Он же рабочий полностью
Bosicc
Цитата(DASM @ Mar 21 2007, 11:16) *
попробуйте пример с TNKernel зашить, а ? Он же рабочий полностью


Я попробовал первый раз недею назад, оно не стратануло. Решил не парится и вернутся к 100% работающим примерам от Keil.

Сегодня попробовал еще раз, уделяя больше вниманию. В Дебаге прога не доходит даже до main(). Попробовал найти начало старта программы, но рассмотрение 3-х s файлов не дала результатов.

Может там надо что то подправить под себя???
У меня борда MCB 2140 ( чип LPC 2148 ) от Keil
Alechek
Ага, я почти про тоже. Их можно не использовать, но УЧИТЫВАТЬ обязатально!
Bosicc
После долгих эксперементов, USB на плате стартанул smile.gif
Точную проблему не удалось словить, но подозрения есть на плохую пайку.
Итак, рабочая конфигурация.

D+: подтянуто 1.5кОм к питанию, 15пФ конденсатор на землю, и через 33Ома к ноге 10 контроллера
D-: 15пФ конденсатор на землю, и через 33Ома к ноге 11 контроллера
P0.31: подтянуто к питанию через резистор.
Р0.23: подтянуто к питанию через 10кОм и через 100кОм на землю.

При монтаже следующей борды, буду идти последовательно и проверять в точность все возможные конфигурации.

Всем спасибо за участие и советы.
klen
Сегодня весь день "работал" над 2184, до USB я еще недоехал, отстаю от Вас, товарищи sad.gif

Проблема оказалось в том что через uart прошивка была в виде шаманства. Вчера работала, сегодня через раз, а после обеда даже ID контроллер не выдавал. Причем на TXD0 то был ответ, то небыло.. FlashMagic аналогично. Все шло через FT2232. Думали бобик сдох. В итоге я присобачил 20пин разъем и подпаял навесом JTAG проводочки к лапкам проца (на это ушло 2,5 часа и 3 кг нервов с такимже числом жизни). Тем немение проц завелся и даже работает под отладчиком. Пример как водится выводит мендр на лапку. Фигня в том что она работает переодически. Иногда залетает аборты и что самое странное иногда в swi обработчик, там зацикливается. Никаких настроек переферии не производится, только порта.

Сбоит жеско.. че делать? Может это быть от питания хренового - на плате импульсный стабилизатор, на питании видна борода ~0.1-0.05 вольта. Плата должна уметь работать от питания 5...120 вольт, вот и поставили регулятор такой.
Сергей Борщ
Цитата(klen @ Mar 22 2007, 19:37) *
Сбоит жеско.. че делать?
Похожие симптомы наблюдаю когда в питание ядра 2214 запаивают 3.3в стабилизатор вместо 1.8в. Но у 2148 отдельного входа питания ядра нет. А запитать временно от другого источника и тем самым исключить питание из возможных причин? Ноги питания/земли все запаны (мало ли, плохо пропаяли). Еще похожие симптомы при неправильной настройке PLL, когда на слишком большой скорости ядро работать пытается.
klen
Цитата(Сергей Борщ @ Mar 22 2007, 22:31) *
Похожие симптомы наблюдаю когда в питание ядра 2214 запаивают 3.3в стабилизатор вместо 1.8в. Но у 2148 отдельного входа питания ядра нет. А запитать временно от другого источника и тем самым исключить питание из возможных причин? Ноги питания/земли все запаны (мало ли, плохо пропаяли). Еще похожие симптомы при неправильной настройке PLL, когда на слишком большой скорости ядро работать пытается.


Про питание конечно буду проверять, вчера неуспел. А про фапч - если я его не инитю(как говорится пожарный режим должен работать всегда) то кристал должен работать полюбому - на маленькой частоте, ведь это режим при котором в нем еще и программы может не быть. Я прально понимаю?

Кстате вот какая фигня. Вспомнил. У нас 2 платы, впаяны пока в них только lpc и стабилизатор питания. Так вот на одной которая позавчера и вчера кое как работала был не распаян дросель на аналоговое питание. Впаяли досель - стало еще хуже - тоесть вообще перестало работать. Так что после подачи на аналог питания - стало еще хуже, наверно питание sad.gif.
Axel
Странные проблемы... У меня полетело все с пол-пинка. P0.31 - только для индикации коннекта, на входе STF202-22 (D+ там внутри подтянута), девайс питается от USB, софт - по мотивам TNKernel (вместе с OS), драйвер - свободный libusb0.
klen
Мучились долго упорно и трудолюбиво smile.gif - результат 0! Имеется ввиду с самосборной платой. Я стоько измерительныйх девайсов неикчему неприсоееденя.

Плюнули. Купили для отвода совести Olimex LPC-H2148 (хотели уже забить на 2148) и она почемуто сразу заработала. Даже не знаю злится или радоватся. Мож полубракованные микросхемы купили.

Пример выложенныей на олимексе для Olimex LPC-H2148 (http://sourceforge.net/projects/lpcusb) был бстренько собран в Eclipse и через ARM-USB-OCD залит в платку - и все сразу типа заработало. HID и USBSTOR сели в систему сразу, Serial и Castom попросили драйвер.

Все хорошо дебажится, удобно наблюдается внутрення жисть 2148. Лепота. Будем пытатся использовыать USBSTOR. Теперь когда железяка заработала ест вопросы про то как дальше двигаться.

1. После изучения исходников при работе как накопитель, возник вопрос. В используемом стеке имеется имплементация файловой системы EFS для SD карт, на нижнем уровне исходников вижу что весь обмен идет через SPI. Значит ли это что я могу достаточно просто подкрутить к SPI0 не SD а флешевые атмеловские микросхемы(наш накопитель состоит из 18 микросхем AT45DBxx )?

2. Тыкнете носом где читать и смотреть про то как писать софт на стороне PC для обмена с USB STORAGE

Зарание спасибо.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.