Развел печатную плату как описанно в мунуале.
Спаял, цепляю на 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ой.
Может кто-нибудь подскажет где я ошибся, кроме ДНК, конечно?