Easyelectronics.ru

Электроника для всех
Текущее время: 29 сен 2020, 03:57

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/5шт. два слоя. $5/5шт. четыре слоя
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
 Заголовок сообщения: Нужен совет по алгоритму передачи данных
СообщениеДобавлено: 04 мар 2016, 17:27 
Старожил
Аватара пользователя

Зарегистрирован: 30 янв 2014, 18:09
Сообщения: 647
Откуда: Киев
Не хватает теоретической базы по программированию. Учился радиотехнике, а не программированию.
Есть у меня следующая задача, которую я пытаюсь решить с помощью STM32F446.
С одной стороны есть несколько источников данных, суммарным потоком до двух мегабит/сек.
С другой стороны должен быть радиотракт передачи данных. Радиотракт строю на ESP8266, общение планируется по SPI.
Аналогичная структура на выходах этого же устройства.
Данные приходят по SPI, а затем разделяются на несколько выходных потоков.

Что я сделал:
У меня уже есть и работает приём данных от нескольких источников, упаковка их в один поток (я придумал алгоритм на основе протокола WAKE: http://sova-audio.blogspot.com/2016/02/qwake-wake.html),
работа SPI обмена данными с ESP8266. Сам ESP8266 я пока не прикрутил, буду решать этот вопрос после решения проблем в микроконтроллере.
Также отработан обратный алгоритм приёма и декодирования данных, разделения на потоки.
Чтобы было понятнее, прилагаю блок-схему.
Изображение
Вопрос:
Я пока не знаю, как организовать передачу данных от упаковщика в SPI для ESP8266. Дело в том, что на выходе упаковщика получаются пакеты переменной длины. А на скорости до 2Мбит/с я не хочу использовать программную пересылку данных в SPI. Использование DMA приводит к двум буферам одинакового размера. А это противоречие формату данных на выходе упаковщика.

Я планировал по таймеру опрашивать готовность буфера передачи, при готовности запускать DMA на передачу. Но не получается согласовать два потока.

Второй вопрос - как лучше организовать двустороннюю передачу данных по SPI, если потоки немного разные по объёму? Для декодера лишние данные не входе не опасны.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Нужен совет по алгоритму передачи данных
СообщениеДобавлено: 04 мар 2016, 18:04 
Старожил

Зарегистрирован: 10 окт 2014, 00:48
Сообщения: 6958
Буфер передачи можно каждый раз перенастраивать на нужную длину. Увы, придется ждать окончания отправки всего блока.
Буфер приема можно настроить на (разумную) максимальную длину. В него будет "падать" не кратная длина блока, но это и не важно - при анализе приема надо будет переписывать еще и хвост от предыдущего блока. Скажем, есть DMA0, DMA1 - пакеты по DMA. При анализе приемной информации может оказаться, что блок лежит между пакетами DMA0 и 1. Тогда блок вычитывается из пакета DMA0, DMA1, но в DMA1 останется недоучтенный остаток. В этом остатке надо повторять поиск блока до тех пор, пока будут находиться _целые_ блоки. На последнем блоке, который не полный, анализ останавливается и надо ждать следующего пакета DMA. Ну, этакий "кольцевой буфер" ))


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Нужен совет по алгоритму передачи данных
СообщениеДобавлено: 04 мар 2016, 19:49 
Старожил
Аватара пользователя

Зарегистрирован: 30 янв 2014, 18:09
Сообщения: 647
Откуда: Киев
Кольцевые буферы у меня уже используются. Во второй посылке получается наоборот, но остаток не будет лежать в DMA0.
Пока склоняюсь к мысли просто посылать большой поток, в который гарантировано войдёт всё.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Нужен совет по алгоритму передачи данных
СообщениеДобавлено: 04 мар 2016, 23:18 
Старожил

Зарегистрирован: 19 мар 2013, 19:37
Сообщения: 2795
Откуда: Санкт-Петербург
https://ru.m.wikipedia.org/wiki/Алгоритм_Нейгла


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Нужен совет по алгоритму передачи данных
СообщениеДобавлено: 11 апр 2016, 23:16 
Старожил
Аватара пользователя

Зарегистрирован: 11 апр 2016, 18:04
Сообщения: 3569
Откуда: Китай, Пекин
буду краток - MavLink - https://github.com/mavlink/mavlink он за тебя сделает всё.

_________________
unirail.org


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 


Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB