billidean 0 15 октября, 2017 Опубликовано 15 октября, 2017 · Жалоба Привет всем. Делаю управление ПЛИСкой со стороны ПК с применением FT232H в режиме синхронного FIFO. Данные могут быть от одного до 1000 байт. В сторону ПЛИС данные идут стабильно, ПЛИС их читает, все нормально. Но вот обратно из ПЛИС не получается выдать ни одного байта (( Вроде все делаю стандартно: - проверяю TX# чтобы был 0 - ставлю WR#=0 и на каждом такте CLK (от FTDI) подставляю байты - по окончании данных ставлю WR#=1 ...Пока пытаюсь передать 4 байта. На ПК код такой: ftStatus = FT_Write(ftHandle, byOutputBuffer, dwNumBytesToSend, &dwNumBytesSent); if( (ftStatus != FT_OK) || (dwNumBytesSent != dwNumBytesToSend) ) // Did the write-command execute OK? { mdebug("Error in FT_Write"); return -1; // Exit with error } while(1) { qApp->processEvents(); // ftStatus = FT_GetStatus(ftHandle,&RxBytes,&TxBytes,&EventDWord); ftStatus = FT_GetQueueStatus(ftHandle,&RxBytes); if( (ftStatus != FT_OK) ) // Did the FT_GetStatus-command execute OK? { mdebug("Error in FT_GetStatus"); return -1; // Exit with error } mdebug("RxBytes=" + QString::number(RxBytes) + "\tTxBytes=" + QString::number(TxBytes) + "\tEventDWord=" + QString::number(EventDWord)); Sleep(1000); // проверяем наличие данных в приемном буфере микросхемы if (RxBytes > 0) { ftStatus = FT_Read(ftHandle,RxBuffer,RxBytes,&BytesReceived); // по этой команде считываем данные // из микросхемы, RxBuffer содержит сами данные, // RxBytes — количество доступных для чтения данных, // BytesReceived — число принятых данных if (ftStatus == !FT_OK) { mdebug("Error in FT_GetStatus"); return -1; // Exit with error } else { mdebug("Data is OK"); return 0; } } } Сигналтапом в ПЛИСке вижу, что сигналы TX# и WR# имеют запланированные уровни. Но прога на ПК висит в цикле и пишет, что RxBytes = 0. Все связи прозвонил...уже не знаю, к чему придраться... Кто работал с такими микросхемами, подскажите плз, что может быть не так у меня. Буду очень благодарен за рабочие проектики по подобной теме. Вот картина на сигналтапе, здесь я пытаюсь выдать 12 байт 0xFF (не спрашивайте зачем...так надо) Видно, что циклограмма "рабочая"... ...но ПК не видит данных в буфере FT232H... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
billidean 0 16 октября, 2017 Опубликовано 16 октября, 2017 · Жалоба Ахахахах...как часто бывает, причина - плохой контакт/непропай :) Получилось так, что соединив платы ПЛИС и FTDI я прозвонил все линии между платами (с обратной стороны разъемов)...и делал это раза три... Сегодня к плате FTDI подцепил еще одну ПЛИСку с проектом АЛЯ-осциллограф и увидел, что сигнал WR# не приходит на FTDI, хотя сигналтап на ПЛИСке-отправителе присуствовал... Не знаю, может порт вылетел или еще чего, но особо выяснять не стал, взял перекинул линию на другой порт...и всё стало норм. Всем спасибо за советы и удачи )) UPD: Позже перепаялся обратно, все стало нормально. Т.е. получилось так, что для прозвонки контакта между штекером разъема и проводом хватало, а вот для нормальной передачи короткого импульса - не хватало. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться