|
Хочу писать в 16 линеек WS2812B на макс. скорости., Хочу весь буфер без участия процессора с минимумом накладных. |
|
|
|
Dec 13 2017, 17:25
|

Местный
  
Группа: Участник
Сообщений: 214
Регистрация: 24-10-07
Из: zp.ua
Пользователь №: 31 690

|
Сразу предупреждаю, в STM32 я полный новичек, пока знакомлюсь. Все чего пока добился, это моргать в кейле светодиодом на двухдолларовой плате с stm32f103c8t6. До этого частенько писал для авр на бейсике и ассемблере, так что освоение stm32 вопрос времени. Вопрос мой будет не столько про код, а про возможность выполнения нужного мне алгоритма переферией автономно. Не буду скрывать, хочу без участия процессора выдавать поток данных сразу в 16 длинных линеек светодиодов WS2812B. Для выдачи одного бита нужно на отдельном выводе сначала ~ на треть периода выставить 1, потом на треть данные, и на треть 0. В принципе при помощи DMA данная задача реализуема, но вот этот ноль в начале и еденица в конце утроят размер буфера (и добавят неудобства работы с ним).
Поэтому возник вопрос, а можно ли как то внутренними или наружными выходами таймеров переводить (или заполнить) весь 16 битный порт GPIO в высокий и низкий уровни? Вероятно можно было бы задействовать второй DMA для цикличной выдачи двух констант (с нулями и еденицами) в тот же порт, но думаю целый ДМА для этого жирновато. Возможно не зная завязок и возможностей переферии я узковато мыслю, и есть более красивые решения, был бы рад услышать.
|
|
|
|
|
 |
Ответов
|
Dec 13 2017, 20:41
|

Местный
  
Группа: Участник
Сообщений: 214
Регистрация: 24-10-07
Из: zp.ua
Пользователь №: 31 690

|
Цитата(Plain @ Dec 14 2017, 00:07)  Отсюда и решение — все данные форматировать на сильной стороне, т.е. перетасовывать биты и избыточно кидать в SD лишние 0 и 1, а STM32 будет лишь тупой молотилкой. Если гнать с компа то поток хотелось бы тоже не быстрый (например через UART пропихнуть), а экономить хочется оперативку, это ведь из неё через ДМА выгребатся все будет (20 кило байт оперативы, по 3 байта на цвет, уже 6 килопикселей, а это 80x80 всего, если запихнуть еще старт-стопы, то даже 50x50 не поместится). К тому же эти самы непредсказуемые джиттеры ДМА и подначивали решать старстоповые дела без ДМА (все же нагрузка в три раза меньше). Была мысль с аппаратным решением проблеммы, поставить буферный регистр с третьим состоянием, одним выходом таймера переводить регистр в третье состояние, а другим таймером формировать подтяжками нули и еденицы, а ДМА инициировать как раз в начале перехода регистров в Z состояние (за 80мкс старстопов ДМА должен успеть), тогда по фронтам должно быть все шоколадно... но это два корпуса регистров и 16 сопротивлений (или штук пять корпусов логики). Но ведь хочется то же самое все силами контроллера.
Сообщение отредактировал -=TRO=- - Dec 13 2017, 20:51
|
|
|
|
Сообщений в этой теме
-=TRO=- Хочу писать в 16 линеек WS2812B на макс. скорости. Dec 13 2017, 17:25 DeNi Да и с 3 каналами DMA нормальное решение от одного... Dec 13 2017, 17:54 -=TRO=- Цитата(DeNi @ Dec 13 2017, 21:54) Да и с ... Dec 13 2017, 19:32  Огурцов Цитата(-=TRO=- @ Dec 13 2017, 20... Dec 14 2017, 01:50 jcxz Цитата(-=TRO=- @ Dec 13 2017, 19... Dec 13 2017, 18:05 DeNi Цитата(jcxz @ Dec 13 2017, 21:05) Можно в... Dec 13 2017, 18:32  jcxz Цитата(DeNi @ Dec 13 2017, 20:32) И чем в... Dec 13 2017, 19:38   -=TRO=- Цитата(jcxz @ Dec 13 2017, 23:38) Не знаю... Dec 13 2017, 19:47    jcxz Цитата(-=TRO=- @ Dec 13 2017, 21... Dec 13 2017, 20:08    AlexandrY Цитата(-=TRO=- @ Dec 13 2017, 21... Dec 13 2017, 21:07 Огурцов Цитата(-=TRO=- @ Dec 13 2017, 18... Dec 13 2017, 19:15 Plain А откуда задохлик STM32 будет брать такие объёмы в... Dec 13 2017, 19:55 -=TRO=- Plain, по началу с компа, потом с карточки.
К том... Dec 13 2017, 20:03 DeNi Здесь можно почитать подробней про DMA в STM32 - A... Dec 13 2017, 20:10 jcxz Цитата(DeNi @ Dec 13 2017, 22:10) По прио... Dec 13 2017, 20:12 -=TRO=- jcxz, в принципе я был готов, что под задачу понад... Dec 13 2017, 21:09 DeNi Цитата(-=TRO=- @ Dec 14 2017, 00... Dec 13 2017, 21:32  jcxz Цитата(DeNi @ Dec 13 2017, 23:32) Если хо... Dec 13 2017, 21:46 x893 А можно использовать APA102 и забыть про геморрой.... Dec 13 2017, 21:50 -=TRO=- x893, а я темнота и не знал что и такие бывают... ... Dec 13 2017, 22:43 x893 я на 3 канала spi цеплял через dma на 1 MHz Dec 13 2017, 23:58 -=TRO=- Огурцов, вы знаете, а вам таки удалось меня пнуть ... Dec 16 2017, 02:52
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|