|
178 / 33 / 17
Регистрация: 02.02.2014
Сообщений: 373
|
|
Передача 2,5 Мбит/с с ПК на STM3215.01.2022, 11:45. Показов 5706. Ответов 57
Метки нет (Все метки)
Привет всем! Мне нужно организовать передачу потока данных в 2,5 мбит/с с компа под Windows на STM32 F072B Disccovery с минимальной задержкой - т.е. где-то близко к 1 мс.
STM32 должен принимать данные с ПК и управлять пинами (по сути просто тупо последовательно пихать полученные данные в GPIO, без обработки, но с очень точными интервалами порядка 400 нс). Всё работает примерно так: 23 мс на получение данных, потом 7 мс на выдачу через GPIO, потом снова 23 мс на получение данных, 7 мс на выдачу и т.п. - и так около 30 раз в секунду. Исхожу из того, что процессор у нас одноядерный, а во время сеанса управления пинами в 7 мс мы должны соблюдать жесткий тайминг. Поэтому мы не можем использовать прерывания во время этих 7 мс, и должны весь прием успевать делать во время пауз в 23 мс. Итого у нас есть 23 мс для того, чтобы принять около 83 кбит данных. Т.е. этот поток в 2,5 мбит/с не является равномерным, на самом деле это поток в 3,6 мбит/с, который должен прерываться на 7 мс 30 раз в секунду, чтобы дать контроллеру слить информацию в пины. Во-первых, самое главное: способна ли вообще данная плата такой поток принять на вход? Хватит ли ей производительности? Хранить долго ничего не надо, памяти вроде хватает, а вот процессор и шины - я не уверен. Если не хватит, то какую мне следует взять для решения этой задачи? Во-вторых, я пока вижу несколько вариантов решения задачи: 1) Написать вручную USB драйвер под Windows и по USB же принимать данные на STM32. Мне тут порекомендовали хороший фреймворк для работы с USB на STM32. 2) Передавать данные по UDP, прикрутив каким-нибудь образом Ethernet на STM32, либо как-то организовав сетевое соединение через USB (так вообще можно?), или передавать на малину (у неё есть Ethernet), а с неё уже на STM32, распараллеливая информацию по нескольким пинам, если одного мало. 3) Использовать вторую STM32 (есть) для параллельного приема данных, и через пины перекидывать на первую STM32. Опять же, как именно закидывать данные в STM32? В случае второго контроллера у нас уже будет не 23 мс на получение данных, а 30 мс, но нам всё равно надо как-то их туда забросить. 3) Использовать какой-нибудь известный, классический подход, про который я не знаю, но который все используют в таких ситуациях (он есть?) Подскажите, пожалуйста, как оптимальнее решить задачу.
0
|
|
| 15.01.2022, 11:45 | |
|
Ответы с готовыми решениями:
57
Разгон CAN быстрее 1 Мбит/с ? (bxCAN STM32, CAN FD чипы) Ноутбук асер аспире v 5 531, при заявленной скорости 500 мбит,выдаёт 180-240 мбит скачать 180-350 мбит загрузить Беспроводная передача на 1900 метров, больше 5 мбит |
|
Модератор
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,876
|
|||||
| 18.01.2022, 10:46 | |||||
|
мелькания вызывают агрессивность и головные боли Добавлено через 1 минуту для чего вообще была эта штука придумана ambilight? Добавлено через 3 минуты
1
|
|||||
|
1983 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
|
||||
| 18.01.2022, 11:00 | ||||
. В случае с хардверными блоками все намного проще - ваша задача делится на хендлеры (функции), вызываемые в прерывании таймера, и функции управления периферией, такой как USB и что-то еще, что даст _удобно_ развернуть GPIO. Будь то экстендеры типа HC595, о которой я упомянул выше, или что-то, с чем удобно работать через готовый интерфейс + DMA контроллера. В этом случае Ваш процессор можно спокойно вообще уводить в HALT и заниматься сугубо обработкой прерываний.
1
|
||||
|
178 / 33 / 17
Регистрация: 02.02.2014
Сообщений: 373
|
||||
| 18.01.2022, 11:12 [ТС] | ||||
0
|
||||
|
Заблокирован
|
|||
| 18.01.2022, 11:49 | |||
|
В случае двойной буферизации для работы с портом через ODR делаем так. Сначала настраиваем таймер и DMA, указав DMA адрес периферии, инкремент памяти и отсутствие инкремента адреса периферии. Далее заполняем один буфер (каждое значение uint16_t и будет значением ODR этого порта в заданный момент времени), указываем блоку DMA адрес памяти, запускаем DMA. Тем временем заполняем второй буфер. При получении прерывания готовности переключаем блоки. Если же нужно выдерживать какую-то паузу, а скорость заполнения буфера выше скорости его передачи, то блок можно начать заполнять по прерыванию половины передачи DMA. Или даже запустить в однократном режиме другой таймер, а на его переполнение начать заполнять буфер.
1
|
|||
|
1983 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
|
||
| 18.01.2022, 12:39 | ||
|
PS: это обсуждение довольно давнее, но вроде бы на этих модулях люди организовывали и двусторонний обмен данными (а значит управляли и GPIO, а не только читали состояние), а это значит что Ваша задача осуществима. Правда, к сожалению, я до этого так и не дошел, хотя, в задумках организовать "плеер" сохраненных диаграмм от saleae был в планах, но так и не осуществился. На сегодня эти процы заметно эволюционировали, и вы можете расчитывать и на скорости в USB3.0...
1
|
||
|
|
|||
| 18.01.2022, 14:45 | |||
|
Есть же прерывания при передаче половины и всего буфера. Тоже самое, но подменять ничего не нужно.
1
|
|||
|
Заблокирован
|
||
| 18.01.2022, 17:29 | ||
|
Я, кстати, у себя в ЖЖшке про GPIO через DMA писал.
1
|
||
|
Заблокирован
|
|
| 18.01.2022, 17:53 | |
|
1
|
|
|
178 / 33 / 17
Регистрация: 02.02.2014
Сообщений: 373
|
|
| 23.01.2022, 11:10 [ТС] | |
|
Хочу начать с простого - суметь передать данные с компьютера на отладочную STM32F072B Discovery, на ней как раз есть второй USB вход для работы с ней как с устройством. Как приноровлюсь хочу реализовать это уже на STM32F411CEU6 (она приехала, вместе с программатором).
Как я понимаю, проще всего работать через WinUSB. Со стороны ПК, как я понимаю, драйвер писать в таком случае не придется, я могу воспользоваться API-функциями вроде этой. Нашёл вот такой мануал: https://michaeltien8901.github... EVICE.html Я в правильную сторону копаю?
0
|
|
|
178 / 33 / 17
Регистрация: 02.02.2014
Сообщений: 373
|
|
| 01.02.2022, 17:25 [ТС] | |
|
Всем огромное спасибо за помощь!
Разобрался с CDC - вроде работает (данные отправляю из C# через стандартный SerialPort, скорость ставлю 10_000_000 бод, оно это ест, не знаю, какая реально у него получается скорость), передача и обработка инфы (8640 байт) занимает около 33 мс, самое то.
0
|
|
|
178 / 33 / 17
Регистрация: 02.02.2014
Сообщений: 373
|
|
| 10.08.2022, 20:10 [ТС] | |
|
Получилась подсветка на 2318 диодов. Яркость где-то 40 000 люмен, кушает до 440 Вт. Контроллер на всякий подключен через гальваническую развязку.
Видео работы подсветки: https://www.youtube.com/watch?v=N8NRuhs1RoU Кликните здесь для просмотра всего текста
Не по теме: Тег YouTube не работает - пытаюсь вставить, получается просто пустое место
0
|
|
|
Модератор
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,876
|
||
| 11.08.2022, 07:41 | ||
![]() 1 копируешь адрес ссылки https://www.youtube.com/watch?v=N8NRuhs1RoU2 удаляешь все до последнего слэша, в данном случае до знака равно N8NRuhs1RoU3 выделяешь N8NRuhs1RoU,и жмешь кнопочку "Ютубе"4 в появившемся окне выбираешь время воспроизведения, в данном случае с начала - "0" и получаешь [YOUTUBE="0"]N8NRuhs1RoU[/YOUTUBE]
0
|
||
|
323 / 190 / 45
Регистрация: 25.08.2011
Сообщений: 1,263
|
|||
| 11.08.2022, 09:56 | |||
|
0
|
|||
|
178 / 33 / 17
Регистрация: 02.02.2014
Сообщений: 373
|
|||
| 11.08.2022, 11:57 [ТС] | |||
![]() Не по теме: Нужно из видеосигнала вычленить нужные пиксели и отдать команды на светодиоды. Самая главная проблема, на мой взгляд, это даже не подбор FPGA, которая переварит столько информации, а как декодировать настолько толстый HDMI сигнал в формате 4K 120 Гц RGB 10bit HDR VRR. Про обычный HDMI-сигнал (например, 1080p 30 Гц) в интернете информация есть, а вот про вот это вот днём с огнём не сыщешь
0
|
|||
|
62 / 187 / 31
Регистрация: 14.02.2013
Сообщений: 1,719
|
|
| 11.08.2022, 20:36 | |
|
Не плохо но фиксацию движения экранов нужно сделать. А то как уши у слона болтаются когда доходят до предела.
Добавлено через 3 минуты Здорово.
1
|
|
|
178 / 33 / 17
Регистрация: 02.02.2014
Сообщений: 373
|
||
| 02.11.2022, 16:40 [ТС] | ||
![]() По фиксации согласен, но пока не знаю как. В моём понимании для этого нужно заменить текущие приводы (люфты ужасные + масса уха под 35 кг- отсюда болтание) на линейные актуаторы. Но я пока не нашёл такие актуаторы, которые можно было бы руками туда-сюда двигать. То есть чтобы экраны могли двигаться как сами, так и вручную - подошёл к экрану и загнул/разогнул его рукой. Текущая схема, при всех её недостатках, это позволяет.
0
|
||
|
62 / 187 / 31
Регистрация: 14.02.2013
Сообщений: 1,719
|
||
| 02.11.2022, 17:44 | ||
|
0
|
||
| 02.11.2022, 17:44 | |
|
Сетевая карта 1000 мбит, работает как 100 мбит Что лучше 10 Мбит Ростелекома(телефон) или 100 мбит кампусной сети(оптика) 10 Мбит/с вместо 100 Мбит/с Mikrotik RB751U-2HnD Упала скорость по Wi-Fi со 100 мбит до 10 мбит Передача цифр по USART stm32 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки
Правым кликом по серверу -> отладочная информация -> edit
Заменить "net": "raw", на "net": "tcp",
Нажать кнопку reload.
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|