Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Проблеммы с FT2232 от FTDI
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
alex112
В свое время работали с USB 1.0 (FT232R, FT245R). Софт для PC писался под Delphi, с использованием драйверов и библиотек от разработчика. Все было нормально.

Решили перейти на USB2.0 и бешеные скорости, так как 800 кбайт/сек уже упиралось в наши требования.
Купили kit 2232. Библиотек для Delphi не оказалось, решили писать на Borland.

Собрали макет. Подключили. Запускаем написанную программу. Устанавливаем режим Full-speed (SetBitMode 0x40). Осцилографом смотрим - появилась желаемая частота в 60мегагерц. Ок. Дальше посылаем 0х01, в ответ на которое наша плата должна была загореть светодиод и выдавать данные. Единичка записывается, светодиод загорается, но "плата" больше ни на что не реагирует. UsbTracer показывает "смерть" девайся и его отключение. Винды иногда при этом пишут "устройство не опознано".

Тыкались-тыкались, решили попробовать ассинхронный режим, без SetBitMode 0x40. Сделали плату, перепрошили контроллер. Запускаем. Посылаем единичку. После этого GetStatus выдает наличие данных в буфере (и если циклично проверять, то видно как буфер наполняется), но Read не читает ничего, ft_status равен 4, ошибка чтения, но GetStatus так же исправно продолжнает показывать данные в буфере без ошибок.

Берем старую программу из под Delphi и пробуем ей - она все прекрасно читает. Отличия только в разных библиотеках для дельфей и для борланда. И фих с этой борладской библиотекой, но проблемма в том, что дельфевая библиотека старая и она не умеет SetBitMode. Я пытался его руками добавить, т.к. в ftdi2xx.dll такая функция есть, но неполучается - устройство не видит этой команды. Возможно в борландовской библиотеке какая-то обертка стоит над этой функцией.

Впринципе, сейчас мы получаем почти 5 мегабайт в секунду по usb в ассинхронном режиме, но это как то неправильно, на мой взгляд. Кто нить добивался большего? У кого-нить получилось работать в full-speed?Как вообще работать с этой 2232?
DpInRock
Цитата
В свое время работали с USB 1.0 (FT232R, FT245R).

FT232R - USB 2.0 Full speed device вoобще-то.
alex112
Цитата(DpInRock @ Feb 14 2010, 17:45) *
FT232R - USB 2.0 Full speed device вoобще-то.

http://www.filur.net/PDF/FTDI/mikros/USB.htm
Хотя я может че и путаю. Но вопрос то не в этом. smile.gif
rezident
Цитата
не можем заставить ее работать в full-speed
Дурацкий вопрос: а кабель USB менять не пробовали?
alex112
Цитата(rezident @ Feb 14 2010, 19:01) *
Дурацкий вопрос: а кабель USB менять не пробовали?

пробовали. Непомогает. Сейчас там кабель длинной 15 см от фотоаппарата.
По usbtracer-у видно что устройство "штатно" умирает, т.е. уходит единичка, потом всякие синхры пошли, статус "ансупортед" и пипец.
DpInRock
Цитата
Но вопрос то не в этом

Именно в этом.
http://www.ftdichip.com/Documents/DataSheets/DS_FT232R.pdf
Цитата
Data transfer rates from 300 baud to 3 Mbaud
(RS422, RS485, RS232 ) at TTL levels.


Цитата
The FT232R is fully compliant with the USB 2.0 specification and has been given the USB-IF Test-ID (TID)
40000133.


Так что FTDI работает совершенно замечательно. Причем, на той скорости, которой на 1.5 мегабита не достичь. А только на 12.
----

Цитата
Библиотек для Delphi не оказалось

Так ведь FTDI поставляет DLL. Кто мешает 10 строк написать в дельфях?
alex112
Цитата(DpInRock @ Feb 15 2010, 00:37) *
Так ведь FTDI поставляет DLL. Кто мешает 10 строк написать в дельфях?

Я же писал, что пробовал дописать, но неполучается. Невидит девайс написанных команд. Для борланда идет еще бибилотека дополнительная.
А то что что в борланде у меня ft_read выдает еррор в ассинхронном режиме, это у всех так?
plombir
Драйвера с сайта давно обновляли?

На 232R было у меня подобное. Зависал на 2 минуты при определённых действиях. Нашёл обход через другие функции, но 10 секундный вис остался. Когда ставил дрова на другой комп, прямо с сайта, тормозов не увидел. Проверил у себя. Оказалось, что эту проблему пофиксили. Разница между обновлениями была 3 месяца.

В итоге, мне хватило тупой замены файла ftd2xx.dll на новый.
alex112
Цитата(plombir @ Feb 15 2010, 08:58) *
Драйвера с сайта давно обновляли?

драйвера последние. От октября 2009, свежее не видел. И у нас он не "зависает", а именно умирает. Попозже пришлю лог от usbtracer-a.
А кто нить вообще работает с этой железкой (2232H)?
ReAl
Цитата(alex112 @ Feb 15 2010, 12:06) *
А кто нить вообще работает с этой железкой (2232H)?
Пока пробовал только MPSSE (SPI, avreal). На обеих каналах работает, AVR-ки шьёт ;-)
Штыри со всех портов и перемычка запрета буферов для рпограмматора заложены, но на альтеру пока не цеплял и SyncFIFO не пробовал.
plombir
Цитата(alex112 @ Feb 14 2010, 16:25) *
Устанавливаем режим Full-speed (SetBitMode 0x40)
Из какого документа это значение 0x40?

Удалось найти
Код
Reset the IO Bit Mode           0x0
Asynchronous Bit Bang Mode      0x1
MPSSE                           0x2
Synchronous Bit Bang Mode       0x4
MCU Host Bus Emulation          0x8
Fast Serial For Opto-Isolation  0x10
alex112
Цитата(plombir @ Feb 16 2010, 08:28) *
Из какого документа это значение 0x40?

у меня в документации еще 0х20 и 0х40 есть. smile.gif
plombir
Цитата(alex112 @ Feb 17 2010, 21:52) *
у меня в документации еще 0х20 и 0х40 есть. smile.gif
Я рад за Вас и вашу документацию.
Удачи.
ReAl
Цитата(plombir @ Feb 18 2010, 08:28) *
Я рад за Вас и вашу документацию.
Удачи.
Кто Вам виноват, что у Вас в документации этого нет?

FT2232H DUAL HIGH SPEED USB TO MULTIPURPOSE UART/FIFO IC
Datasheet Version 2.06
Цитата
4.13 FT2232H Mode Selection
When in FT245 FIFO mode, the FT_SetBitMode command can be used to select either Synchronous FIFO (FT_SetBitMode = 0x40) or Asynchronous FIFO mode.


Application Note AN_130
FT2232H Used In An FT245 Style Synchronous FIFO Mode
Цитата
Next send command FT_SetBitMode(Mask, 0x40) to the FTDI driver to switch the FT2232H to FT245 Synchronous FIFO mode (this mode uses the RX & TX buffer of port B, so port B cannot be used for any other purpose in this mode).


Document Reference No.: FT_000071
D2XX Programmer's Guide Version 1.02
Цитата
ucMode Mode value. Can be one of the following:
0x0 = Reset
0x1 = Asynchronous Bit Bang
0x2 = MPSSE (FT4232H, FT2232H and FT2232 devices only)
0x4 = Synchronous Bit Bang (FT4232H, FT2232H, FT232R, FT245R and FT2232 devices only)
0x8 = MCU Host Bus Emulation Mode (FT4232H, FT2232H and FT2232 devices only)
0x10 = Fast Opto-Isolated Serial Mode (FT4232H, FT2232H and FT2232 devices only)
0x20 = CBUS Bit Bang Mode (FT232R devices only)
0x40 = Single Channel Synchronous 245 FIFO Mode (FT2232H devices only)


Удачи.
DpInRock
Цитата
Устанавливаем режим Full-speed (SetBitMode 0x40).

На самом деле - это вообще никак не связано с Full speed или LowSpeed или Hi-Speed.
alex112
Цитата(DpInRock @ Feb 19 2010, 12:25) *
На самом деле - это вообще никак не связано с Full speed или LowSpeed или Hi-Speed.

а что это такое? Я чисто программой на PC занимаюсь. Прошивка, плата, разводка, схемотехника - отдельные люди.

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

В либе, что идет для билдера - все таки какая-то ошибка - ситуация повторилась - данные в буфере есть, но при чтении - ошибка. Написал библиотеку для delph-ей и все "полетело".
Daemvil
Цитата(alex112 @ Feb 19 2010, 15:19) *
Написал библиотеку для delph-ей и все "полетело".

Добрый день. Библиотекой не поделишься?... sm.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.