реклама на сайте
подробности

 
 
4 страниц V  < 1 2 3 4 >  
Reply to this topicStart new topic
> Ввод данных в компьютер., Бинарный поток.
SNR
сообщение Aug 15 2012, 19:23
Сообщение #31


Частый гость
**

Группа: Свой
Сообщений: 135
Регистрация: 17-05-09
Из: Kiev
Пользователь №: 49 171



Дома более пристально изучил принятую структуру и оказалось что куда-то теряются четыре строчки.
Т.е. принимаем четыре нормально, потом четыре пропуск, потом опять четыре принимаем и т.д.
Длина строки 8192 бита. То есть 4*8192=32768 бит исчезают через раз.

73!

Сообщение отредактировал SNR - Aug 15 2012, 19:24
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
Konst_777
сообщение Aug 16 2012, 07:47
Сообщение #32


Знающий
****

Группа: Свой
Сообщений: 549
Регистрация: 1-06-05
Пользователь №: 5 644



Цитата(SNR @ Aug 15 2012, 22:23) *
Дома более пристально изучил принятую структуру и оказалось что куда-то теряются четыре строчки...

В void __fastcall TWriteThread::Execute() перед строками:
UCHAR *inContext_1 = USBDevice->BulkInEndPt->BeginDataXfer(inBuf_1, BUFFER_LENGTH, &inOvLap_1);
UCHAR *inContext_2 = USBDevice->BulkInEndPt->BeginDataXfer(inBuf_2, BUFFER_LENGTH, &inOvLap_2);


добавьте строку:
USBDevice->BulkInEndPt->SetXferSize(BUFFER_LENGTH);

Иначе, по умолчанию XferSize=4096 байт и принимаемые данные поочередно пишутся в inBuf_1 и inBuf_2 по 4 килобайта.
Go to the top of the page
 
+Quote Post
SNR
сообщение Aug 16 2012, 19:06
Сообщение #33


Частый гость
**

Группа: Свой
Сообщений: 135
Регистрация: 17-05-09
Из: Kiev
Пользователь №: 49 171



Спасибо за подсказку. Теперь все заработало.
Тестировал на домашнем компьютере, на разных скоростях (СLK от 3 до 24.5 МГц).
Хост: Intel® 5 Series/3400 Series Chipset Family USB Enhanced Host Controller
Разрывов нет, кадры не теряются. То есть на максимальных скоростях модема проблем нет.

Попутно возник вопрос по таймауту в функции WaitForXfer(&inOvLap_1,TIMEOUT)
Если я правильно понял, это время в миллисекундах когда драйвер ждет прихода данных из-вне, и если данные не приходят, то ничего не отдает. Или это время отведенное на передачу? В CyAPI.pdf как-то непонятно описан этот параметр.
Это я к чему спрашиваю. Есть у нас спутник Метеосат-9. Так вот данные из него идут с намного меньшей скоростью, приблизительно 146 кбит/сек. И чтоб записывать такие низкоскоростные потоки я так понимаю нужно менять и таймаут и размер буфера. Как это корректно подобрать или методом проб?

И корректно ли я закрываю работу ЮСБ устройтва или еще что-то надо дополнительно?

73!
Go to the top of the page
 
+Quote Post
Konst_777
сообщение Aug 16 2012, 20:20
Сообщение #34


Знающий
****

Группа: Свой
Сообщений: 549
Регистрация: 1-06-05
Пользователь №: 5 644



Цитата(SNR @ Aug 16 2012, 22:06) *
Попутно возник вопрос по таймауту в функции WaitForXfer(&inOvLap_1,TIMEOUT)
Если я правильно понял, это время в миллисекундах когда драйвер ждет прихода данных из-вне, и если данные не приходят, то ничего не отдает.

Да правильно.
Цитата(SNR @ Aug 16 2012, 22:06) *
...И чтоб записывать такие низкоскоростные потоки я так понимаю нужно менять и таймаут и размер буфера. Как это корректно подобрать или методом проб?

Ну да, вообщем то, методом проб.
Цитата(SNR @ Aug 16 2012, 22:06) *
И корректно ли я закрываю работу ЮСБ устройтва или еще что-то надо дополнительно?

Да, корректно.
"Close( ) is called automatically by the ~CCyUSBDevice( ) destructor. It is also called automatically by
the Open ( ) method, if a handle to the driver is already open."
Go to the top of the page
 
+Quote Post
SNR
сообщение Aug 17 2012, 08:37
Сообщение #35


Частый гость
**

Группа: Свой
Сообщений: 135
Регистрация: 17-05-09
Из: Kiev
Пользователь №: 49 171



День добрый!
Вчера до поздней ночи тестил - на высоких скоростях проблем нет. А вот попробовал загнать CLK = 200 kHz, то есть данные защелкиваются с частотой 200/16= 12,5kHz , тут работает не совсем корректно. Естественно пока наберется 2 мб для записи , проходит длительное время и не понятно программа пишет или стоит ( т.е. тут надо какую-то придумывать визуальную фичу по которой бы видно было что все ок). Также выяснилось что после нажатия СТОП и закрытия программы она остается "висеть" и с помощью диспетчера не снимается. Только надо передернуть кабель. Повторюсь что это для низких частот.

Ну да ладно, думаю сделаю на форме чекбокс с помощю которого буду менять размер буфера на 10240 (выяснил экспериментально что пишет нормально, без разрывов при низких скоростях), но не получилось, при компиляции пишет что "невозможно изменить константу", менять из чекбокса хотел это:
static const ULONG BUFFER_LENGTH = 1048576*2;

Спасибо!


Go to the top of the page
 
+Quote Post
Konst_777
сообщение Aug 17 2012, 09:53
Сообщение #36


Знающий
****

Группа: Свой
Сообщений: 549
Регистрация: 1-06-05
Пользователь №: 5 644



Цитата(SNR @ Aug 17 2012, 11:37) *
... при компиляции пишет что "невозможно изменить константу", менять из чекбокса хотел это:
static const ULONG BUFFER_LENGTH = 1048576*2;

Добавьте в Unit2.cpp переменную, например:
static LONG blockLength = BUFFER_LENGTH;
и замените BUFFER_LENGTH на blockLength во всех вызовах BeginDataXfer() и SetXferSize().

Константу TIMEOUT преобразуйте в переменную timeout, то есть объявление:
static const ULONG TIMEOUT = 20000;
замените на:
static ULONG timeout = 20000;

На форму добавьте два компонента класса TCSpinEdit (вкладка Samples панели компонентов CBuilder) для задания значений blockLength и timeout .
Go to the top of the page
 
+Quote Post
SNR
сообщение Aug 17 2012, 19:34
Сообщение #37


Частый гость
**

Группа: Свой
Сообщений: 135
Регистрация: 17-05-09
Из: Kiev
Пользователь №: 49 171



Все доделал, теперь работает отлично. Большое спасибо за помощь Konst_777. Я думаю Вы не будете против,
если я сюда выкладу все материалы.
Может кто-то тоже будет идти этим путем и пригодится. В архиве прошивка для CY7C68013A,
драйвер, проект FPGA, и софт для записи на комп.

Итак краткое описание:
Запись бинарного последовательного потока в файл.

FPGA + контроллер СY7C68013A. Основная задача FPGA из последовательного потока
сделать параллельный 16-битный и по положительному фронту SLWR записать в CY7C68013A.
Далее посредством CY7C68013A вводим в комп и записываем на жесткий диск.

73!
С ув. Олег
Прикрепленные файлы
Прикрепленный файл  USB_Binread.rar ( 1.38 мегабайт ) Кол-во скачиваний: 96
 
Go to the top of the page
 
+Quote Post
SNR
сообщение Aug 28 2012, 20:58
Сообщение #38


Частый гость
**

Группа: Свой
Сообщений: 135
Регистрация: 17-05-09
Из: Kiev
Пользователь №: 49 171



В составе модема все работает отлично. Вот полученные изображения в эти выходные:
один с спутника Метоп-А, другой с геостационара Электро-Л1

Олег.
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
_pv
сообщение Aug 28 2012, 22:38
Сообщение #39


Гуру
******

Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954



Цитата(SNR @ Aug 29 2012, 02:58) *
В составе модема все работает отлично. Вот полученные изображения в эти выходные:
один с спутника Метоп-А, другой с геостационара Электро-Л1

немножко оффтопа,
а можно по-подробнее что за модем, и совсем хорошо если какую-нибудь ссылку с описанием какие метеорологические спутники вообще есть на каких частотах что передают? что-то вдруг интересно стало.

Go to the top of the page
 
+Quote Post
SNR
сообщение Aug 30 2012, 10:13
Сообщение #40


Частый гость
**

Группа: Свой
Сообщений: 135
Регистрация: 17-05-09
Из: Kiev
Пользователь №: 49 171



Ответил в личку.
Go to the top of the page
 
+Quote Post
andrew smirnov
сообщение Sep 28 2012, 09:41
Сообщение #41





Группа: Новичок
Сообщений: 8
Регистрация: 28-09-12
Пользователь №: 73 719



Если не секрет, какую максимальную скорость получили?
Go to the top of the page
 
+Quote Post
Konst_777
сообщение Sep 28 2012, 16:13
Сообщение #42


Знающий
****

Группа: Свой
Сообщений: 549
Регистрация: 1-06-05
Пользователь №: 5 644



Цитата(andrew smirnov @ Sep 28 2012, 12:41) *
Если не секрет, какую максимальную скорость получили?

Цитата(SNR @ Aug 16 2012, 22:06) *
...Тестировал на домашнем компьютере, на разных скоростях (СLK от 3 до 24.5 МГц)...

То есть, для данного применения достаточной была скорость обмена 4 Мбайта в секунду.
Go to the top of the page
 
+Quote Post
andrew smirnov
сообщение Sep 28 2012, 16:51
Сообщение #43





Группа: Новичок
Сообщений: 8
Регистрация: 28-09-12
Пользователь №: 73 719



Цитата(Konst_777 @ Sep 28 2012, 20:13) *
То есть, для данного применения достаточной была скорость обмена 4 Мбайта в секунду.

Интересуюсь не из праздного любопытства - стоит задача по вводу сигнала как раз со спутникового модема, но за основу взят отладочный модуль ftdi um232h. Пока темный лес - я скорее программист, чем схемотехник...
Не подскажете, какую микросхемку можно использовать для преобразования из последовательного кода в параллельный на 8 бит и формировать управляющий сигнал при заполнении регистра, чтобы передать их в um232h (сдвиговый регистр и делитель частоты, так сказать, в одном флаконе)? Хотелось бы выжать из этой микросхемки максимум...

Сообщение отредактировал andrew smirnov - Sep 28 2012, 16:55
Go to the top of the page
 
+Quote Post
_pv
сообщение Sep 28 2012, 21:40
Сообщение #44


Гуру
******

Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954



Цитата(andrew smirnov @ Sep 28 2012, 22:51) *
Интересуюсь не из праздного любопытства - стоит задача по вводу сигнала как раз со спутникового модема, но за основу взят отладочный модуль ftdi um232h. Пока темный лес - я скорее программист, чем схемотехник...
Не подскажете, какую микросхемку можно использовать для преобразования из последовательного кода в параллельный на 8 бит и формировать управляющий сигнал при заполнении регистра, чтобы передать их в um232h (сдвиговый регистр и делитель частоты, так сказать, в одном флаконе)? Хотелось бы выжать из этой микросхемки максимум...

у ft232h есть режимы последовательного интерфейса.
а если скорости до 20-30МГц то можно тупо параллельным интерфесом сэмплить и клоки и данные на максимально частоте а потом программно разбирать.
Go to the top of the page
 
+Quote Post
andrew smirnov
сообщение Sep 29 2012, 07:01
Сообщение #45





Группа: Новичок
Сообщений: 8
Регистрация: 28-09-12
Пользователь №: 73 719



Цитата(_pv @ Sep 29 2012, 01:40) *
у ft232h есть режимы последовательного интерфейса.
а если скорости до 20-30МГц то можно тупо параллельным интерфесом сэмплить и клоки и данные на максимально частоте а потом программно разбирать.

Да нет, хотелось бы получить значение, близкое к теоретическому максимуму для ft232h. Да и программно разбирать клоки и данные - не лучшее занятие.
После ввода сигнал еще обрабатывать программно.
Go to the top of the page
 
+Quote Post

4 страниц V  < 1 2 3 4 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 27th July 2025 - 23:39
Рейтинг@Mail.ru


Страница сгенерированна за 0.01473 секунд с 7
ELECTRONIX ©2004-2016