Перейти к содержанию
    

FT2232H параллельный ввод.

Кто-либо пробовал использовать FT2232H для организации быстрого управляемого канала данных с МК на комп?

 

Пробовал SPI (MPSSE) на одном канале с управлением через UART другого канала - задержки между запросом на передачу данных и передачей были по 10 мс, что сводило скорость при использовании большого буфера (30КБ) к 550кБайт/с. Надо больше раза в 4.

 

Хочу попробовать организовать параллельный интерфейс, да не знаю, как подойти.

 

Есть ли у кого опыт? Хотябы какой из режимов стоит курить?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

10 мс -- это много. Теоритический минимум для full-speed 1мс, для high-speed 125 мкс. У меня получилось высылать-получать примерно 7000 пар коротких запросов-ответов (от хоста к USB устройству и назад) на USB 2.0 high-speed. Тоесть получилось достичь почти теоретического максимума скорости запрос-ответ (для 125 мкс это 8000 пар в секунду).

 

По умолчанию, данные из FT2232H чипа не высылаются пока либо не заполнится буффер, либо не истечет латэнси таймер. Чтобы ускорить передачу данных от устройства к хосту:

1) можна выслать MPSSE комманду Send Immediately -- она заставит передать данные из буффера устройства на хост начиная со следующего USB frame независимо от того насколько заполнен буффер.

2) можно уменьшить значение latency (там есть функция SetLatency или что-то типа того). Теперь содержимое буффера будет отправляться от устройства к хосту чаще.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

10 мс -- это много. Теоритический минимум для full-speed 1мс, для high-speed 125 мкс. У меня получилось высылать-получать примерно 7000 пар коротких запросов-ответов (от хоста к USB устройству и назад) на USB 2.0 high-speed. Тоесть получилось достичь почти теоретического максимума скорости запрос-ответ (для 125 мкс это 8000 пар в секунду).

Проблема в том, что USART и MPSSE находятся на разных каналах FTDI. Запрос идёт по USART, а передача данных - по MPSSE.

7-10ms выходит, даже когда я проверяю на программе ,тупо принимающей байт через USART и шлющей его обратно.

По умолчанию, данные из FT2232H чипа не высылаются пока либо не заполнится буффер, либо не истечет латэнси таймер. Чтобы ускорить передачу данных от устройства к хосту:

1) можна выслать MPSSE комманду Send Immediately -- она заставит передать данные из буфера устройства на хост начиная со следующего USB frame независимо от того насколько заполнен буффер.

2) можно уменьшить значение latency (там есть функция SetLatency или что-то типа того). Теперь содержимое буффера будет отправляться от устройства к хосту чаще.

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

latency_timer я выставил вообще в 1, а команду не пробовал.

Также столкнулся с проблемкой: когда посылаешь буфер больше, чем 2xразмер буфера(8000+), он глючит, не врезая на то, что в датащите указан размер вплоть до 65535

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Заложил FT2232H для передачи небольших объемов данных из ПЛИС в компьютер без особых требований к скорости.

Особых глюков не заметил, за исключением появления "синего экрана" при выдергивании кабеля во время обращения

программы к устройству, видимо программисты с драйвером перестарались. Из спортивного интереса решил измерить

скорость передачи из устройства. Был приятно удивлен полученным результатом - от 40 до 45 Мбайт/с в зависимости от

компьютера, хотя по описанию указано до 25 Мбайт/с. Небольшая поправка - драйвер использовал последний. Может

кто-нибудь тоже замерял скорость или это так "звезды сошлись" у меня.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Режим передачи - синхронное FIFO. Тестовые блоки данных - 10МБайт, 100МГбайт, 1Гбайт и 10ГБайт.

Скорость варьировалась, как указал, от 40 до 45 Мбайт/с.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...