реклама на сайте
подробности

 
 
> STM32F051 DMA на GPIO со стробом
sherr
сообщение Feb 10 2016, 06:06
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 257
Регистрация: 10-06-06
Из: Ставрополь
Пользователь №: 17 955



Дано : STM32F051 48 mhz + RGB светодиодная матрица от светодидного экрана.
Надо раз в 50-400 мкс задвигать 64 байта данных(точнее 64 х6 бит) в сдвиговые регистры.
Можно ли при передаче по DMA после выставления на порту каждого нового байта формировать
импульс CLK(80-100 нс достаточно), или прийдется вешать внешнюю логику ?
ps : Ногодрыг хотелось бы оставить на крайний случай - контроллеру и так будет чем заняться ...

Сообщение отредактировал sherr - Feb 10 2016, 06:09
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
adnega
сообщение Feb 10 2016, 06:50
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(sherr @ Feb 10 2016, 09:06) *
после выставления на порту каждого нового байта формировать импульс CLK(80-100 нс достаточно),

Точно после каждого байта, а не после каждой пачки из 64 байт?
Опишите какой интерфейс управления матрицей (или хотя бы номер хаба, например, HUB12).
Go to the top of the page
 
+Quote Post
sherr
сообщение Feb 10 2016, 09:58
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 257
Регистрация: 10-06-06
Из: Ставрополь
Пользователь №: 17 955



Цитата(adnega @ Feb 10 2016, 09:50) *
Точно после каждого байта, а не после каждой пачки из 64 байт?
Опишите какой интерфейс управления матрицей (или хотя бы номер хаба, например, HUB12).

Номер xаба не помню, матрица RGB 32*64 шаг 3мм (!).
R1-G1-B1...R2-G2-B2 + CLK,EN,STB, A0-A3.
Глубина сдвиговых регистров - 64 бита, мультиплексирование 1/16 .
По поводу сделать массив вдвое больше - уже думал, памяти маловато,при 5 бит/цвет
почти все 8 к и уйдут...

Сообщение отредактировал sherr - Feb 10 2016, 09:59
Go to the top of the page
 
+Quote Post
adnega
сообщение Feb 10 2016, 10:22
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(sherr @ Feb 10 2016, 12:58) *
Номер xаба не помню, матрица RGB 32*64 шаг 3мм (!).
R1-G1-B1...R2-G2-B2 + CLK,EN,STB, A0-A3.
Глубина сдвиговых регистров - 64 бита, мультиплексирование 1/16 .
По поводу сделать массив вдвое больше - уже думал, памяти маловато,при 5 бит/цвет
почти все 8 к и уйдут...

Для 32 * 64 * RGB нужно минимум 32*64*3=6144 бита = 768 байт.
О каких 8К идет речь?

Длина регистра 64 бита = 8 байт.
Соединяете R1_OUT c R2_IN, R2_OUT с G1_IN, G1_OUT с G2_IN, G2_OUT с B1_IN, B1_OUT с B2_IN.
Получаете единый сдвиговый регистр на 48 байт.
Передаете эти 48 байт при помощи SPI (SPI_MOSI -> R1_IN, SPI_SCK -> CLK).
По окончанию выключаем вывод (EN=0), чуть-чуть ждем, делаем импульс на STB
(после импульса на STB можно уже начать задвигать следующую строку),
устанавливаем соответствующий A0-A3, включаем вывод (EN=1, если вставить ожидание перед включением,
то можно управлять яркостью).
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Feb 10 2016, 10:44
Сообщение #5


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(adnega @ Feb 10 2016, 12:22) *
(после импульса на STB можно уже начать задвигать следующую строку),
Я не работал с такими матрицами, но зацеплюсь за эту фразу. Так может пусть таймер формирует этот импульс своей схемой сравнения и генерит прерывание. В прерывании можно запихать эту самую следующую строку параллельно (если уж sherr так хочет грузить параллельно) ногодрыгом в цикле и дальше спокойно ждать следующего прерывания.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th August 2025 - 17:51
Рейтинг@Mail.ru


Страница сгенерированна за 0.01424 секунд с 7
ELECTRONIX ©2004-2016