PDA

Просмотр полной версии : ATmega8 + PDIUSBD12 achieve USB-232 conversion



Genadi Zawidowski
11.02.2008, 13:31
В течении нескольких последних месяцев я искал образец применения микросхемы PDIUSBD12 как контроллера USB при реализации виртуального COM-порта (CDC - Communication Device Class). По непонятным причинам использование дескрипторов из соответствующих примеров от Атмела и Микрочипа давало наполовину работающие устройства. И, как обычно, хотелось посмотреть на чужую работающую конструкцию. Собственно, из той конструкции, на которую я сейчас даю ссылочку, был взят только Configuration Descriptor - и всё у меня заработало сразу...

Устройство опубликовано на одном китайском форуме -
http://blog.chinaunix.net/u/3272/showart_245587.html
пользователем c почтовым адресом (ship_ AT 163 DOT com).

Genadi Zawidowski
11.02.2008, 13:47
Предвидя вопросы - а почему я не использовал микросхемы от FTDI или контроллеры со встроенным USB - ком-порт мне на АЧХ-метре не сильно нужен, в дальнейшем будет выглядеть по другому (но на первое время может и пойдет). Посему FTDI или другие конверторы отпали. Кроме того, я не хотел использовать чужие компоненты с закрытыми исходниками (а нектороые применения микросхем от FTDI заставили бы это сделать).
Микросхемы со встроенными контроллерами пока дороговаты у нас. А те что есть - или ARM или 51-я архитектура. Да и хотелось освоить именно этот чип (Philips/NXP PDIUSBD12) - без привязки к микроконтроллеру, который будет его обслуживать.

khach
11.02.2008, 16:00
Геннадий, рад что Вы заинтересовались USB, со скоростным интерфейсом прибор получится гораздо более удобным. Только хочу предостеречь от "огорода" из отдельного контроллера USB и процессора. Это было правильное техническое решение лет пять назад. Сейчас бы порекомендовал смотреть в сторону процессора с встроенным USB. Или на базе ядра той же Атмеги (если есть умение в их программировании) или на АРМы. Есть куча свободных библиотек и примеров, и не только CDC. Посмотрите на младшие AT91SAM7S64 или LPC2142- они в два раза дешевле версий с полным обьемом флеша, и дешевле PDUSBD12.
Хотя мне сейчас более нравится LPC2364 (без использования эзернета) - к нее есть аппаратный I2S, что позволяет спектроанализатору быть и полноценным SDR приемником - в процессоре кроме CDC класса для управления и приема спектра определен USB audio class и в спектранализаторе стоит стереокодек выкорырянный из старой аудиокарты.

Genadi Zawidowski
11.02.2008, 18:50
в процессоре кроме CDC класса для управления и приема спектра определен USB audio class
А вот про этопоподробнее... Я уже устал отлаживать - теперь ищу готовый чей-нибудь дескриптор - от аудиокарты с записью и воспроизведением. Начав с проекта http://www.circuitcellar.co m/AVR2004/HA3553.html
как со стартовой точки для освоения USB, не смог заставить свое устройство (на базе выправленной китайской же программы) выдавать аудио поток. Поглощает она его исправно. Если сможете распечатать дескрипоры (и все endpoint) Вашей совмещенной CDC+AUDIO CLASS - будет очень большая помощь. Утилита где-то была, если у Вас её нету - позже выложу.
Насчет применения контроллеров со встроенным USB - не хотелось с этого начинать (тем более, что в переспективе было как раз изготовление высокоскоростного ЦАП/АЦП для SDR - а пропускать всё это сквозь процессор не хотелось - но что-то с I2S всеравно придется делать). Да и еще раз повторюсь, AT90USB... у нас стоят неприлично дорого.
Может подскажете, какие из распространенных процессоров с "набортным" USB позволяют обходиться без внешней памяти? Не 51/52 архитектуры.

khach
11.02.2008, 22:54
Геннадий, я с самого начала ориентировался на АРМ, но потерпел фиаско с эмуляцией I2S на LPC2148. Сейчас вторая итерация.
Памяти в АРМе достаточно для многих задач, даже для небольшого фурье преобразования(в LPC2364-2368 от 8 до 58 кбайт в зависимости от кристалла и включенных блоков). В качестве примеров брал примеры кода от KEIL http://www.keil.com/download/docs/308.asp
http://www.keil.com/download/docs/334.asp
А пример дескриптора композитного устройсва выковырял из пакета разработчика от tas1020 ( там композитное устройство аудио c вводом-выводом (но 16 бит только) + HID)
Ищите sllc254.zip на сайте TI. Если неполучится скачать, выложу на рапиду.
С композитным устройством с CDC были проблемы с драйверами от ВинХП, пришлось ставить сервиспак.
В общем все это еще в стадии разработок- делаю плату под LPC2366, код обкатываю на LPC2148. Как только будет нечто полностью рабочее- поделюсь.
Встроенный в LPC2366 USB мне понравился наличием ДМА канала между I2S и USB в том числе, можно не отвлекать процессор на забирание данных из одного устройства и выпихивание во второе.
Геннадий, у меня вопрос по DDS. Приходилось ли использовать режимы свипирования по частоте с использованием аппаратного блока DDS для свипа? Я горожу анализатор с диапазоном до 2-3.5 ГГц, где первый гетеродин включен в петлю ФАПЧ AD9956. Только недавно разобрался с режимом управления свипом от процессора, что бы точно знать момент следующего шага по частоте (дергая ногу IO_UPDATE при установленном бите Load SRR) теперь пытаюсь разобраться с индикатором захвата петли ФАПЧ. Цифровой страбатывает слишком рано, еще до реального захвата, а как использовать режим lead/lag я пока до конца непонял, там надо городить аналоговую схему какую-то. Если вы спросите, зачем весь этот огород и не проще ли выставлять регистры DDS в ручную, то я просто неуспеваю все- свипировать, ждать захвата фапч, мерять по трем каналам, фильтровать, считать фазу, выпихивать результат по USB так, что бы на экране компа был "живой" сигнал, то есть хотя бы 15-20 свипов в секунду.
А свой аудио канал хочется потому, что цена на аудиокарты с высококлассными АЦП, на которых можно рассчитывать на динамику в 120 дБ вызывают "амфибийную асфикцию" (с) и весь процесс разработки анализатора оказывается приблизительно равен цене одной аудиокарты.

Genadi Zawidowski
12.02.2008, 00:52
Приходилось ли использовать режимы свипирования по частоте с использованием аппаратного блока DDS для свипа?
Нет, ни в одном из устройств не приходилось.

то я просто неуспеваю все- свипировать
упой вопрос можно - а зачем все на одном процессоре делать? Да и не надо все одновременно делать - ведь, пока ФАПЧ не встанет на место, запускать АЦП смысла нет никакого? но Вам виднее...

АЦП отдельный всячески приветствую - по-любому, когда все - и управление свое и АЦП свой (внутри устройства - с минимальными наводками - как почитаешь про ужасы в SDR-теме вокруг кабелей).

А пример дескриптора композитного устройсва выковырял из пакета разработчика от tas1020 ( там композитное устройство аудио c вводом-выводом (но 16 бит только) + HID)
Ищите sllc254.zip на сайте TI. Если неполучится скачать, выложу на рапиду.
С композитным устройством с CDC были проблемы с драйверами от ВинХП, пришлось ставить сервиспак.
Спасибо за наводку, sllc254.zip скачал - буду разбираться.
Ну без SP2 в ней просто не выжить...