Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Десять УАРТов
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
pvman
Здравствуйте, коллеги!
Для одной задачи нужно собрать девайс с 10 уартами.
Уменьшить количество не получается, т.к. нужно работать с этими потоками,
смешивать из них данные и т.д.
Понадобится как минимум два контроллера STM32, у которых по 6 уартов на борту.
Как осуществить обмен между ними? Есть ли грамотные решения для быстрого доступа к данным другого мк?

скорость по уартам - 250килобит/с
krux
смотря что и как смешивать, и с какими временнЫми (мин, макс) задержками.
имхо, так похоже, что это будет нормальная задача для ПЛИС.
x893
Грамотные решения всегда есть.
на бумажке умножаем 250 х 6 = 1500
Исходя из этого и пляшем.
V_N
STM32 с FSMC ( например STM32F217) + FPGA ( например EP3C25E144I7N )
Den64
Цитата(pvman @ Dec 13 2017, 12:41) *
Понадобится как минимум два контроллера STM32, у которых по 6 уартов на борту.
Как осуществить обмен между ними?

SPI
iosifk
Цитата(pvman @ Dec 13 2017, 12:41) *
Для одной задачи нужно собрать девайс с 10 уартами.

Понадобится как минимум два контроллера STM32, у которых по 6 уартов на борту.
Как осуществить обмен между ними? Есть ли грамотные решения для быстрого доступа к данным другого мк?

скорость по уартам - 250килобит/с

Вопросов достаточно...
10 УАРТов, и что данные так и прут потоком?
Тогда применяя 2 процессора - считаем. С одной стороны на каждый подвешено 5 УАРТов и надо данные от них получать. А с другой стороны надо получать еще столько же данных из второго процессора и еще столько же туда отдать. Ну это если алгоритм требует полной картины. И при этом, данные от входов могут идти потоком, но данные между процессорами потребуют либо аппаратных сигналов, стробирующих кадры, либо при программной синхронизации потребуется протокол передачи данных. Сборка данных в кадры и разборка полученных данных. Да еще метки времени, наверняка и они понадобятся....
И мне кажется, что весь процессор на это и рухнет...

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

Вот почему сказано "STM32"? Только потому что у него есть УАРТы? Типа это "Гайка М3"....
Почему бы не нарисовать алгоритм в виде блок-схемы. На нем указать потоки данных, объемы памяти, требуемые для обмена. И только потом из алгоритма рисовать блок-схему "вычислителя"... И в варианте с отдельным контроллером в ПЛИС или с гроздью 8-ми битных контроллеров для обработки УАРТов...
Так что скажете?
x893
MAX14830 + STM32 (если так хочется) и никаких вопросов и гемора с FPGA.
P.S. Телепатия конечно помогла бы. Но какой вопрос- такой и ответ
AlexandrY
Цитата(pvman @ Dec 13 2017, 11:41) *
Как осуществить обмен между ними? Есть ли грамотные решения для быстрого доступа к данным другого мк?
скорость по уартам - 250килобит/с

На i.MX RT1050 можно сделать минимум 16-ть UART-ов на базе Flexible I/O
Это не считая 8-и встроенных нативных UART-ов
GefarD
Последовательно не хотите подключать?
jcxz
Если нужно много UART-ов да ещё с большой скоростью, то STM32 пожалуй будет самым худшим выбором. Ну разве, что немного лучше чем AVR biggrin.gif
Хотя если "без куба - никуда", то тут уже ничего не попишешь.... laughing.gif
@Ark
Цитата(pvman @ Dec 13 2017, 12:41) *
Здравствуйте, коллеги!
Для одной задачи нужно собрать девайс с 10 уартами...

Чтобы получить толковые советы, вам придется раскрыть постановку задачи.
Когда вся картина будет понята, тогда и можно будет предлагать решения.
Сейчас слишком много неизвестных подробностей, которые кардинально могут все изменить...
jcxz
Nuvoton семейство NUC970 - даташит говорит о 10 полноценных UART-ах (!).
Полноценные - это значит имеющие FIFO. 6 из них - глубиной 64 байта, 4 - глубиной 16 байт.
Сколько выведено на пины - нужно смотреть конкретный корпус.
Tiva (tm4c129) - 8 полноценных UART-ов (16-byte FIFO) + ещё 2 можно эмулировать программно.
mantech
Цитата(jcxz @ Dec 13 2017, 15:01) *
Nuvoton семейство NUC970 - даташит говорит о 10 полноценных UART-ах (!).


Есть минус - внешняя флешка.
jcxz
Цитата(mantech @ Dec 15 2017, 14:10) *
Есть минус - внешняя флешка.

Этот минус ничтожен по сравнению с необходимостью ставить 2 МК (как собирается автор), писать в них две прошивки, писать между ними обмен и т.п.
x893
Вот бы посмотреть видео как будет создаваться программа для NU....
Начиная от монтажа на плату и заканчивая обменом данными.

P.S. Видимо простой вариант с MAX14830 не подходит по уровню геморроя.
pvman
всем спасибо за ответы.
MAX14830 не очень подходит, т.к. нет произвольного доступа к данным соседнего МК, придется городить протокол, не впишусь во временные рамки..
Вариант с плис, возможно будет разумным решением, но я не соображаю в verilog. (
250килобит/с, нужно писать пакеты каждого в свой массив и перекидывать с некоторыми изменениями (несложными) в другой поток.
грубо говоря - коммутатор потоков
@Ark
Цитата(pvman @ Dec 15 2017, 22:17) *
Вариант с плис, возможно будет разумным решением...

gosha-z
Цитата(pvman @ Dec 15 2017, 22:17) *
MAX14830 не очень подходит, т.к. нет произвольного доступа к данным соседнего МК, придется городить протокол, не впишусь во временные рамки..

Протокол чего с чем? MAX14830 - это 4 UARTа на i2c/spi, никакого микроконтроллера, обрабатывайте что хотите и как хотите.
x893
Вот и я тоже не понял про соседний МК.
Но с FPGA конечно пафосно и денег больше.
mantech
Цитата(x893 @ Dec 15 2017, 18:37) *
Вот бы посмотреть видео как будет создаваться программа для NU....
Начиная от монтажа на плату и заканчивая обменом данными.


Да вообще-то так же, как и для СТМ, только писать прогу через программатор во внешнюю флеш или на сд-карту..
Plain
Цитата(pvman @ Dec 15 2017, 22:17) *
250килобит/с, нужно писать пакеты каждого в свой массив и перекидывать с некоторыми изменениями (несложными) в другой поток. грубо говоря - коммутатор потоков

Ну если таки всплыло ещё и 10 неких массивов, то даже если и к 10-й странице темы не всплывёт их размер, то 10 микроконтроллеров с одинаковыми программами.
x893
Тут одному гуру разработок нужно было 20 Мбит/сек между двумя МК обмениваться.
Но при расчетах на счетах оказалось, что реальная скорость 500 Кбит/сек.
Наверное и здесь такая же ситуация. Нужно 10, но хватит и 2-х. Остальные про запас.
jcxz
Цитата(mantech @ Dec 15 2017, 22:12) *
Да вообще-то так же, как и для СТМ, только писать прогу через программатор во внешнюю флеш или на сд-карту..

Не нужен программатор. При отладке - загрузка через JTAG. И в состав программы включить функцию прошивки себя во внешнюю флешь.
Написание/отладка/поддержка программы для одного МК будет на порядок проще чем то же самое для связки из двух МК, пускай даже одинаковых.
Огурцов
Цитата(jcxz @ Dec 16 2017, 14:12) *
Не нужен программатор. При отладке - загрузка через JTAG. И в состав программы включить функцию прошивки себя во внешнюю флешь.

вот именно, пусть один мк программирует другие

Цитата(jcxz @ Dec 16 2017, 14:12) *
Написание/отладка/поддержка программы для одного МК будет на порядок проще чем то же самое для связки из двух МК, пускай даже одинаковых.

если функции разделены, то два разных - не сложнее
два одинаковых - проще в два раза
десять одинаковых - проще в десять раз
skripach
У Renesas полно контроллеров имеющих 10 - 18 юартов, например.
blackfin
..
AlexandrY
Цитата(skripach @ Dec 17 2017, 10:10) *
У Renesas полно контроллеров имеющих 10 - 18 юартов, например.

Посмотрите внимательней там.
UART-ы там без FIFO, а у DMA всего 7-мь каналов.
UART-ы разные по функциональности.
Как вы с этим будете бороться?
skripach
Цитата(AlexandrY @ Dec 17 2017, 11:28) *
Посмотрите внимательней там.
UART-ы там без FIFO, а у DMA всего 7-мь каналов.
UART-ы разные по функциональности.
Как вы с этим будете бороться?

Я никак не буду, ТС просил 10 юартов я Renesas дал их ему.
jcxz
Цитата(skripach @ Dec 17 2017, 11:30) *
Я никак не буду, ТС просил 10 юартов я Renesas дал их ему.

25*10*2=500кГц - средняя частота прерываний при непрерывных потоках по всем UART-ам если без FIFO и без DMA.
Сможет ТС реализовать такую работу на 120МГц да ещё и как он хочет - с некоторыми модификациями данных?
Я сомневаюсь.
Огурцов
Цитата(jcxz @ Dec 17 2017, 13:35) *
на 120МГц

легко, 10 камней - это уже 1200 мгц
razrab83
Цитата(pvman @ Dec 15 2017, 20:17) *
Вариант с плис, возможно будет разумным решением, но я не соображаю в verilog. (
Можно решить эту задачу на плис не зная верилог. Собрать в плис (в гуях галочками) процессор (в некоторых ядро уже встроено) и всю периферию включить в процессор. Хоть 10, хоть 20 уартов, лишь бы мяса у плис хватило. И внешний процессор не нужен.
pvman
Цитата(razrab83 @ Dec 21 2017, 12:45) *
Можно решить эту задачу на плис не зная верилог. Собрать в плис (в гуях галочками) процессор (в некоторых ядро уже встроено) и всю периферию включить в процессор. Хоть 10, хоть 20 уартов, лишь бы мяса у плис хватило. И внешний процессор не нужен.

сколько такая плис будет стоить? может там цена космос )
k155la3
Цитата(pvman @ Dec 13 2017, 12:41) *
(1) Здравствуйте, коллеги!
Для одной задачи нужно собрать девайс с 10 уартами.
. . .
(2) скорость по уартам - 250килобит/с

(1) Если есть хоть какая-то аналогия с коммутацией пакетов (тобишь свичем)
То предлагаю рассмотреть такую структуру:
- канал UART входит на "контроллер канала" (по кол-ву каналов, преобразователь "тупого" UART во внутрисхемную "пакетную" скоростную шину)
- мощный процессор для обработки пакетов по внутрисхемной шине.

(2) свичи как-то умудряются работать с 100 Мбит и более
mantech
Цитата(pvman @ Dec 21 2017, 13:51) *
сколько такая плис будет стоить? может там цена космос )


Может я чего-то упустил, предлагался проц с таким кол-вом уартов (NUC970). Чем он-то не подошел?
VCO
Цитата(pvman @ Dec 15 2017, 22:17) *
Вариант с плис, возможно будет разумным решением, но я не соображаю в verilog. (

Да он там и не нужен. Достаточно знать схемотехнику UART. После этого можно просто нарисовать схемотехнику: Параллельный порт МК - 10 UART.
В режиме Shematic САПР для ПЛИС сами проверят схему, оптимизируют и сгенерируют код прошивки без участия HDL (аппаратных языков программирования) типа VHDL или Verilog.
Цитата(pvman @ Dec 21 2017, 13:51) *
сколько такая плис будет стоить? может там цена космос )

Если наша - дорого (это FPGA Intel(Altera) в нашем корпусе). Если импортная - то это CPLD от Xilinx, Altera или Lattice, стоят недорого biggrin.gif
Вся прелесть в том, что Вы можете начать проект на CPLD уже сейчас на бесплатном ПО от производителя, а затем определиться с минимально-достаточным кристаллом и корпусом rolleyes.gif
krux
например, EP4CE22E22C8N ~1200руб в розницу, ~850руб крупный опт. (но это с оговорками, что наружу только 10 UART, и больше ничего не надо)
простейший с точки зрения реализации вариант - в qsys накидать систему с nios2 и 10 UART, запустить nios2 на 125 МГц, и дальше как на обычном MCU писать на обычных Сях. без всяких "внешних" MCU.
iosifk
Цитата(pvman @ Dec 21 2017, 13:51) *
сколько такая плис будет стоить? может там цена космос )

Чтобы иметь 10 каналов UART не надо размещать 10 полноценных блоков...
На самом деле, в ПЛИС можно реализовать многоканальный вариант довольно легко. Скажем берем 10 регистров и только один командо-аппарат который чуть больше, чем для одного канала, и он общий для всех. Вот он по-очередно обмолачивает 10 каналов. Или можно взять 10 х 10 память и тот же командо-аппарат. Поскольку частота внутри ПЛИС значительно больше, чем у UART... Так что ресурсов это много не займет...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2024 Invision Power Services, Inc.