|
Ввод данных в компьютер., Бинарный поток. |
|
|
|
 |
Ответов
(1 - 14)
|
Jul 24 2012, 13:03
|

Профессионал
    
Группа: Свой
Сообщений: 1 262
Регистрация: 13-10-05
Из: Санкт-Петербург
Пользователь №: 9 565

|
Цитата(iosifk @ Jul 24 2012, 14:45)  а 2232 в режиме SPI? А там в поток командные слова не придётся вставлять как у FT1248? Цитата(SNR @ Jul 19 2012, 13:15)  Итак есть некое устройство которое на выходе имеет три провода: DATA, CLK ну и естественно GND. Меандр тактирования CLK может идти c максимальной частотой 5,6МГц. Подскажите, чем мне эти данные ввести в комп, чтоб потом записать в бинарный файл. Может есть готовые модули, или собрать - не проблема или хоть подскажите в направлении чего "копать". Загонял через USB 2Мбита. AT91SAM7S64. Двойной буферизации по 16х2КБ хватило. Винда. Главное, если выберете USB - максимальный размер буфера, ибо винда будет считывать когда ей вздумается, особенно на нетбуках и др. мобильных устройствах.
|
|
|
|
|
Jul 27 2012, 10:43
|

Twilight Zone
  
Группа: Свой
Сообщений: 454
Регистрация: 17-02-09
Из: Челябинск
Пользователь №: 44 990

|
Цитата(SNR @ Jul 19 2012, 13:15)  Здравствуйте! Тема для меня новая , поэтому попрошу особо не пинать. До этого все более с радиочастотными трактами занимался.
Итак есть некое устройство которое на выходе имеет три провода: DATA, CLK ну и естественно GND. Меандр тактирования CLK может идти c максимальной частотой 5,6МГц. Подскажите, чем мне эти данные ввести в комп, чтоб потом записать в бинарный файл. Может есть готовые модули, или собрать - не проблема или хоть подскажите в направлении чего "копать".
Большое спасибо! Если скорости хорошие нужны, можно подцепить к микроконтроллеру ОЗУ, считать сколько нужно в него и по нужному протоколу/интерфейсу, затем спокойно все перегнать в ПК, используя обычный USART/RS232. Любой нормальный терминал поддерживает запись бинарного файла.
--------------------
Magic Friend
|
|
|
|
|
Jul 28 2012, 19:39
|
Частый гость
 
Группа: Свой
Сообщений: 135
Регистрация: 17-05-09
Из: Kiev
Пользователь №: 49 171

|
Цитата(iosifk @ Jul 28 2012, 21:09)  Вообще, поскольку зашла речь про ОЗУ и микроконтроллер, то надо рассмотреть и третий вариант. Микроконтроллер с Ethernet... Думал тоже над этим, да вот боюсь что не справлюсь с Ethernet. А какие самые ходовые микроконтроллеры с Ethernet. Может тоже заказать тестовую платку? Спасибо!
|
|
|
|
|
Aug 7 2012, 06:53
|
Частый гость
 
Группа: Свой
Сообщений: 135
Регистрация: 17-05-09
Из: Kiev
Пользователь №: 49 171

|
Остановился на CY7C68013A. Подкорректировал для него пришивку (режим Slave Fifo, асинхронный, 16 бит, запись по положительному стробу SLWR, точка одна - EP2, тип обмена - Bulk с пакетами 512 байт). Преобразование из последовательного в паралельный будет на ПЛИС (сейчас сделал просто генератор последовательных чисел которые подаются на 16 битный паралельный вход, для теста.) С помощью стандартной USB Console проверяю - все в порядке, данные идут, байты увеличиваются как и положено (см. рис). Собственно, теперь вопрос за компьютерной программой, которая будет непрерывно считывать и записывать этот поток на компьютер. Тут сложнее так, как программировал очень давно на C++ Builder 6 и то не сложные вещи . Знаю что нужно использовать CyAPI. Может кто поделится примером, или старым исходником, буду очень признателен. С ув. Олег
Сообщение отредактировал SNR - Aug 7 2012, 06:55
Эскизы прикрепленных изображений
|
|
|
|
|
Aug 7 2012, 17:47
|
Знающий
   
Группа: Свой
Сообщений: 549
Регистрация: 1-06-05
Пользователь №: 5 644

|
Цитата(SNR @ Aug 7 2012, 09:53)  ...Может кто поделится примером, или старым исходником, буду очень признателен... Так ведь, после установки SuiteUSB 3.4.7 в папке " \CyAPI\examples" есть примеры для CyAPI.lib.
|
|
|
|
|
Aug 8 2012, 14:38
|
Частый гость
 
Группа: Свой
Сообщений: 135
Регистрация: 17-05-09
Из: Kiev
Пользователь №: 49 171

|
Накрапал примитивную программу в Билдере 6. Читаю и записывваю в файл так: void __fastcall TForm1::Button1Click(TObject *Sender) { LONG len = 512*64; unsigned char* InBuf = new unsigned char[len]; USBDevice->BulkInEndPt->SetXferSize(1000000); USBDevice->BulkInEndPt->TimeOut=1000; while (iStart) { if(USBDevice->BulkInEndPt) USBDevice->BulkInEndPt->XferData(InBuf,len); FileWrite(FileHandle, InBuf, len); Application->ProcessMessages(); } } Выявилась интересная особенность - в начале записи, записавши первые 2047 байт идет какой-то сдвиг и данные изменяются, но потом все нормализуется ( См. рис ). Я так понимаю что это как-то связано с буфером точки EP2. Как устранить этот сдвиг? Мне важно данные получать без этого разрыва в начале. Спасибо!
Сообщение отредактировал SNR - Aug 8 2012, 14:40
Эскизы прикрепленных изображений
|
|
|
|
|
Aug 8 2012, 19:41
|
Знающий
   
Группа: Свой
Сообщений: 549
Регистрация: 1-06-05
Пользователь №: 5 644

|
Вам нужно получить определенный объем данных (какой?) и затем обработать данные (записать в файл) или нужно непрерывно получать и обрабатывать данные, как это делает Ваша программа? Цитата(SNR @ Aug 8 2012, 17:38)  if(USBDevice->BulkInEndPt) USBDevice->BulkInEndPt->XferData(InBuf,len); Целесообразнее проверять существует ли указатель на BulkInEndPt в начале функции Button1Click(). Записывать данные в файл нужно только тогда, когда чтение данных через USB было завершено успешно. Вообще же, лучше выполнять цикл while (iStart) в отдельном потоке.
|
|
|
|
|
Aug 8 2012, 21:38
|
Гуру
     
Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954

|
Цитата(SNR @ Aug 7 2012, 12:53)  Остановился на CY7C68013A. а почему не ftdi всё-таки? у FT232H или FT220X есть spi slave. да и вообще можно с максимальной частотой 24..40МГц тупо цифровать состояние всех линий: и данных и клока. вот готовое устройство за 9$ с доставкой (внутри тот же CY7C68013A), а потом в компе уже программно разгребать где там перепад клока и какие в этот момент были данные, не очень красиво, зато дешево и сердито. пара ссылок еще, вдруг поможет: http://sourceforge.net/projects/sigrok/http://sourceforge.net/projects/saleaelogicjj/
|
|
|
|
|
  |
3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0
|
|
|