|
Существуют ли простые решения для USB slave?, FTDI FT232RL делает слишком долгую задержку перед передачей |
|
|
|
Nov 15 2008, 05:00
|
Частый гость
 
Группа: Свой
Сообщений: 153
Регистрация: 2-12-04
Из: Чебоксары
Пользователь №: 1 289

|
Здравствуйте, уважаемые форумчане! Сначала кратко опишу существующее оборудование: преобразователь сигналов из USB в RS-485, созданный на основе микросхемы FTDI RS232RL; внешний аппаратный блок, отвечающий на запросы по шине RS-485; персональный компьютер с интерфейсом USB. Скорость обмена на шине равна 1 Мбит/с, что нас вполне устраивает. Суть загвоздки в следующем: при замере времени от выдачи команды с ПК до приема ответа на него проходит не менее 15 мс, причем внешний аппаратный контроллер вносит задержку не более 1 мс. В пачке содержится 8 байт запроса и 8 байт ответа. При уменьшении скорости обмена по шине RS-485 время между запросом и ответом увеличивается, но незначительно. Основная задержка остается примерно одинаковой (15 мс). Мы пробовали сначала использовать виртуальный последовательный порт для работы с компьютера, потом переписали ПО под использование динамических библиотек, пытаясь увеличить скорость обмена, все безрезультатно. Похоже, что микросхема от FTDI упорно вносит эту задержку выдачи первых данных в шину. Скажите, пожалуйста, уважаемые форумчане, какие еще существуют наиболее простые в исполнении решения для ведомого устройства на шине USB? Скорости в 1 Мбит/с нам вполне достаточно, необходимо лишь уменьшить время отклика хотя бы до 5 мс. Если использовать микроконтроллер с USB "на борту", какая задержка приемопередачи данных будет в этом случае? Идеальным решением было бы применение готовой микросхемы, принимающей данные из USB-шины и выдающую их в параллельном или последовательном виде, и наоборот. Это для того, чтобы избежать дополнительных иженерных усилий по программированию и технологических операций при изготовлении. Буду рад совету.
|
|
|
|
2 страниц
< 1 2
|
 |
Ответов
(15 - 21)
|
Nov 17 2008, 12:37
|
Местный
  
Группа: Свой
Сообщений: 244
Регистрация: 21-02-05
Из: Урал
Пользователь №: 2 806

|
Цитата(galjoen @ Nov 17 2008, 16:53)  Тут, кстати, хочу сказать, что запрос (от компьютера) - ответ (устройства компьютеру) в одном фрейме (кадре) USB сделать можно без проблем, а вот как сделать наоборот - запрос (от устройства) ответ (компьютера устойству) в одном кадре я не знаю. А в режиме слейва RS485 нужен именно такой вариант. Отсюда и вопросы. Невозможно, даже на уровне драйвера устройства. PS. Хотя если делать свой драйвер корневого концентратора с планировщиком, то может быть... Нужно посмотреть документацию на конкретные чипы. Цитата(galjoen @ Nov 17 2008, 16:53)  Кстати дайте ссылочку на ваш вариант (можно и в личку) если не жалко. Я не из-за конкуренции, просто любопытно. А если вам интересно, я на свою железку ссылку дам. Один из вариантов железки - обыкновенный USB-RS485, где вместо CP2103 впаян С8051F326 http://www.slavna.ru/stran/urs485.htmДрайвер свой, механизм работы - в теме http://electronix.ru/forum/index.php?showt...=37919&st=0
|
|
|
|
|
Nov 17 2008, 13:28
|
Знающий
   
Группа: Свой
Сообщений: 841
Регистрация: 10-05-07
Из: Чебоксары (Россия)
Пользователь №: 27 640

|
Цитата(Седой @ Nov 17 2008, 15:37)  Невозможно, даже на уровне драйвера устройства. PS. Хотя если делать свой драйвер корневого концентратора с планировщиком, то может быть... Нужно посмотреть документацию на конкретные чипы. Согласен. А вот моя железка: http://www.antel.info/index.php?option=com...=3&Itemid=4Хотя это, конечно, побочный продукт. Основной тот, что с CAN, но CAN там не универсальный, а только под нашу технику.
|
|
|
|
|
Nov 19 2008, 04:15
|
Частый гость
 
Группа: Свой
Сообщений: 153
Регистрация: 2-12-04
Из: Чебоксары
Пользователь №: 1 289

|
Цитата(Гвоздик @ Nov 17 2008, 07:11)  Спасибо за совет по таймауту. Однако, это мы уже пробовали и неоднократно. На самом деле изменение значения таймаута таймера в драйвере не помогает, квалификации виндового программиста я доверяю. Подергать ножкой попробуем, может и поможет. Если не секрет, то какова задержка от отправки до приема пакета с применением микроконтроллера с USB "на борту"? Ножками "подрыгали", толку нет, задержка таже - 15 мс и более. Для сведения пробовали мы измерять задержку с использованием аппаратного последовательного порта RS-232C на том же оборудовании с тем же ПО. Задержка от отправки 8 байт запроса до приема 8 байт ответа составила 3..5 мс в зависимости от материнской платы ПК. Т.е. в три раза быстрее, чем по УСБ с микросхемой от FTDI, вот такие вот пирожки печет FTDI. Придется на микроконтроллере с УСБ "на борту" делать заново, пока смотрю в сторону Майкрочипа, драйверы и АПИшные библиотеки для Винды они прилагают.
|
|
|
|
|
Nov 19 2008, 05:21
|
Местный
  
Группа: Свой
Сообщений: 244
Регистрация: 21-02-05
Из: Урал
Пользователь №: 2 806

|
Цитата(Гвоздик @ Nov 19 2008, 09:15)  ... драйверы и АПИшные библиотеки для Винды они прилагают. Очередной костыль. Библиотекой USB от Microchip рекомендую пользоваться только с целью изучения.
|
|
|
|
|
Dec 3 2008, 10:35
|
Частый гость
 
Группа: Свой
Сообщений: 153
Регистрация: 2-12-04
Из: Чебоксары
Пользователь №: 1 289

|
Цитата(Седой @ Nov 19 2008, 08:21)  Очередной костыль. Библиотекой USB от Microchip рекомендую пользоваться только с целью изучения. Что ж, смелое утверждение на мой взгляд. А не могли бы Вы подробнее сказать почему? И что на Ваш взгляд более предпочтительно Майкрочипу?
|
|
|
|
|
Dec 8 2008, 13:11
|
Знающий
   
Группа: Участник
Сообщений: 745
Регистрация: 28-12-06
Пользователь №: 23 960

|
Цитата(Гвоздик @ Nov 19 2008, 07:15)  Ножками "подрыгали", толку нет, задержка таже - 15 мс и более. Для сведения пробовали мы измерять задержку с использованием аппаратного последовательного порта RS-232C на том же оборудовании с тем же ПО. Задержка от отправки 8 байт запроса до приема 8 байт ответа составила 3..5 мс в зависимости от материнской платы ПК. Т.е. в три раза быстрее, чем по УСБ с микросхемой от FTDI, вот такие вот пирожки печет FTDI. Придется на микроконтроллере с УСБ "на борту" делать заново, пока смотрю в сторону Майкрочипа, драйверы и АПИшные библиотеки для Винды они прилагают. Что-то в вашей консерватори не так. Использую FT232BM. Изменением значения Latency Timer до 2-4мс получаю задержку запрос-ответ 3-5мс на скорости 1000килобит/с, мое устройство отвечает мгновенно. Коммуникационная часть на писюке крутится в отдельном потоке. Ваши цифры характерны для дефолтного значения Latency Timer, которое составляет 16мс. Кстати, старые чипы FTDI не позволяют менять задержку, у старых чипов Latency Timer фиксированный на 16мс. У чипов FTDI конечно есть проблемы, но именно с задержками у них ситуация лучше чем у всех остальных производителей USB-UART. И не факт что на МК с USB на борту у вас с ходу обмен получится быстрее.
Сообщение отредактировал _3m - Dec 8 2008, 13:12
|
|
|
|
|
Dec 13 2008, 13:55
|
Местный
  
Группа: Свой
Сообщений: 244
Регистрация: 21-02-05
Из: Урал
Пользователь №: 2 806

|
Цитата(Гвоздик @ Dec 3 2008, 15:35)  Что ж, смелое утверждение на мой взгляд. А не могли бы Вы подробнее сказать почему? И что на Ваш взгляд более предпочтительно Майкрочипу? Еще раз повторю - имеется в виду библиотека. К самим чипам претензий нет. PS. Почему? Скомпилируйте для PIC24 и посмотрите ассемблерный код. Цитата(_3m @ Dec 8 2008, 18:11)  Что-то в вашей консерватори не так. ..... И не факт что на МК с USB на борту у вас с ходу обмен получится быстрее. А может быть не нужно "с ходу", а нужно быстрее ( в смысле задержку покороче).
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|