реклама на сайте
подробности

 
 
> Существуют ли простые решения для USB slave?, FTDI FT232RL делает слишком долгую задержку перед передачей
Гвоздик
сообщение Nov 15 2008, 05:00
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 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-шины и выдающую их в параллельном или последовательном виде, и наоборот. Это для того, чтобы избежать дополнительных иженерных усилий по программированию и технологических операций при изготовлении.
Буду рад совету.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
SSerge
сообщение Nov 15 2008, 15:56
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 719
Регистрация: 13-09-05
Из: Novosibirsk
Пользователь №: 8 528



Дык, USB передаёт данные пакетами, поэтому то, что приходит с RxD сначала буферизуется внутри микросхемы и потом передаётся по таймауту или при заполнении буфера. Время таймаута можно настраивать.
Вот, прямо на 4-й странице пишут:
Цитата
Programmable Receive Buffer Timeout - The receive buffer timeout is used to flush remaining data from the receive buffer. This time defaults to 16ms, but is programmable over USB in 1ms increments from 1ms to 255ms, thus allowing the device to be optimised for protocols that require fast response times from short data packets.

Ещё один способ - по окончании передачи пакета "подёргать ножкой" CTS или DSR чтобы спровоцировать передачу буфера. Смотрите AN232B-04 Data Throughput, Latency and Handshaking.


--------------------
Russia est omnis divisa in partes octo.
Go to the top of the page
 
+Quote Post
Гвоздик
сообщение Nov 17 2008, 04:11
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 153
Регистрация: 2-12-04
Из: Чебоксары
Пользователь №: 1 289



Цитата(SSerge @ Nov 15 2008, 18:56) *
Дык, USB передаёт данные пакетами, поэтому то, что приходит с RxD сначала буферизуется внутри микросхемы и потом передаётся по таймауту или при заполнении буфера. Время таймаута можно настраивать.
Вот, прямо на 4-й странице пишут:

Ещё один способ - по окончании передачи пакета "подёргать ножкой" CTS или DSR чтобы спровоцировать передачу буфера. Смотрите AN232B-04 Data Throughput, Latency and Handshaking.

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

Цитата(Седой @ Nov 15 2008, 20:08) *
Похожая на вашу проблема уже обсуждалась в теме http://electronix.ru/forum/index.php?showt...=37919&st=0

Возможно, что указанное решение подойдет и для FTDI. Естественно при условии настройки timeout, как указал SSerge, и отсутствии кривизны драйверов от FTDI.

Но, лучше всего использовать USB-RS485 на микрокотроллере с firmware и драйвером, оптимизированными под вашу задачу.

PS. Если не можете сделать сами - пишите в личку, мы такие USB-RS485 производим.

Если не секрет, то какова задержка от отправки до приема пакета с применением микроконтроллера с USB "на борту"?
Go to the top of the page
 
+Quote Post
Гвоздик
сообщение Nov 19 2008, 04:15
Сообщение #4


Частый гость
**

Группа: Свой
Сообщений: 153
Регистрация: 2-12-04
Из: Чебоксары
Пользователь №: 1 289



Цитата(Гвоздик @ Nov 17 2008, 07:11) *
Спасибо за совет по таймауту. Однако, это мы уже пробовали и неоднократно. На самом деле изменение значения таймаута таймера в драйвере не помогает, квалификации виндового программиста я доверяю.
Подергать ножкой попробуем, может и поможет.
Если не секрет, то какова задержка от отправки до приема пакета с применением микроконтроллера с USB "на борту"?

Ножками "подрыгали", толку нет, задержка таже - 15 мс и более.
Для сведения пробовали мы измерять задержку с использованием аппаратного последовательного порта RS-232C на том же оборудовании с тем же ПО. Задержка от отправки 8 байт запроса до приема 8 байт ответа составила 3..5 мс в зависимости от материнской платы ПК. Т.е. в три раза быстрее, чем по УСБ с микросхемой от FTDI, вот такие вот пирожки печет FTDI.
Придется на микроконтроллере с УСБ "на борту" делать заново, пока смотрю в сторону Майкрочипа, драйверы и АПИшные библиотеки для Винды они прилагают.
Go to the top of the page
 
+Quote Post
_3m
сообщение Dec 8 2008, 13:11
Сообщение #5


Знающий
****

Группа: Участник
Сообщений: 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
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Гвоздик   Существуют ли простые решения для USB slave?   Nov 15 2008, 05:00
- - aag   Ну тут получается идеальный вариант CY7C68013. Это...   Nov 15 2008, 12:13
|- - barabek   Цитата(aag @ Nov 15 2008, 22:13) Ну тут п...   Nov 15 2008, 13:54
|- - KykyryzzZ   Цитата(barabek @ Nov 15 2008, 16:54) Вооб...   Nov 17 2008, 11:55
|- - AndreyS   ЦитатаСедой Дата Nov 15 2008, 20:08: Но, лучше вс...   Nov 17 2008, 07:15
||- - Огурцов   Цитата(AndreyS @ Nov 17 2008, 07:15) USB ...   Nov 17 2008, 10:06
|- - Седой   Цитата(Гвоздик @ Nov 17 2008, 09:11) Если...   Nov 17 2008, 08:25
||- - galjoen   Цитата(Седой @ Nov 17 2008, 11:25) В пред...   Nov 17 2008, 08:48
||- - Седой   Цитата(galjoen @ Nov 17 2008, 13:48) Т.е....   Nov 17 2008, 09:32
||- - galjoen   Цитата(Седой @ Nov 17 2008, 12:32) Нет ко...   Nov 17 2008, 10:19
||- - Седой   Цитата(galjoen @ Nov 17 2008, 15:19) Тут ...   Nov 17 2008, 11:15
||- - galjoen   Цитата(Седой @ Nov 17 2008, 14:15) Способ...   Nov 17 2008, 11:53
||- - Седой   Цитата(galjoen @ Nov 17 2008, 16:53) Тут,...   Nov 17 2008, 12:37
||- - galjoen   Цитата(Седой @ Nov 17 2008, 15:37) Невозм...   Nov 17 2008, 13:28
|- - Седой   Цитата(Гвоздик @ Nov 19 2008, 09:15) ... ...   Nov 19 2008, 05:21
||- - Гвоздик   Цитата(Седой @ Nov 19 2008, 08:21) Очеред...   Dec 3 2008, 10:35
||- - Седой   Цитата(Гвоздик @ Dec 3 2008, 15:35) Что ж...   Dec 13 2008, 13:55
- - Седой   Похожая на вашу проблема уже обсуждалась в теме h...   Nov 15 2008, 17:08


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd August 2025 - 20:46
Рейтинг@Mail.ru


Страница сгенерированна за 0.0142 секунд с 7
ELECTRONIX ©2004-2016