ft245bm - пропускная способность?
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Tiger 29 января 2004 г. 15:37

Кто работал: каких скоростей можно достичь при вводе/выводе?
У меня пример на С:
1 Вариант 1
const UINT FT245_TXBUF_SIZE = 128;
const UINT CYCLE_LENGTH = 1000000;

int main(int argc, char **argv)
{
int i;
FT_STATUS ftStatus = FT_OK;
DWORD BytesWritten;
int Byte2Send=0;

OpenDeviceUsb(&ftHandle);
ftStatus = FT_Open(0,&ftHandle);
FT_SetBitMode(ftHandle,0xff, 1);

for (i=0;i {
Byte2Send = (Byte2Send ? 0x0 : 0xff);
ftStatus = FT_Write(ftHandle,&Byte2Send,1,&BytesWritten);
}
FT_Close(ftHandle); // close EchoUsb device
return 0;
}
При запуске вижу на выводах 245го сигналы переключаются через 1мс, т.е. тормозит по-страшному!

Если же пишу блоками:
int main(int argc, char **argv)
{
int i;
FT_STATUS ftStatus = FT_OK;
DWORD BytesWritten;
int Buffer2Send[FT245_TXBUF_SIZE];

for (int j=0;j OpenDeviceUsb(&ftHandle);
ftStatus = FT_Open(0,&ftHandle);
FT_SetBitMode(ftHandle,0xd0, 1);

for (i=0;i {
for (int j=0;j ftStatus = FT_Write(ftHandle,&Buffer2Send,FT245_TXBUF_SIZE,&BytesWritten);
}
FT_Close(ftHandle); // close EchoUsb device
return 0;
}

То изменения сигналов на шине 245 выглядят еще интереснее:
2 пачки по 16 импульсов, между импульсами в пачке 1 мкс, т.е. как-бы "выплевываются" 32 байта с указанной скоростью. От старта одной пачки до старта следующей 57 мкс, а между блоками, состоящими из этих 2х пачек - то 2, то 4 мс!

Как это можно объяснить?

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru