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

 
 
 
Reply to this topicStart new topic
> что делать с d2xx?
spindelsinn
сообщение Aug 11 2011, 07:48
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 21
Регистрация: 6-04-09
Пользователь №: 47 226



Впервые сталкиваюсь с подобного рода задачей. Ничего не понимаю в драйверах.
Итак нужно установить синхронный фифошный режим на чипе FT232H. Он устанавливается только через драйвер, а именно путем назначения параметра ucMode в FT_SetBitmode.
А что и где менять? Писать свой ftd2xx.dll? Менять имеющийся?

Зараннее спасибо.
Go to the top of the page
 
+Quote Post
XVR
сообщение Aug 11 2011, 08:15
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(spindelsinn @ Aug 11 2011, 11:48) *
А что и где менять?
Ничего менять не надо, а надо писать свою программу, которая будет пользоваться функциями из ftd2xx.dll
Цитата
Писать свой ftd2xx.dll? Менять имеющийся?
Тогда уж начните с изготовления своего USB контролера laughing.gif
Go to the top of the page
 
+Quote Post
spindelsinn
сообщение Aug 11 2011, 08:18
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 21
Регистрация: 6-04-09
Пользователь №: 47 226



ммм..... спасибо))
понимания что делать не пришло, зато пришло понимание чего точно не делать))
Go to the top of the page
 
+Quote Post
XVR
сообщение Aug 11 2011, 08:42
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(spindelsinn @ Aug 11 2011, 12:18) *
понимания что делать не пришло, зато пришло понимание чего точно не делать))

Понимания того, что вам нужно, у меня тоже нет biggrin.gif
Вы можете 'установить синхронный фифошный режим на чипе FT232H' изнутри программы, которая работает с вашим FT232, причем только в том случае, если она работает с ним через драйвер (и ftd2xx.dll), а не через виртуальный СОМ порт
Go to the top of the page
 
+Quote Post
spindelsinn
сообщение Aug 11 2011, 14:30
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 21
Регистрация: 6-04-09
Пользователь №: 47 226



Вот код програмки для установки параметра. Но что то она не пашет.

Код
// setbit.cpp: определяет точку входа для консольного приложения.
//

#include "stdafx.h"
#include "ftd2xx.h"


void getlist ()
{
    FT_STATUS ftStatus;
    FT_HANDLE ftHandleTemp;
    DWORD numDevs;
    DWORD Flags;
    DWORD ID;
    DWORD Type;
    DWORD LocId;
    char SerialNumber[16];
    char Description[64];
    // create the device information list
    ftStatus = FT_CreateDeviceInfoList(&numDevs);
    if (ftStatus == FT_OK) {
        printf("Number of devices is %d\n",numDevs);
    }
    if (numDevs > 0) {
        // get information for device 0
        ftStatus = FT_GetDeviceInfoDetail(0, &Flags, &Type, &ID, &LocId, SerialNumber, Description, &ftHandleTemp);
        if (ftStatus == FT_OK) {
            printf("Dev 0:\n");
            printf(" Flags=0x%x\n",Flags);
            printf(" Type=0x%x\n",Type);
            printf(" ID=0x%x\n",ID);
            printf(" LocId=0x%x\n",LocId);
            printf(" SerialNumber=%s\n",SerialNumber);
            printf(" Description=%s\n",Description);
            printf(" ftHandle=0x%x\n",ftHandleTemp);
        }
    }
}

int setbit(unsigned char mode)
{
    int ret;

    FT_HANDLE ftHandle;
    FT_STATUS ftStatus;
    UCHAR Mask = 0xff;
    UCHAR Mode = mode; // Set mode
    UCHAR BitMode;

    ftStatus = FT_Open(0, &ftHandle);
    if(ftStatus != FT_OK) {
        // FT_Open failed
        puts("FT_Open failed");
        return -1;
    }

    ftStatus = FT_GetBitMode(ftHandle, &BitMode);
    if (ftStatus == FT_OK) {
        // BitMode contains current value
        printf("FT_GetBitMode return 0x%02X\n", BitMode);
    } else {
        // FT_GetBitMode FAILED!
        puts("FT_GetBitMode FAILED!");
    }

    ftStatus = FT_SetBitMode(ftHandle, Mask, Mode);
    if (ftStatus == FT_OK) {
        // 0xff written to device
        printf("FT_SetBitMode 0x%02X written to device\n", Mode);
        ret = 0;
    } else {
        // FT_SetBitMode FAILED!
        puts("FT_SetBitMode FAILED!");
        ret = -1;
    }

    ftStatus = FT_GetBitMode(ftHandle, &BitMode);
    if (ftStatus == FT_OK) {
        // BitMode contains current value
        printf("FT_GetBitMode return 0x%02X\n", BitMode);
    } else {
        // FT_GetBitMode FAILED!
        puts("FT_GetBitMode FAILED!");
    }
    FT_Close(ftHandle);
    return ret;
}




#define MODE 0x40

int _tmain(int argc, _TCHAR* argv[])
{
    printf("start MODE = 0x%X\n", MODE);
    getlist();
    setbit(MODE);
    getchar();
    
    return 0;
}
Go to the top of the page
 
+Quote Post
XVR
сообщение Aug 11 2011, 16:55
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата
Но что то она не пашет.
И как это проявляется?
Go to the top of the page
 
+Quote Post
spindelsinn
сообщение Aug 15 2011, 06:04
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 21
Регистрация: 6-04-09
Пользователь №: 47 226



тем что в окне программы появляется следующий текст:
start FT_SetBitMode = 0x40
FT_GetBitMode return 0x00
FT_SetBitMode 0x40 written to device
FT_GetBitMode return 0x00

Тоесть ничего не изменилось.

Да и ко всему прочему тактовый сигнал с платы не пошел, а должен был.

Go to the top of the page
 
+Quote Post
XVR
сообщение Aug 15 2011, 09:54
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Вроде все правильно. А вы во внешнем EEPROM прописали 245 режим?
Цитата
To set this mode the external EEPROM must be set to 245 modes. A software command (FT_SetBitMode) is then sent by the application to the FTDI D2xx driver to tell the chip to enter 245 synchronous FIFO mode.
Go to the top of the page
 
+Quote Post
spindelsinn
сообщение Aug 15 2011, 12:01
Сообщение #9


Участник
*

Группа: Участник
Сообщений: 21
Регистрация: 6-04-09
Пользователь №: 47 226



Цитата
А вы во внешнем EEPROM прописали 245 режим?

да.

Всё ни с того ни с сего заработало sm.gif
Спасибо за внимание.

Сообщение отредактировал spindelsinn - Aug 15 2011, 12:02
Go to the top of the page
 
+Quote Post
spindelsinn
сообщение Aug 16 2011, 08:35
Сообщение #10


Участник
*

Группа: Участник
Сообщений: 21
Регистрация: 6-04-09
Пользователь №: 47 226



но на этом приколы не закончились. Линии TXE и RXF Всегда имеют значение 1 и исключают тем самым возможность чтения и записи. Что не так?
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 25th July 2025 - 01:42
Рейтинг@Mail.ru


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