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

 
 
 
Reply to this topicStart new topic
> Использование FT2232D, Работа с каналами A и B
BVU
сообщение May 24 2018, 11:06
Сообщение #1


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

Группа: Свой
Сообщений: 1 301
Регистрация: 30-11-04
Из: Россия, Н.Новгород
Пользователь №: 1 264



Добрый день, уважаемые!

Для организации USB канала, была выбрана микросхема - FT2232D (режим работы: 245 FIFO). Как известно у неё существуют два канала: A и B.
Во многих статьях посвященных данному устройству (FT2232), а так же в описании от производителя, говориться, что эти каналы настраиваются и работают независимо друг от друга...
Но при использовании библиотеки высшего уровня для программирования (D2XX Direct), мы имеем следующее:

1. чтобы открыть канал передачи необходимо выполнить:
#include "ftd2xx.h"
FT_HANDLE ftHandle; // Handle of the FTDI device
FT_STATUS ftStatus;
ftStatus = FT_Open(1, &ftHandle); // Открытие канала A
if (ftStatus == FT_OK)
{ ... }
else
{ ... }

2. что бы передать или принять данные используем функции:
ftStatus = FT_Read(ftHandle, RxBuffer, dwByteToRead, &dwByteReseived);
и
ftStatus = FT_Write(ftHandle, TxBuffer, dwByteToWrite, &dwBytesWritten);

Как видно, что в функциях FT_Read и FT_Write идентификатором работы с устройством является Handle - ftHandle, который так же жёстко привязан к номеру канала, который мы открыли ранее (A).
Т.е. чтобы перейти на другой канал B, необходимо закрыть предыдущий (A) выполнив: FT_Close(ftHandle); и по аналогии открытия канала A, открыть канал B, лишь с разницей установки требуемого индекса канала: ftStatus = FT_Open(0, &ftHandle); .

Вопрос, возможно ли одновременно открыть оба канала и работать с обоими каналами 'одновременно'??!

С уважением,
VBU


--------------------
Не корысти ради, не в целях наживы, а во исполнение велений души!
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение May 24 2018, 11:24
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 8 314
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (BVU @ May 24 2018, 14:06) *
Т.е. чтобы перейти на другой канал B, необходимо закрыть предыдущий (A) выполнив: FT_Close(ftHandle); и по аналогии открытия канала A, открыть канал B, лишь с разницей установки требуемого индекса канала: ftStatus = FT_Open(0, &ftHandle); .
Странный подход. Что вам мешает вместо одного ftHandle завести два- ftHandleA и ftHandleB?

QUOTE (BVU @ May 24 2018, 14:06) *
Вопрос, возможно ли одновременно открыть оба канала и работать с обоими каналами 'одновременно'?
Конечно возможно.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
BVU
сообщение May 24 2018, 11:41
Сообщение #3


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

Группа: Свой
Сообщений: 1 301
Регистрация: 30-11-04
Из: Россия, Н.Новгород
Пользователь №: 1 264



Цитата(Сергей Борщ @ May 24 2018, 14:24) *
Странный подход. Что вам мешает вместо одного ftHandle завести два- ftHandleA и ftHandleB?

Конечно возможно.


Пробовал такой вариант, но при чтении серийного номера любого из открытых каналов (А, В):
ftStatus = FT_ListDevices((PVIOD)devIndex, Buffer, FT_LIST_BY_INDEX | FT_OPEN_BYSERIAL_NUMBER);
данная функция возвращает ошибку!!!

Если работаешь с одним каналом, то всё замечательно...

С уважение,
BVU


--------------------
Не корысти ради, не в целях наживы, а во исполнение велений души!
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение May 24 2018, 12:55
Сообщение #4


Гуру
******

Группа: Модераторы
Сообщений: 8 314
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (BVU @ May 24 2018, 14:41) *
данная функция возвращает ошибку!!!
1) У вас залипает клавиша с восклицательным знаком, пора менять клавиатуру.
2) Какую именно ошибку возвращает эта функция?
QUOTE (BVU @ May 24 2018, 14:41) *
Если работаешь с одним каналом, то всё замечательно...
Приведите больше кода.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
BVU
сообщение May 25 2018, 08:01
Сообщение #5


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

Группа: Свой
Сообщений: 1 301
Регистрация: 30-11-04
Из: Россия, Н.Новгород
Пользователь №: 1 264



Цитата(Сергей Борщ @ May 24 2018, 15:55) *
2) Какую именно ошибку возвращает эта функция?

статус возвращенный выполняемой функцией принятый в 2DXX Direct:
ftStatus = 1 - false;
ftStatus = 0 - true;

С уважением,
BVU

P.S. Сергей, спасибо, что вы пытаетесь мне помочь! А практически, вы сами работали с FT2232 в таком режиме?


--------------------
Не корысти ради, не в целях наживы, а во исполнение велений души!
Go to the top of the page
 
+Quote Post
BVU
сообщение May 25 2018, 09:49
Сообщение #6


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

Группа: Свой
Сообщений: 1 301
Регистрация: 30-11-04
Из: Россия, Н.Новгород
Пользователь №: 1 264



Всем спасибо за участие! Вопрос снимается... была путаница в индексации каналов

С уважением,
BVU


--------------------
Не корысти ради, не в целях наживы, а во исполнение велений души!
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 20th June 2018 - 04:42
Рейтинг@Mail.ru


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