COMA 1 4 февраля, 2008 Опубликовано 4 февраля, 2008 · Жалоба Добрый день, Что посоветуете в качестве контроллера USB? Основное требование - возможность опторазвязки со стороны SPI, ну и достаточно высокая скорость обмена. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
KRS 0 4 февраля, 2008 Опубликовано 4 февраля, 2008 (изменено) · Жалоба Добрый день, Что посоветуете в качестве контроллера USB? Основное требование - возможность опторазвязки со стороны SPI, ну и достаточно высокая скорость обмена. Если нужен только мастер: IMHO самое быстрое и дешовое решение использовать FTDI FT232R или FT245R, именно новую R серию там на борту есть и генератор и еепром и замечательный режим Synchro Bit Bang - spi влет реализуется причем на скорости до 48 mbit. (Сам пробовал на 1Mгц на одной плате стоит FT245R и AVR для апдейта прошивки выше не нужно было) Можно купить готовый кабель (баксов за 20 - 25) TTL-232R или TTL-232R-3V3 Изменено 4 февраля, 2008 пользователем KRS Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
san822 2 4 февраля, 2008 Опубликовано 4 февраля, 2008 · Жалоба С реализацией SPI на переходнике USB_to_COM надо быть осмотрительнее. Использовал переходник на микросхеме Prolific - получилось, но очень медленно. http://electronix.ru/forum/index.php?showtopic=38836&hl= Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
KRS 0 4 февраля, 2008 Опубликовано 4 февраля, 2008 · Жалоба С реализацией SPI на переходнике USB_to_COM надо быть осмотрительнее. Использовал переходник на микросхеме Prolific - получилось, но очень медленно. http://electronix.ru/forum/index.php?showtopic=38836&hl= Так принцип совсем иной - там полинг и частоту выше 1 кгц вообще не получить ( так было и на FTDI старых с обычным bitbang туда скорость огромная, а если надо считывать то все тормозит) а с synchro bit bang у вас синхронный поток скорость завист от длины пакета если передавать большими блоками то КПД к 100% приближается. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sergeeff Jr. 0 4 февраля, 2008 Опубликовано 4 февраля, 2008 (изменено) · Жалоба IMHO самое быстрое и дешовое решение использовать FTDI FT232R или FT245R, именно новую R серию там на борту есть и генератор и еепром и замечательный режим Synchro Bit Bang - spi влет реализуется причем на скорости до 48 mbit. (Сам пробовал на 1Mгц на одной плате стоит FT245R и AVR для апдейта прошивки выше не нужно было) KRS, а можно на схемку взглянуть (использование FT232RL с SPI)? Изменено 4 февраля, 2008 пользователем sergeeff Jr. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rezident 0 4 февраля, 2008 Опубликовано 4 февраля, 2008 · Жалоба KRS, а можно на схемку взглянуть (использование FT232RL с SPI)? ИМХО тут смотрите. http://www.ftdichip.com/Documents/AppNotes.htm В частности AN232R-01 и AN2232-01. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
KRS 0 4 февраля, 2008 Опубликовано 4 февраля, 2008 (изменено) · Жалоба KRS, а можно на схемку взглянуть (использование FT232RL с SPI)? Да собственно схема то состоит из одной микросхемы FT232RL и пары конденсаторов. В даташите есть пример example USB to MCU UART interface. Просто вместо MCU выберите 3 ноги (которые могут участвовать в бит банг) это и будет SPI Если делать на FT2232C/D то надо еще генератор ставить и чип дороже стоит ( зато SPI там аппаратный практически не надо преобразовывать в последовтаельность бит) Изменено 4 февраля, 2008 пользователем KRS Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sergeeff Jr. 0 4 февраля, 2008 Опубликовано 4 февраля, 2008 · Жалоба Спасибо! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
COMA 1 5 февраля, 2008 Опубликовано 5 февраля, 2008 · Жалоба Да собственно схема то состоит из одной микросхемы FT232RL и пары конденсаторов. В даташите есть пример example USB to MCU UART interface. Просто вместо MCU выберите 3 ноги (которые могут участвовать в бит банг) это и будет SPI Если делать на FT2232C/D то надо еще генератор ставить и чип дороже стоит ( зато SPI там аппаратный практически не надо преобразовывать в последовтаельность бит) Если правильно понял у FT2232C/D есть режим "Fast Opto-Isolated Serial Interface". Стоит на него ориентироваться? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Warlord 0 5 февраля, 2008 Опубликовано 5 февраля, 2008 · Жалоба Если правильно понял у FT2232C/D есть режим "Fast Opto-Isolated Serial Interface". Стоит на него ориентироваться? Fast Opto-Isolated Serial Interface правильно работает на частоте до 6МГц, выше идут сбои. К тому же в SPI еще преобразовывать надо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
COMA 1 5 февраля, 2008 Опубликовано 5 февраля, 2008 · Жалоба понятно. :( Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
KRS 0 14 февраля, 2008 Опубликовано 14 февраля, 2008 · Жалоба Дошли наконец руки поисследовать Synchro Bit Bang Исследовал на FT245RL. Для начала с помощью простейшей программки #include <windows.h> #include <stdlib.h> #include <assert.h> #include "ftd2xx.h" #define SCK_PIN 5 #define OUT_PIN 6 FT_HANDLE hFtdi; unsigned buf[4]; int main(int argc, char* argv[]) { unsigned tmp; unsigned baud; DWORD num; assert(FT_Open(0,&hFtdi)==FT_OK); assert(FT_SetLatencyTimer(hFtdi,2)==FT_OK); assert(FT_SetBitMode(hFtdi,(1<<OUT_PIN) | (1<<SCK_PIN),4)==FT_OK); assert(argc>1); baud = atoi(argv[1]); assert(baud); assert(FT_SetBaudRate(hFtdi,baud)==FT_OK); FT_Purge(hFtdi,FT_PURGE_RX | FT_PURGE_TX); tmp = (1<<OUT_PIN) | (1<<SCK_PIN); assert(FT_Write(hFtdi,&tmp,1,&num)==FT_OK); Sleep(10); FT_Purge(hFtdi,FT_PURGE_RX | FT_PURGE_TX); Sleep(10); while(1) { tmp = (((1<<OUT_PIN) | (1<<SCK_PIN))<<8) | (((1<<OUT_PIN) | (1<<SCK_PIN))<<24); buf[0] = tmp; buf[1] = tmp; buf[2] = tmp; buf[3] = tmp; assert(FT_Write(hFtdi,buf,16,&num)==FT_OK); assert(FT_Read(hFtdi,buf,16,&num)==FT_OK); Sleep(2000); } return 0; } Результаты как и следовало ожидать очень интересные. Как я уже выяснил давно ( еще и на старых FTDI с обычным bitbang ) баудрейт задает максимальную скорость выдачи семплов иногда возникают существенные задержки в произвольном месте(и это не связно с передачей по USB данные уходят в одном пакете). Что сделало невозможным использование тогда для С2 интерфейса (там клоки на ресет идут). Но тогда я не пробовал ставить бауд рейт выше 1E6/16 = 62500. А сейчас попробовал и вот что получилось: Для баудрейта 62500 частота выдачи должна быть 1 mhz, так и получается, но произвольные задержки в разных местах иногда возникают. Ставлю бауд рейт 187500 (187500*16 = 3 Mhz = 0.33 mks) на оцилографе вижу минимум ~ 0.66 Вообще судя по всему получается для бауд рейтов выше 62500 ( 1 mhz) частота выдачи получается странная и по осцилографу не получается выше 0.5 с маленьким хвостиком mks т.е. практически 2 mhz. Но произвольные паузы присутсвуют :( Но самое интересное получается если баудрейт установить 3 000 000. Получается идеальная картинка с частотой практически 1 Mhz ( т.е. частота выдачи 2 mhz) и никаких пауз. Для баудрейта 1 000 000 тоже пауз не заметил частота практически та же что и для 3 000 000, но клоки немного не симмитричные в разных посылках по разному. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться