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

 
 
> FT2232D, нет сигнала на TDI/DO в режиме MPSSE
MiSSioN
сообщение Jun 16 2009, 09:42
Сообщение #1





Группа: Новичок
Сообщений: 5
Регистрация: 19-07-07
Пользователь №: 29 257



Развел печатную плату как описанно в мунуале.
Спаял, цепляю на USB, отлично определяется, как устройство видится.
Решил проверить как работает. Написал простеньку программку
#include <iostream>
#include <cstdlib>
#include <stdio.h>
#include <sys/types.h>
#include <ftd2xx.h>
#include <string.h>

int main(int argc, char *argv[])
{
FT_STATUS ftStatus;
FT_DEVICE_LIST_INFO_NODE *devInfo;
FT_HANDLE ftHandle;
char out_buffer[256];
DWORD written;
unsigned int counter=0;

ftStatus = FT_OpenEx((void *)"Dual RS232 A",FT_OPEN_BY_DESCRIPTION,&ftHandle);
if (ftStatus != FT_OK) { cout<<"Device open fail "<<ftStatus<<endl; return EXIT_SUCCESS;};
cout<<"Device open success"<<endl;
ftStatus = FT_SetBitMode(ftHandle,0x00,0x02);
if (ftStatus != FT_OK) { cout<<"Setting bit mode fail "<<ftStatus<<endl; return EXIT_SUCCESS;};
cout<<"Setting bit mode success"<<endl;

out_buffer[0]=0x86; //setting baudrate
out_buffer[1]=0x57; // set 20 KHz
out_buffer[2]=0x02;
ftStatus = FT_Write(ftHandle,out_buffer,3,&written);
if (ftStatus != FT_OK) { cout<<"Setting baudrate fail "<<ftStatus<<endl; return EXIT_SUCCESS;};
cout<<"Setting baudrate success. Written "<<written<<" bytes"<<endl;

while(1){
out_buffer[0]=0x80;//set all to 0
out_buffer[1]=0x00;
out_buffer[2]=0x0B;//CS=out DI=input DO=out CLK=out
ftStatus = FT_Write(ftHandle,out_buffer,3,&written);
if (ftStatus != FT_OK) { cout<<"all pins to 0 fail "<<ftStatus<<endl; return EXIT_SUCCESS;};
usleep(10000);

out_buffer[0]=0x10;//write only ve+
out_buffer[1]=0x07;//write 8 bytes lval
out_buffer[2]=0x00;//hval
sprintf(&out_buffer[3],"TEST%04u",counter);
out_buffer[11]=0x87;//flush buffers
ftStatus = FT_Write(ftHandle,out_buffer,12,&written);
if (ftStatus != FT_OK) { cout<<"Data write fail "<<ftStatus<<endl; return EXIT_SUCCESS;};

out_buffer[0]=0x80; //set pin
out_buffer[1]=0x0A; //CS=1 DI=0 DO=1 CLK=0
out_buffer[2]=0x0B; //CS=out DI=input DO=out CLK=out
ftStatus = FT_Write(ftHandle,out_buffer,3,&written);
if (ftStatus != FT_OK) { cout<<"fail "<<ftStatus<<endl; return EXIT_SUCCESS;};
usleep(1000000);
};

ftStatus = FT_Close(ftHandle);
if(ftStatus != FT_OK){cout<<"Device close fail "<<ftStatus<<endl;return EXIT_SUCCESS;};
cout<<"Device close success"<<endl;
return EXIT_SUCCESS;
};

запускаю, целевой мк читает нули, 8 байт нулей.
Подключаю осцилограф к ногам 24 и 23 FT2232D, наблюдаю следуюющую картину:

красный - CLK
черный - DO
сначала у меня возникла мысль что я перепутал и подключился к CS вместо DO, но нет я провожу измерение напряжения на 23ей ноге а не на 21ой.
Может кто-нибудь подскажет где я ошибся, кроме ДНК, конечно?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
ReAl
сообщение Jun 16 2009, 10:07
Сообщение #2


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



Цитата(MiSSioN @ Jun 16 2009, 12:42) *
Код
  while(1){
    out_buffer[0]=0x80;//set all to 0
    out_buffer[1]=0x00;
    out_buffer[2]=0x0B;//CS=out DI=input DO=out CLK=out
    ftStatus = FT_Write(ftHandle,out_buffer,3,&written);
    if (ftStatus != FT_OK) { cout<<"all pins to 0 fail "<<ftStatus<<endl; return EXIT_SUCCESS;};
    usleep(10000);

    out_buffer[0]=0x10;//write only ve+
    out_buffer[1]=0x07;//write 8 bytes lval
    out_buffer[2]=0x00;//hval
    sprintf(&out_buffer[3],"TEST%04u",counter);
    out_buffer[11]=0x87;//flush buffers
    ftStatus = FT_Write(ftHandle,out_buffer,12,&written);
    if (ftStatus != FT_OK) { cout<<"Data write fail "<<ftStatus<<endl; return EXIT_SUCCESS;};
Да вроде бы на первый взгляд всё правильно.


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post



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

 


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


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