|
Существуют ли простые решения для 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-шины и выдающую их в параллельном или последовательном виде, и наоборот. Это для того, чтобы избежать дополнительных иженерных усилий по программированию и технологических операций при изготовлении. Буду рад совету.
|
|
|
|
|
 |
Ответов
|
Nov 15 2008, 15:56
|
Профессионал
    
Группа: Свой
Сообщений: 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.
|
|
|
|
|
Nov 17 2008, 04:11
|
Частый гость
 
Группа: Свой
Сообщений: 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 "на борту"?
|
|
|
|
|
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 рекомендую пользоваться только с целью изучения. Что ж, смелое утверждение на мой взгляд. А не могли бы Вы подробнее сказать почему? И что на Ваш взгляд более предпочтительно Майкрочипу?
|
|
|
|
Сообщений в этой теме
Гвоздик Существуют ли простые решения для 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     Седой Цитата(Гвоздик @ Dec 3 2008, 15:35) Что ж... Dec 13 2008, 13:55   _3m Цитата(Гвоздик @ Nov 19 2008, 07:15) Ножк... Dec 8 2008, 13:11 Седой Похожая на вашу проблема уже обсуждалась в теме h... Nov 15 2008, 17:08
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|