Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: usb uart с большим буфером
Форум разработчиков электроники ELECTRONIX.ru > Аналоговая и цифровая техника, прикладная электроника > Цифровые схемы, высокоскоростные ЦС
ramil111
Вопрос такой:

нужно от компьютера управлять с периодом 1 миллисекунда - выдавать через 1мс управляющие байты

но! комп на винде не система реального времени, и работает с интервалами 20-100мс

Задача:
- создать usb-uart преобразователь с внутренним буфером (фифо) порядка 100кбайт
- и из буфера выдавать по одному байту строго через 1 миллисекунду

--------------
Подскажите, как это наиболее просто сделать?
VCO
На мой взгляд, проще, чем на USB-шном микроконтроллере с нужным количеством ОЗУ, это вряд ли на чём ещё можно сделать.
kovigor
Цитата(ramil111 @ Feb 22 2013, 12:44) *
Подскажите, как это наиболее просто сделать?

Прежде всего нужно спросить себя, что будет (c объектом управления), если компьютер зависнет, и в результате поток байтов прервется. А ведь это абсолютно реально. На этом фоне замирание передачи на 20мС просто незаметно, вам не кажется ? Я уже молчу о том, что для реализации надежной передачи данных USB вообще не подходит. Можете рассказать, зачем вам потребовалась такая экзотика ?
SyncLair
Цитата(ramil111 @ Feb 22 2013, 12:44) *
Задача:
- создать usb-uart преобразователь с внутренним буфером (фифо) порядка 100кбайт
- и из буфера выдавать по одному байту строго через 1 миллисекунду
Подскажите, как это наиболее просто сделать?

Берёте контроллер USB Cortex M3 что нить из топовых NXP или STM с 96 кб ОЗУ на борут
делает хитрое УСБ устройство. Схемотехника простая.

Если число экземпляров маленькое -- берёте NXP там перифирия проще
если важан цена и серия берёте STM.
ramil111
Цитата(kovigor @ Feb 22 2013, 13:50) *
Прежде всего нужно спросить себя, что будет (c объектом управления), если компьютер зависнет, и в результате поток байтов прервется. А ведь это абсолютно реально. На этом фоне замирание передачи на 20мС просто незаметно, вам не кажется ? Я уже молчу о том, что для реализации надежной передачи данных USB вообще не подходит. Можете рассказать, зачем вам потребовалась такая экзотика ?

задача самая простая - сделать генератор сигналов на цап на частоту 50Гц 8 каналов

хотелось взять dac8800 и соединить его с компьютером,
но! мне рассказали про интервал для потока 20мс

нужен буфер порядка на 1 секунду, за которое комп успеет накачать еще данных
------------
"USB вообще не подходит" - на стандартном компе - только он и есть!
kovigor
Цитата(ramil111 @ Feb 22 2013, 16:39) *
"USB вообще не подходит" - на стандартном компе - только он и есть!

Тогда эта задача не должна решаться таким образом. Берете обычный переходник USB <-> COM, и загружаете в ваш генератор данные, хоть из любой стандартной терминалки. Естественно, в генераторе должно быть достаточно памяти для хранения этих данных, что позволит не зависеть от машины и ее тайм-аутов. Для генерации сигналов такой низкой частоты вам хватит обычной микросхемки Serial EEPROM требуемого объема (на скорости 115200 Бит/Сек. секунда примерно соответствует 12 КилоБайтам) и дешевого AVR ...
ramil111
Цитата(kovigor @ Feb 22 2013, 18:12) *
Тогда эта задача не должна решаться таким образом. Берете обычный переходник USB <-> COM, и загружаете в ваш генератор данные, хоть из любой стандартной терминалки. Естественно, в генераторе должно быть достаточно памяти для хранения этих данных, что позволит не зависеть от машины и ее тайм-аутов. Для генерации сигналов такой низкой частоты вам хватит обычной микросхемки Serial EEPROM требуемого объема (на скорости 115200 Бит/Сек. секунда примерно соответствует 12 КилоБайтам) и дешевого AVR ...

CY7C64225
USB to UART Bridge Controller
Integrated 64-byte transmit and 64-byte receive buffer
-------------
вот как это прочитал - подумал: может есть такие контьроллеры с буфером в 100 килобайт?

было бы идеально!
kovigor
Цитата(ramil111 @ Feb 22 2013, 17:19) *
было бы идеально!

Зачем ? Копеечный переходник + стандартная терминалка. На стороне генератора - обычный UART, дешевая AVRка и микросхема Serial EEPROM. Какой смысл создавать себе трудности на ровном месте ?
P.S. А зачем 100 КБайт ??? Чтобы хранить отсчеты синусоиды, внутренней памяти той же ATMega88 с головой достаточно ...
P.P.S. Я уже молчу о том, что вам вполне может хватить ЦАПа на резисторах с повторителем на ОУ:
http://easyelectronics.ru/parallelnyj-cifr...sxeme-r-2r.html
ramil111
Цитата(kovigor @ Feb 22 2013, 18:21) *
Зачем ? Копеечный переходник + стандартная терминалка. На стороне генератора - обычный UART, дешевая AVRка и микросхема Serial EEPROM. Какой смысл создавать себе трудности на ровном месте ?
P.S. А зачем 100 КБайт ??? Чтобы хранить отсчеты синусоиды, внутренней памяти той же ATMega88 с головой достаточно ...
P.P.S. Я уже молчу о том, что вам вполне может хватить ЦАПа на резисторах с повторителем на ОУ:
http://easyelectronics.ru/parallelnyj-cifr...sxeme-r-2r.html

1) стандартное решение - контроллер с усб интерфейсом и большой памятью, просто хотелось не делать вручную - а максимально использовать готовыt чипы.

2) р-2р - это не кошерно (любительство какое то), dac8800 (или любые dac) - значительно проще и дешевле
kovigor
Цитата(ramil111 @ Feb 22 2013, 18:30) *
1) стандартное решение - контроллер с усб интерфейсом и большой памятью, просто хотелось не делать вручную - а максимально использовать готовыt чипы.
2) р-2р - это не кошерно (любительство какое то), dac8800 (или любые dac) - значительно проще и дешевле

Вам виднее. Хотите использовать дорогую и экзотическую элементную базу ? Используйте. Смысла в этом лично я не вижу ...
ramil111
Цитата(kovigor @ Feb 22 2013, 19:36) *
Вам виднее. Хотите использовать дорогую и экзотическую элементную базу ? Используйте. Смысла в этом лично я не вижу ...

- чем больше стандартных компонент - тем проще в проектировании,
- цена пока не играет роли
------------------
"экзотическую элементную базу" - так я и спрашиваю - как проще сделать (не дешевле - а проще для меня).
задача в общем тривиальная, но не хочется самому руками что то городить.
тем более - что мне нужно минимум 8 каналов цап
Дмитрий_Б
USB имеет режим доставки данных с заданным темпом: изохронная передача данных. 1 мс - период передачи кадров. Это требование стандарта. Если точность частоты кварца ПК устраивает, то в принципе вопросов нет.
Другое дело, сможете ли сделать функцию в соответствии со стандартом.
ramil111
Цитата(Дмитрий_Б @ Feb 22 2013, 20:52) *
USB имеет режим доставки данных с заданным темпом: изохронная передача данных. 1 мс - период передачи кадров. Это требование стандарта. Если точность частоты кварца ПК устраивает, то в принципе вопросов нет.
Другое дело, сможете ли сделать функцию в соответствии со стандартом.

Другое дело, сможете ли сделать функцию в соответствии со стандартом -

- уточните, пожалуйста, что Вы имеете ввиду (где проблема): программную реализацию выдачи в usb порт,

или аппаратную реализацию usb контроллера (подключенного к usb порту компьютера)?
kovigor
Цитата(Дмитрий_Б @ Feb 22 2013, 20:52) *
USB имеет режим доставки данных с заданным темпом: изохронная передача данных. 1 мс - период передачи кадров.

Еще один экскаватор в детской песочнице. Задача решается на подвернувшейся под руку АВРке, вообще без внешнего ОЗУ, за один вечер. Записывается в ПЗУ или во внутреннее ОЗУ МК массив отсчетов синусоиды и выдается на ЦАП. Фазу менять можно очень просто - сдвигая указатели в массиве. А можно и без ЦАП обойтись, достаточно использовать ШИМ и затем ФНЧ. У Атмела даже есть такой апп.ноут - генерация DTMF посредством ШИМ.
P.S. Решение на спец. МК выйдет гораздо сложнее и гораздо дороже ...
ramil111
Цитата(kovigor @ Feb 23 2013, 00:26) *
Еще один экскаватор в детской песочнице. Задача решается на подвернувшейся под руку АВРке, вообще без внешнего ОЗУ, за один вечер. Записывается в ПЗУ или во внутреннее ОЗУ МК массив отсчетов синусоиды и выдается на ЦАП. Фазу менять можно очень просто - сдвигая указатели в массиве. А можно и без ЦАП обойтись, достаточно использовать ШИМ и затем ФНЧ. У Атмела даже есть такой апп.ноут - генерация DTMF посредством ШИМ.
P.S. Решение на спец. МК выйдет гораздо сложнее и гораздо дороже ...

вот две штуки подсказали:

The TUSB3200A integrated circuit (1С) is a universal serial bus (USB) peripheral interface device designed specifically for applications that require isochronous data streaming.

PCM2900 texas instruments. стандартное usb audio устройство.
---------------
оба устройства работают в "Изохронные передачи (Isochronous Transfers) "
-----------------
осталось демо платы подобные найти!
----------------------------------------
вот могут FT232H или FT2232H - работать в изохронном режиме? было бы идеально!
kovigor
Цитата(ramil111 @ Feb 23 2013, 00:55) *
осталось демо платы подобные найти!

Просто смешно. Вы бы уже за то время, которое этот вопрос обсуждается, половину работы бы сделали. Ладно. Делайте как знаете, я более в этом обсуждении не участвую. Не хочется обсуждать неразумные идеи и решения ...
P.S. Или вы программист, которому поручили задачу схемотехника ? Тогда все ясно, остается только посочувствовать ...
aaarrr
Цитата(kovigor @ Feb 23 2013, 01:06) *
Просто смешно. Вы бы уже за то время, которое этот вопрос обсуждается, половину работы бы сделали. Ладно. Делайте как знаете, я более в этом обсуждении не участвую. Не хочется обсуждать неразумные идеи и решения ...

ТС хочет передавать данные с PC на DAC, каким боком ему поможет генератор синуса (и почему синуса?) на AVR'ке?
kovigor
Цитата(aaarrr @ Feb 23 2013, 01:31) *
ТС хочет передавать данные с PC на DAC, каким боком ему поможет генератор синуса (и почему синуса?) на AVR'ке?

Прошу прощения, недосмотрел. Там действительно написано "сигналов", а не "синуса". Но пронципиально это дела не меняет ...
Дмитрий_Б
Цитата(ramil111 @ Feb 22 2013, 23:35) *
Другое дело, сможете ли сделать функцию в соответствии со стандартом -

- уточните, пожалуйста, что Вы имеете ввиду (где проблема): программную реализацию выдачи в usb порт,

или аппаратную реализацию usb контроллера (подключенного к usb порту компьютера)?

Проблема в умении правильно сделать endpoint`ы. Впрочем, я давно не занимался вопросом, возможно готовые микросхемы с хорошей поддержкой есть. Тогда проще. Хотя дескрипторы функции (это терминология стандарта USB) всё равно писать придётся...
Ещё не легче - драйвер для вашего приборчика под Windows писать. Хотя опять-таки, если Вы профессиональный программист - то и это решается (хотя мне таких программистов встречать не доводилось).
На заре USB аббревиатура расшифровывалась - unused serial bus. У Вас есть повод разобраться - почему...
ramil111
Цитата(Дмитрий_Б @ Feb 23 2013, 12:40) *
Проблема в умении правильно сделать endpoint`ы. Впрочем, я давно не занимался вопросом, возможно готовые микросхемы с хорошей поддержкой есть. Тогда проще. Хотя дескрипторы функции (это терминология стандарта USB) всё равно писать придётся...
Ещё не легче - драйвер для вашего приборчика под Windows писать. Хотя опять-таки, если Вы профессиональный программист - то и это решается (хотя мне таких программистов встречать не доводилось).
На заре USB аббревиатура расшифровывалась - unused serial bus. У Вас есть повод разобраться - почему...

Все проблемы легко решаются применением фирмваре - где есть готовые драйвера, и даже примеры программ (на компьютере)
вот статейку нашел:
"AN_180 FT232H MPSSE Example - USB Current Meter using the SPI Interface"

где 2 штуки 12-битных ацп цепляется к усб используя одну FT232H + пример программы,

будем разбираться.
(другое дело - как будет с подвисанием канала из за винды - соберем, посмотрим
против винды мне уже присоветовали:
1) задать максимальный приоритет своей программы - типа "реал тайм"
2) оставить на одном ядре процессора компьютера только свою программу, остальные раскидать по другим ядрам)

Цитата(kovigor @ Feb 23 2013, 01:06) *
Просто смешно. Вы бы уже за то время, которое этот вопрос обсуждается, половину работы бы сделали. Ладно. Делайте как знаете, я более в этом обсуждении не участвую. Не хочется обсуждать неразумные идеи и решения ...
P.S. Или вы программист, которому поручили задачу схемотехника ? Тогда все ясно, остается только посочувствовать ...

и не программист, и не схемотехник,
так, любитель,
"неразумные идеи и решения" - как не профессионалу, мне в большинстве случаев необходим пример готового решения, которое я минимальными переделками (и пайками) буду применять.

это:
- демо платы,
- готовые программы для этой демоплаты.
VCO
Цитата(ramil111 @ Feb 22 2013, 16:39) *
задача самая простая - сделать генератор сигналов на цап на частоту 50Гц 8 каналов

Не понял, зачем здесь компьютер нужен??? laughing.gif
ramil111
Цитата(VCO @ Feb 25 2013, 11:40) *
Не понял, зачем здесь компьютер нужен??? laughing.gif

Это великое изобретение!
- перенести всю логику на комп, минимальная логика на контроллерах

по идее - это можно сделать, из усб порта - слушают музыку, есть изохронная передача данных. 1 мс - период передачи кадров.

можно ли просто в ft2232h сделать то же самое? не понятно,
по идее - в усб есть три буфера: на компе, в контроллере на компе, в ft2232h - все это должно выравнить поток данных, убрать перерывы, замирания
kovigor
Цитата(ramil111 @ Feb 25 2013, 17:42) *
Это великое изобретение!
- перенести всю логику на комп, минимальная логика на контроллерах

Не "великое", а чисто программистское. Типичное следствие того, что человек взялся не за свое дело.
"От великого до смешного - один шаг.". Похоже, и до нелепого - столько же. Идея неудачная, очень. Из компьютера сделать генератор (кстати, а почему бы тогда из генератора не сделать компьютер) ? Можно ведь ? Можно ! Но зачем ??? Это сложно, громоздко, ненадежно, дорого ...
Нет, не понимаю. Видно, я слишком ничтожен и приземлен, чтобы оценить мощь и гениальность этой идеи ...
ramil111
Цитата(kovigor @ Feb 25 2013, 18:55) *
Не "великое", а чисто программистское. Типичное следствие того, что человек взялся не за свое дело.
"От великого до смешного - один шаг.". Похоже, и до нелепого - столько же. Идея неудачная, очень. Из компьютера сделать генератор (кстати, а почему бы тогда из генератора не сделать компьютер) ? Можно ведь ? Можно ! Но зачем ??? Это сложно, громоздко, ненадежно, дорого ...
Нет, не понимаю. Видно, я слишком ничтожен и приземлен, чтобы оценить мощь и гениальность этой идеи ...

а чисто программистское - вполне возможно,

вообще это общая тенденция: стоимость простых компьютеров стремительно падает, а писать и отлаживать программы в компе - значительно проще и дешевле!
В результате - комп. - это идеальный вариант для малых серий,

конечно, если делаете изделие для миллионных партий - то можно и контроллер применить
VCO
Цитата(kovigor @ Feb 25 2013, 17:55) *
Нет, не понимаю. Видно, я слишком ничтожен и приземлен, чтобы оценить мощь и гениальность этой идеи ...

Я - тоже. Перечитал ещё раз все реплики топикстартера - ещё больше запутался. Видимо, полнолуние сказывается...

...Даже если предположить, что это какой-то демоборд, то куда рациональнее слить разом в него таблицу синуса и затем там крутить.
Ан нет же, в последнем посте всё опровергается, это, оказывается мелкая серия, и лепить монстра, оказывается, "рациональнее"!
Единственное, что приходит в голову посоветовать топикстартеру - разобраться со своими гениальными идеями и понять, что ему нужно.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.