Jump to content

    
Sign in to follow this  
showone

FT232 помогите понять

Recommended Posts

значит так.

переходник собран на FT232RL на конце стоит ATMEGA168 со стороны компа написана программа на Delphi, использую прямое управление, т.е. работаю через DLL FTD2XX.DLL

есть управление потоком через DTR/DSR.

 

все работает ровно и хорошо.

но есть такой момент. запускаю я свою программу, а она не видит устройство, т.е. не получает от него данные, иногда, еще реже получает их как-то не корректно.

 

закрываю программу.

запускаю любую терминальную программу. закрываю ее.

запускаю свою программу, все работает стабильно.

 

есть подозрение что как-то нужно инициализировать порт после или перед открытием из программы.

может кто что подскажет.

заранее спасибо.

Share this post


Link to post
Share on other sites
значит так.

переходник собран на FT232RL на конце стоит ATMEGA168 со стороны компа написана программа на Delphi, использую прямое управление, т.е. работаю через DLL FTD2XX.DLL

есть управление потоком через DTR/DSR.

 

все работает ровно и хорошо.

но есть такой момент. запускаю я свою программу, а она не видит устройство, т.е. не получает от него данные, иногда, еще реже получает их как-то не корректно.

 

закрываю программу.

запускаю любую терминальную программу. закрываю ее.

запускаю свою программу, все работает стабильно.

 

есть подозрение что как-то нужно инициализировать порт после или перед открытием из программы.

может кто что подскажет.

заранее спасибо.

 

Может не инициализируется скорость передачи-приёма и программа открывает порт со скоростью по умолчанию - сделайте так например:

FT_Current_Baud:=FT_BAUD_9600;
Open_USB_Device();
Set_USB_Device_BaudRate();
Purge_USB_Device_In();
Purge_USB_Device_Out();

Edited by VXDRV

Share this post


Link to post
Share on other sites

Не хочется вас огорчать. Я тоже попробовал работать правда с ft245bm ч/з FTD2XX.DLL. Устройство у меня правда обнаруживалось всегда, но при работе столкнулся с некоторыми хомутами на приём. При передаче всё было класс, а вот при приёме иногда проскакивал лишний байт - 0. А потом всё работало как часы.

 

И ещё какие-то мелкие проблемы. Короче я отказался от затеи. При этом при работе ч/з VCP всё работало просто супер устойчиво. Работал с управлением потоком и всё-всё-всё. Гонял несколько суток напропалую. На максимальной скорости. Проблем небыло.

 

Конечно, это уже другой кристалл. Но что-то VCP дрова менялись 10 раз а FTD2XX по-моему не менялись. Может стоит отказаться от них и перейти на VCP? И прога универсальнее будет.

Share this post


Link to post
Share on other sites
Не хочется вас огорчать. Я тоже попробовал работать правда с ft245bm ч/з FTD2XX.DLL. Устройство у меня правда обнаруживалось всегда, но при работе столкнулся с некоторыми хомутами на приём. При передаче всё было класс, а вот при приёме иногда проскакивал лишний байт - 0. А потом всё работало как часы.

 

И ещё какие-то мелкие проблемы. Короче я отказался от затеи. При этом при работе ч/з VCP всё работало просто супер устойчиво. Работал с управлением потоком и всё-всё-всё. Гонял несколько суток напропалую. На максимальной скорости. Проблем небыло.

 

Конечно, это уже другой кристалл. Но что-то VCP дрова менялись 10 раз а FTD2XX по-моему не менялись. Может стоит отказаться от них и перейти на VCP? И прога универсальнее будет.

 

 

да вот и я уже пришел к мысли что нужно переходить на VCP.

 

скажите, а как вы настраиваете именно управление потоком. что-то не нашел я.

т.е. инициализация порта средствами WIN API это у меня работает, но где там указать что я использую управление потоком, и как это настроить.

 

или вы используете какой-то компонент для работы с портом.

 

если можно киньте пиримерчик именно инициализации порта и управлением потока или может где почитать ?

Заранее спасибо.

Share this post


Link to post
Share on other sites
да вот и я уже пришел к мысли что нужно переходить на VCP.

 

скажите, а как вы настраиваете именно управление потоком. что-то не нашел я.

т.е. инициализация порта средствами WIN API это у меня работает, но где там указать что я использую управление потоком, и как это настроить.

 

или вы используете какой-то компонент для работы с портом.

 

если можно киньте пиримерчик именно инициализации порта и управлением потока или может где почитать ?

Заранее спасибо.

 

Использую компонент из книги Агурова. http://lord-n.narod.ru/walla.html Слегка переделал его.

Share this post


Link to post
Share on other sites
Использую компонент из книги Агурова. http://lord-n.narod.ru/walla.html Слегка переделал его.

 

Я привык Borland C++ Builder, поэтому использую компонент Виктора Чена из Китая (дай бог ему здоровья, классный компонент, хороший человек). Компонент находится на torry.net

Share this post


Link to post
Share on other sites

Могу подозревать, что VCP использует туже DLL FTD2xx и по этому если был открыт COM порт с помощью виндозы и не закрыт, то вы не получите доступ напрямую из DLL FTD2xx (исхожу из ваших тестов, лично я не проверял). Также с каждым подключением микрухи может меняться номер COM порта, что не всегда удобно (хотя есть возможность как это обойти, хотя не помню как).

Попробуйте удалить VCP и попробуйте без неё. Я работал с FTDI232BM и не разу не было проблем с подключением, разве что устройство отваливалось раза 2 и лечилось только отключением и последующим подключением микрухи. А так работает девайс на этой микрухе каждый день.

Share this post


Link to post
Share on other sites
Могу подозревать, что VCP использует туже DLL FTD2xx и по этому если был открыт COM порт с помощью виндозы и не закрыт, то вы не получите доступ напрямую из DLL FTD2xx (исхожу из ваших тестов, лично я не проверял). Также с каждым подключением микрухи может меняться номер COM порта, что не всегда удобно (хотя есть возможность как это обойти, хотя не помню как).

Попробуйте удалить VCP и попробуйте без неё. Я работал с FTDI232BM и не разу не было проблем с подключением, разве что устройство отваливалось раза 2 и лечилось только отключением и последующим подключением микрухи. А так работает девайс на этой микрухе каждый день.

 

 

если порт открыт, то его уже через DLL не откроешь.

просто терминалка, сторонняя, инициализировала порт как нужно, в плане управления потоком.

и потом все это работало дальше, до следующего отключения.

а вот как мне это сделать из моей проги, через DLL, у меня так и не получилось. программа работала только после сторонней инициализации.

 

перешел на управление через API т.е. работаю сейча с VCP все класс, запускается сразу же.

 

конечно очень бы хотелось разобраться в чем же дело, но как всегда нет времени.

всем спасибо.

Share this post


Link to post
Share on other sites

2 awtoap - на счёт того что есть извращённое желание переоткрыть порт что уже открыт виндозными методами - есть программка, непомню как называется, но в принципе не суть важно - русинович вроде написал(у него на сайте её мона вроде и скачать) - тот самый русинович что книгу выпустил про внутреннее устройство винды - так вот его эта программка делает вроде хук всех запросов что идут на более низком уровне - ИОКОНТРОЛ и всё такое типа - и мона смореть что там передаётся принимается на уровне буфферов винды - по идее так же мона и вклиниваться в работу порта , но это уже к АВР никакого отношения не имеет.

Share this post


Link to post
Share on other sites

VCP не использует эту DLL. Там совершенно независимый драйвер.

 

Если вы использовали BM и писали EEPROM, то должны это знать.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this