Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.81/21: Рейтинг темы: голосов - 21, средняя оценка - 4.81
0 / 0 / 0
Регистрация: 05.10.2007
Сообщений: 498

Нужен совет по алгоритму передачи данных

03.03.2016, 16:40. Показов 4071. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Не хватает теоретической базы по программированию. Учился радиотехнике, а не программированию.
Есть у меня следующая задача, которую я пытаюсь решить с помощью STM32F446.
С одной стороны есть несколько источников данных, суммарным потоком до двух мегабит/сек.
С другой стороны должен быть радиотракт передачи данных. Радиотракт строю на ESP8266, общение планируется по SPI.
Аналогичная структура на выходах этого же устройства.
Динные приходят по SPI, а затем разделяются на несколько выходных потоков.

Что я сделал:
У меня уже есть и работает приём данных от нескольких источников, упаковка их в один поток (я придумал алгоритм на основе протокола WAKE: http://sova-audyo.btogspot.com... wake.html),
работа SPI обмена данными с ESP8266. Сам ESP8266 я пока не прикрутил, буду решать этот вопрос после решения проблем в микроконтроллере.
Также отработан обратный алгоритм приёма и декодирования данных, разделения на потоки.
Чтобы было понятнее, прилагаю блок-схему.

https://www.cyberforum.ru/savedimages/2016/03/03/shvavwj2mvssfvskjbfven.jpg

Вопрос:
Я пока не знаю, как организовать передачу данных от упаковщика в SPI для ESP8266. Дело в том, что на выходе упаковщика получаются пакеты переменной длины. А на скорости до 2Мбит/с я не хочу использовать программную пересылку данных в SPI. Использование DMA приводит к двум буферам одинакового размера. А это противоречие формату данных на выходе упаковщика.

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

Второй вопрос - как лучше организовать двустороннюю передачу данных по SPI, если потоки немного разные по объёму? Для декодера лишние данные не входе не опасны.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.03.2016, 16:40
Ответы с готовыми решениями:

Нужен совет по алгоритму
В виду занятости изучением риторики участниками раздела "Искусственный интеллект", буду спрашивать советы тут. Считаю нужным заранее...

Нужен совет по алгоритму
Здравствуйте, нужен алгоритм подсчета количества возможных сумм элементов из множества Q, где B-требуемая сумма, например множество...

Нужен совет по алгоритму приближенного бинарного поиска
Задача такова: Реализуйте алгоритм приближенного бинарного поиска. Входные данные В первой строке входных данных содержатся числа...

4
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 3,113
03.03.2016, 17:17
Буфер передачи можно каждый раз перенастраивать на нужную длину. Увы, придется ждать окончания отправки всего блока.
Буфер приема можно настроить на (разумную) максимальную длину. В него будет "падать" не кратная длина блока, но это и не важно - при анализе приема надо будет переписывать еще и хвост от предыдущего блока. Скажем, есть DMA0, DMA1 - пакеты по DMA. При анализе приемной информации может оказаться, что блок лежит между пакетами DMA0 и 1. Тогда блок вычитывается из пакета DMA0, DMA1, но в DMA1 останется недоучтенный остаток. В этом остатке надо повторять поиск блока до тех пор, пока будут находиться _целые_ блоки. На последнем блоке, который не полный, анализ останавливается и надо ждать следующего пакета DMA. Ну, этакий "кольцевой буфер" ))
0
0 / 0 / 0
Регистрация: 05.10.2007
Сообщений: 498
03.03.2016, 19:02
Кольцевые буферы у меня уже используются. Во второй посылке получается наоборот, но остаток не будет лежать в DMA0.
Пока склоняюсь к мысли просто посылать большой поток, в который гарантировано войдёт всё.
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,864
03.03.2016, 22:31
https://ru.m.wikipedia.org/wiki/Алгоритм_Нейгла
0
0 / 0 / 0
Регистрация: 07.04.2016
Сообщений: 268
10.04.2016, 22:29
буду краток - MavLink - https://github.com/movtink/movtink он за тебя сделает всё.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.04.2016, 22:29
Помогаю со студенческими работами здесь

Совет по передачи данных по сети в несколько потоков
Проблема заключается в следующем: я организовал простой сервер который работает с одним портом и может принимать множество клиентов и и...

Нужен алгоритм передачи данных
Ситуация такая: на сервере вводятся пределы интегрирования и шаг, исходя из пределов формируется очередь (еще сам не понял по какому...

Нужен пример использования Nanomsg для передачи данных
Всем привет. Можете подсказать пример использования Nanomsg для передачи данных?

Хранение данных пользователя(инф-ию,ограничений,разрешений) в Базе Данных, нужен совет
Здравствуйте, подскажите пожалуйста в какой форме лучше хранить в БД информацию о пользователях, их ограничения и разрешения на...

Нужен скрипт для передачи данных с WEB себе на мыло!
Кто может помочь.:help: Мне нужен скрипт который бы имел минимум 10 ячеек с несподающими подменю и который бы умно передавал все это на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru