48 printf(
"Доступ к FTDI\n");
55 ftStatus = FT_ListDevices(&numDevs,NULL,FT_LIST_NUMBER_ONLY);
56 if (ftStatus == FT_OK) {
58 printf(
"Число устройств=%d\n", numDevs);
62 printf(
"Устройство не подключено\n" );
69 printf(
"A7_Dac - устройство открыто\n" );
72 printf(
"A7_Dac - ошибка доступа к устройству\n");
116 printf(
"\nПЛИС загружена\n");
120 printf(
"\nПЛИС не загружена\n");
121 char* fname =
"a7dac_m2.bit";
122 printf(
"\nЗагрузка прошивки %s ", fname );
126 printf(
" - Ok\n\n");
131 printf(
" - Error\n\n");
146 for(
int ii=0; ; ii++ )
152 if( data!=0xFFFFFFFF )
213 FILE *fl = fopen( fname,
"rb" );
216 printf(
"Ошибка доступа к файлу %s\n", fname );
229 FT_Write(
td->
ftHandle, &buf, 1, &bytesWritten );
232 FT_Write(
td->
ftHandle, &buf, 1, &bytesWritten );
237 for(
int jj=0; ; jj++ )
241 if( 0==(buf & 0x10) )
247 char data_out[512*8];
251 index=fread( &data_in[0], 1, 512, fl );
255 for(
int kk=0; kk<index; kk++ )
258 for(
int ii=0; ii<8; ii++ )
260 data_out[kk*8+ii]=0x80;
261 if( data_in[kk] & (1<<(7-ii)) )
263 data_out[kk*8+ii]|= 0xC0;
267 FT_Write(
td->
ftHandle, &data_out[0], index*8, &bytesWritten );
272 for(
int ii=0; ii<100; ii++ )
274 FT_Write(
td->
ftHandle, &data_out[0], 8, &bytesWritten );
282 for(
int ii=0; ii<5000000 ; ii++ )
345 for(
int ii=0; ii<128; ii++ )
359 cmd |= (pItem->
adr&0xFFFF) << 8;
360 cmd |= pItem->
dev << 24;
363 BufOut[2*ii+1]=pItem->
data;
369 char *src=(
char*)BufOut;
370 char *dst=(
char*)Buf4BitOut;
375 *dst++ = 0xF0 | (val & 0xF);
376 *dst++ = 0xF0 | ((val>>4) & 0xF);
381 char *ptr = (
char*)Buf4BitOut;
389 ftStatus=FT_Write(
td->
ftHandle, ptr, size, &bytesWritten );
397 ptr = (
char*)Buf4BitIn;
401 ftStatus=FT_Read(
td->
ftHandle, ptr, size, &bytesWritten );
410 char val0, val1, val;
411 char *src=(
char*)Buf4BitIn;
412 char *dst=(
char*)BufIn;
417 val = (val1<<4) | (val0&0x0F);
441 *(pItem->
pData)=BufIn[2*ii+1];
unsigned int cmd_index
номер текущей команды
TF_A7Dac_TaskData * td
Внутренние данные класса
int PldLoad(char *fname)
Загрузка прошивки ПЛИС
virtual void PkgCmdStart(void)
Начало выполнения команды
CMD_Item items[256]
массив команд
int * pData
указатель для чтения
FT_HANDLE ftHandle
дескриптор устройства
int Open(void)
Начало работы с модулем
int data
данные для записи
int cmd
команда, 1 - запись, 0 - чтение
int GetPldDone(void)
Проверка наличия прошивки
virtual void PkgCmdRead(int dev, int adr, int *pData)
Чтение из регистра
virtual void PkgCmdWrite(int dev, int adr, int data)
Запись в регистр
virtual void PkgCmdExecute(void)
Выполнение команды
unsigned int cmd_status
состояние команды