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

 
 
> Передача большого массива данных от МК к PC (STMicroelectronics Virtual COM Port)
js_slider
сообщение May 19 2014, 08:33
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 29
Регистрация: 22-12-05
Пользователь №: 12 577



Камень STM32F405
Задача требуется передавать большой массив данных по виртуальному COM порту.
За основу взял пример от ST, COM порт определился, попробывал передавать данные вот так:

Код
    for( i = 0; i < Len; i++ )
    {
        //push data into transfer buffer
        APP_Rx_Buffer[APP_Rx_ptr_in] = Buf[i];
        //increase pointer value
        APP_Rx_ptr_in++;
        // To avoid buffer overflow
        if(APP_Rx_ptr_in == APP_RX_DATA_SIZE)
        {
            APP_Rx_ptr_in = 0;
        }
    }

данные до размера APP_RX_DATA_SIZE=2048 передает, а вот как сделать чтоб мог передавать свыше APP_RX_DATA_SIZE?
Нужно что то вроде прерывания по окончанию передачи и определять значение сколько можно еще дописать в APP_Rx_Buffer...
Вариант увеличения APP_RX_DATA_SIZE не вариант, т.к. свободной памяти мало.
Пожалуйста направьте в нужном направлении.

Сообщение отредактировал IgorKossak - May 19 2014, 10:02
Причина редактирования: [codebox] для длинного кода, [code] - для короткого!!!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Vladimir_T
сообщение May 19 2014, 11:02
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 517
Регистрация: 7-02-06
Пользователь №: 14 073



Размер буфера данных между конечными точками не должен превышать 64Б, по стандарту USB. Таким образом вы и передавайте блоками, кратными 64Б, если последний блок будет 64Б, то потребуется передать дополнительный пустой блок. Пользуюсь примером от ST, правда процессор STR912, удается передавать до 62 кБ.
Go to the top of the page
 
+Quote Post
js_slider
сообщение May 19 2014, 11:15
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 29
Регистрация: 22-12-05
Пользователь №: 12 577



Цитата(Vladimir_T @ May 19 2014, 19:12) *
Размер буфера данных между конечными точками не должен превышать 64Б, по стандарту USB. Таким образом вы и передавайте блоками, кратными 64Б, если последний блок будет 64Б, то потребуется передать дополнительный пустой блок. Пользуюсь примером от ST, правда процессор STR912, удается передавать до 62 кБ.

Опишите пожалуйста, если можно с примером, как реализованно заполнение буфера?
Заполняете 64байта, потом ждете какой-то таймаут или прерывание по окончании передачи? затем вновь 64 байта...?
Отключаете ли прерывание USB на время заполнения буфера в цикле?
Не происходят ли переодические сбои при передачи больших массивов данных?

Сообщение отредактировал js_slider - May 19 2014, 11:17
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- js_slider   Передача большого массива данных от МК к PC (STMicroelectronics Virtual COM Port)   May 19 2014, 08:33
- - js_slider   Заметил еще проблему... Если массив данных более 6...   May 19 2014, 09:41
- - Golikov A.   не совсем верно, это при передачи через контрольну...   May 19 2014, 11:20
|- - js_slider   Цитата(Golikov A. @ May 19 2014, 19:30) с...   May 19 2014, 13:05
- - Golikov A.   Вот, потеря данных... http://electronix.ru/forum/i...   May 19 2014, 14:53
|- - js_slider   У коллег ветка заглохла.. и без результатно в отно...   May 19 2014, 16:46
- - Golikov A.   у коллег по первой ссылке ближе к концу был пример...   May 20 2014, 00:50
|- - jcxz   Я уже конечно давно не работал с CDC, но по-моему ...   May 20 2014, 02:20
- - Golikov A.   Я давно не ковырял USB, так что вполне могу ошибат...   May 20 2014, 03:16
|- - jcxz   Цитата(Golikov A. @ May 20 2014, 13:26) В...   May 20 2014, 03:44
- - Axel   Виртуальный COM, как отмечалось, использует bulk т...   May 21 2014, 00:51
|- - jcxz   Да ну, правда что-ль? Интересно - как тогда пашет...   May 21 2014, 02:55
- - Axel   Цитата...А ведь как-то умудряется на 230400, а мес...   May 21 2014, 03:35
- - js_slider   Вобщем проблему решил... Пришлось переписать места...   May 21 2014, 04:53


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

 


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


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