spindelsinn 0 11 августа, 2011 Опубликовано 11 августа, 2011 · Жалоба Впервые сталкиваюсь с подобного рода задачей. Ничего не понимаю в драйверах. Итак нужно установить синхронный фифошный режим на чипе FT232H. Он устанавливается только через драйвер, а именно путем назначения параметра ucMode в FT_SetBitmode. А что и где менять? Писать свой ftd2xx.dll? Менять имеющийся? Зараннее спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xvr 12 11 августа, 2011 Опубликовано 11 августа, 2011 · Жалоба А что и где менять?Ничего менять не надо, а надо писать свою программу, которая будет пользоваться функциями из ftd2xx.dll Писать свой ftd2xx.dll? Менять имеющийся?Тогда уж начните с изготовления своего USB контролера :laughing: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
spindelsinn 0 11 августа, 2011 Опубликовано 11 августа, 2011 · Жалоба ммм..... спасибо)) понимания что делать не пришло, зато пришло понимание чего точно не делать)) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xvr 12 11 августа, 2011 Опубликовано 11 августа, 2011 · Жалоба понимания что делать не пришло, зато пришло понимание чего точно не делать)) Понимания того, что вам нужно, у меня тоже нет Вы можете 'установить синхронный фифошный режим на чипе FT232H' изнутри программы, которая работает с вашим FT232, причем только в том случае, если она работает с ним через драйвер (и ftd2xx.dll), а не через виртуальный СОМ порт Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
spindelsinn 0 11 августа, 2011 Опубликовано 11 августа, 2011 · Жалоба Вот код програмки для установки параметра. Но что то она не пашет. // 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; } Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xvr 12 11 августа, 2011 Опубликовано 11 августа, 2011 · Жалоба Но что то она не пашет.И как это проявляется? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
spindelsinn 0 15 августа, 2011 Опубликовано 15 августа, 2011 · Жалоба тем что в окне программы появляется следующий текст: start FT_SetBitMode = 0x40 FT_GetBitMode return 0x00 FT_SetBitMode 0x40 written to device FT_GetBitMode return 0x00 Тоесть ничего не изменилось. Да и ко всему прочему тактовый сигнал с платы не пошел, а должен был. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xvr 12 15 августа, 2011 Опубликовано 15 августа, 2011 · Жалоба Вроде все правильно. А вы во внешнем 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. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
spindelsinn 0 15 августа, 2011 Опубликовано 15 августа, 2011 (изменено) · Жалоба А вы во внешнем EEPROM прописали 245 режим? да. Всё ни с того ни с сего заработало :) Спасибо за внимание. Изменено 15 августа, 2011 пользователем spindelsinn Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
spindelsinn 0 16 августа, 2011 Опубликовано 16 августа, 2011 · Жалоба но на этом приколы не закончились. Линии TXE и RXF Всегда имеют значение 1 и исключают тем самым возможность чтения и записи. Что не так? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться