Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
09.10.2007, 12:23
|
|
Частый гость
Регистрация: 10.12.2004
Сообщений: 35
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Сообщение от tempora
|
Сообщение от VVK
|
Мне вот только непонятно как таким модулем будут распознаваться несколько устройств подключённых к шине на выходе USB модуля?
|
Если я правильно понял, то предполагается, что со стороны UART будет подключен мелкоконтроллер, так? Ну, так вот - он пусть и распознаёт, или, наоборот, кодирует. Предположим, что нужно передавать данные измерений от нескольких термометров, тогда каждая посылка данных должна содержать маркер начала посылки и N пакетов измерений, каждый из которых может, к примеру, содержать номер датчика, его тип и измеренную величину.
Работа с USB в такой схеме вообще не ведётся - он существует только, как транспорт - программа его "не видит"... ага?
|
Да! Так вот мне как раз научиться бы это делать - то есть
чтобы передавать данные от нескольких устройств. Только у меня будет не микроконтроллер а FPGA (Spartan3E-1600E), хотя принцип наверно схожий. Если кто знает дружелюбное к юзерам введение в то как прочитать данные от нескольких устройств,
может что подскажете, особенно как назначать номера датчиков
и где в формате USB данных этот номер указывается?
|
|
|
|
09.10.2007, 12:55
|
|
Вид на жительство
Регистрация: 05.09.2006
Сообщений: 360
Сказал спасибо: 0
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
Сообщение от VVK
|
О чём и речь! Зачем "изобретать велосипед" если FTDI продаёт уже готовые модули с user mode driver в виде .dll (который инсталируется с помощью Мастера Нового Оборудования). Например модуль UM245R имеет USB вход (тип B) а выход - параллельный порт.
Мне вот только непонятно как таким модулем будут распознаваться несколько устройств подключённых к шине на выходе USB модуля?
|
Так ведь если Вы подцепите несколько FTDI к компу, то они поставятся с разными логическими именами (LPT2, LPT3, и т.д.) Но зачем Вам подключать несколько FTDI?
По параллельному (или последовательному) порту Вы передаете адрес регистра, затем код операции, затем читаете или пишите данные. Примерно так. Все зависит от поставленной задачи. Т.е. Вы используете регистр порта не для прямого чтения данных (если у Вас несколько регистров), а используете его для организации шины. Протокол обмена и формат данных зависит от конкретной задачи. И тогда Вам не ныжно несколько FTDI. ИМХО.
Удачи.
|
|
|
|
09.10.2007, 12:58
|
|
Почётный гражданин KAZUS.RU
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
|
Сообщение от VVK
|
Да! Так вот мне как раз ...особенно как назначать номера датчиков
и где в формате USB данных этот номер указывается?
|
Или, несмотря на " Да", предполагается всё же что-то другое, а не цифровой девайс, прицепленый к USB-мосту, или ты зациклился на каком-то документе, описывающем USB-протокол, настолько, что никак не можешь отойти. Я еще раз повторюсь - ни девайс, ни программа на компе про то, что данные передаются через USB-канал, даже не подозревают - в том-то и вся фишка.
1.Программа на компе читает/пишет в COM-порт компа.
2.Цифровой девайс общается с FT232, как с UART'ом
3.Так как на поток данных, передаваемых в последовательном канале, никто никаких ограничений не накладывает, ты можешь запихать туда, кроме собственно измеряемых величин, любые служебные данные, не только номера датчиков, но, скажем, дату время, когда они осуществили свои замеры и так далее. Номера можешь назначать сам, если влом привязываться к существующим раскладам, а можешь, к примеру, использовать 1-wire датчики и считывать их уникальные номера. И в том, и в другом решении есть свои преимущества и недостатки.
Если же ты хочешь сделать так, чтобы каждый датчик цеплялся к своему USB-порту и комп мог распознавать эти устройства на уровне USB-протокола (там устройство передает строку-идентификатор типа устройства), то это и есть кастомайзинг - на сайте chip45.com (ссылку я давал) есть всё необходимое и про кастомайзинг железа и про кастомайзинг дров в комп.
|
|
|
|
09.10.2007, 13:17
|
|
Частый гость
Регистрация: 10.12.2004
Сообщений: 35
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Сообщение от nokazus
|
Сообщение от VVK
|
О чём и речь! Зачем "изобретать велосипед" если FTDI продаёт уже готовые модули с user mode driver в виде .dll (который инсталируется с помощью Мастера Нового Оборудования). Например модуль UM245R имеет USB вход (тип B) а выход - параллельный порт.
Мне вот только непонятно как таким модулем будут распознаваться несколько устройств подключённых к шине на выходе USB модуля?
|
Так ведь если Вы подцепите несколько FTDI к компу, то они поставятся с разными логическими именами (LPT2, LPT3, и т.д.) Но зачем Вам подключать несколько FTDI?
По параллельному (или последовательному) порту Вы передаете адрес регистра, затем код операции, затем читаете или пишите данные. Примерно так. Все зависит от поставленной задачи. Т.е. Вы используете регистр порта не для прямого чтения данных (если у Вас несколько регистров), а используете его для организации шины. Протокол обмена и формат данных зависит от конкретной задачи. И тогда Вам не ныжно несколько FTDI. ИМХО.
Удачи.
|
Спасибо! Несколько USB модулей конечно не нужно - одного вполне хватит ![Подмигивание](images/smilies/icon_wink.gif) Просто я совсем новичок в том что делать дальше, а именно - как организовать шину. Как я понял,
обычно пишется программа для микроконтроллера, но я бы хотел сделать всю цифровую систему, в том числе и свои устройства, на FPGA. То есть, можно ли сделать так - выходы от USB модуля подключить к input/output линиям FPGA и организовать шину на FPGA (как это сделать я пока не знаю). Спасибо.
|
|
|
|
09.10.2007, 13:35
|
|
Частый гость
Регистрация: 10.12.2004
Сообщений: 35
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Сообщение от tempora
|
Так как на поток данных, передаваемых в последовательном канале, никто никаких ограничений не накладывает, ты можешь запихать туда, кроме собственно измеряемых величин, любые служебные данные, не только номера датчиков, но, скажем, дату время, когда они осуществили свои замеры и так далее.
|
А вот тут, если можно, поподробнее. Как именно это делается?
|
|
|
|
09.10.2007, 13:57
|
|
Вид на жительство
Регистрация: 05.09.2006
Сообщений: 360
Сказал спасибо: 0
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
Цитата:
|
То есть, можно ли сделать так - выходы от USB модуля подключить к input/output линиям FPGA и организовать шину на FPGA (как это сделать я пока не знаю).
|
Пожалуйста, делайте на FPGA, никто Вам не мешает. Встает вопрос о разделении данных, передаваемых через порт и их интерпретации. Можно разделять данные по времени (не самый лучший способ, тем более для WinXP), а можно по содержанию, т.е. ввести маркер (разделитель, признак) начала пакета данных. С FPGA слепить протокол обмена будет посложней, но все же можно. Я так понимаю, что хост будет компьютер, а ведомое устройство собрано на FPGA и сообщается через мост FTDI-USB с компом.
Простейшая реализация на FPGA. Пусть байт, передаваемый от компа, содержит адрес регистра и один из битиков признак операции (запись или чтение). FPGA распознает команду и отрабатывает диаграмму обмена с регистром.
Удачи.
|
|
|
|
09.10.2007, 14:08
|
|
Частый гость
Регистрация: 10.12.2004
Сообщений: 35
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Сообщение от nokazus
|
Пожалуйста, делайте на FPGA, никто Вам не мешает. Встает вопрос о разделении данных, передаваемых через порт и их интерпретации. Можно разделять данные по времени (не самый лучший способ, тем более для WinXP), а можно по содержанию, т.е. ввести маркер (разделитель, признак) начала пакета данных. С FPGA слепить протокол обмена будет посложней, но все же можно. Я так понимаю, что хост будет компьютер, а ведомое устройство собрано на FPGA и сообщается через мост FTDI-USB с компом.
Простейшая реализация на FPGA. Пусть байт, передаваемый от компа, содержит адрес регистра и один из битиков признак операции (запись или чтение). FPGA распознает команду и отрабатывает диаграмму обмена с регистром.
Удачи.
|
Спасибо, впереди - вагон работы .. но это и радует, ведь это же интересно!
|
|
|
|
09.10.2007, 14:16
|
|
Частый гость
Регистрация: 02.04.2007
Сообщений: 37
Сказал спасибо: 0
Сказали Спасибо 1 раз в 1 сообщении
|
Только не понимающий с чем связывается может начать мутить USB в FPGAхе
У Атмела есть апликэйшин (скачать можно здесь)на тему USB и AtTiny2313, там кратко описана суть работы интерфейса.
В "железе" реализовать USB конечно можно, я более чем уверен что уже все сделано до вас, надо только найти/купить, но там очень много нюансов и сам бы я это делать не стал, а использовал уже готовый мост FT232R или FT245, хотя бы даже по той причине, что это сожрет много места в ПЛИСине. Вам в качестве наводящего вопроса: драйвера вы тоже сами писать будете?
|
|
|
|
09.10.2007, 14:28
|
|
Частый гость
Регистрация: 10.12.2004
Сообщений: 35
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Сообщение от ices
|
Только не понимающий с чем связывается может начать мутить USB в FPGAхе
У Атмела есть апликэйшин (скачать можно здесь)на тему USB и AtTiny2313, там кратко описана суть работы интерфейса.
В "железе" реализовать USB конечно можно, я более чем уверен что уже все сделано до вас, надо только найти/купить, но там очень много нюансов и сам бы я это делать не стал, а использовал уже готовый мост FT232R или FT245, хотя бы даже по той причине, что это сожрет много места в ПЛИСине. Вам в качестве наводящего вопроса: драйвера вы тоже сами писать будете?
|
Вообще-то речь была о том что USB модуль и драйвер - от FTDI (то есть стандартный девайс с .dll драйвером) а шина и сами устройства - уже на FPGA.
|
|
|
|
09.10.2007, 15:02
|
|
Почётный гражданин KAZUS.RU
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
|
Сообщение от VVK
|
А вот тут, если можно, поподробнее. Как именно это делается?
|
Да тут никаких "поподробнее" и не предполагается - как сам придумаешь, так и будет.
Пусть, к примеру, эта железяка периодически опрашивает ряд датчиков и накопленные данные отсылает в комп в виде потока байт, тогда этот самый поток можно было бы организовать таким образом:
1. Маркер начала набора данных - 1байт
2. Счетчик числа пакетов измерений (N) - 1 или 2б (если датчиков может быть больше 255)
теперь повторяющиеся N пакетов измерений:
3. Идентификатор типа датчика - 1б (например)
4. Величина - 1б(или 2, или 4 - см. какие датчики)
после всех пакетов измерений - "хвост":
5. Контрольная сумма
6. Маркер конца набора данных
Только правильно говорят - делать такое на ПЛИСе неправильно - это задача для мелкоконтроллера, большой скорострельности здесь не требуется, зато его гибкость будет спасением!
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 17:27.
|
|