Например TDA7294

Форум РадиоКот • Просмотр темы - STM32F1 vs DMA, part 2. А можно ли махать лапками БЕЗ КОДА?!
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Ср апр 24, 2024 23:20:19

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 10 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: STM32F1 vs DMA, part 2. А можно ли махать лапками БЕЗ КОДА?!
СообщениеДобавлено: Чт дек 24, 2020 23:06:40 
Нашел транзистор. Понюхал.

Зарегистрирован: Вс сен 06, 2020 16:06:10
Сообщений: 156
Рейтинг сообщения: 0
Я неплохо поразвлекся с STM32 DMA и мне это дело понравилось. В голову пришли еще пару идей насчет DMA и стало интересно - а вот так на STM32F1xx прокатит?

- назначаем src некий блок в памяти (RAM/flash), с инкрементом.
- dst -> GPIOx_BSRR.
Далее возможны варианты...
1) Вообще заявить это MEM2MEM. Идея в том что DMA влупит на полной скорости, без эвентов. Результат? Блок в памяти будет описанием как ворочать GPIO с почтенной скоростью без участия процессора. Теоретически. Caveat: не уверен что GPIO успеет отработать тайминги когда DMA в регистр постоянно новые данные толкает - и не факт что адресату эти тайминги понравятся. Но вообще, есть какие-то принципиальные причины по которым это не сработало бы?

2) Для более определенных таймингов можно эвентом от таймера канал DMA дергать, тогда это уже не MEM2MEM транзакция, конечно. Это медленнее, но более предсказуемо. И по прежнему не треубет внимания проца к этому занятию. Позволяя что-нибудь этакое, от супер-многоканального PWM железно (совсем-железно если CIRC сделать) до синтеза всяких хитрых паттернов без участия в этом софта.

Пример практического применения, один из: допустим я повешу на Port B (или любой иной) 8080/6800 LCD (параллельный mipi, которые в "простых" мобилах) и согласен подарить LCD весь port B (или иной). У LCD есть 8 линий данных + несколько линий управления (CS, RD, WR... обычные сигналы шины). Это естественно в допущении что контроллера внешней шины нет - камни с шиной очень уж разлапистые и/или дорогие и избыточные. Если контроллер есть, все это конечно ни к чему. А тут идея в том чтобы заранее подготовить буфер и пульнуть целый блок без участия проца. В данном случае - ну вот сэмулировав контроллер шины, дескать. Так что даже малолапый камень сможет не очень медленно в графический LCD что-то пульнуть, да еще и без участия софта.

Кто что думает? Это бред? Или работоспособно? И если второе - какие подводные камни в этих комбо? Ну, кроме диких таймингов в первом случае :)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32F1 vs DMA, part 2. А можно ли махать лапками БЕЗ КО
СообщениеДобавлено: Чт дек 24, 2020 23:31:17 
Поставщик валерьянки для Кота

Карма: 20
Рейтинг сообщений: 253
Зарегистрирован: Вс июн 19, 2016 09:32:03
Сообщений: 2090
Рейтинг сообщения: 0
Кто что думает? Это бред? Или работоспособно?

Это работоспособно и достаточно банально. Работает в том числе с дисплеями, один канал таймера пинает DMA, а второй формирует строб. Насколько помню по времени для F1 получалось 14 тактов на байт. Так можно и 16-ти битный дисплей подключить, а если строб генерить не таймером, то только 8-ми битный и буфер придется увеличивать в 2 или 4 раза... Правда на F1 в половинки порта писать нельзя, так что для него разница не настолько большая.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32F1 vs DMA, part 2. А можно ли махать лапками БЕЗ КО
СообщениеДобавлено: Пт дек 25, 2020 00:29:38 
Друг Кота
Аватар пользователя

Карма: 1
Рейтинг сообщений: 157
Зарегистрирован: Пн окт 11, 2010 19:00:08
Сообщений: 3328
Рейтинг сообщения: 0
https://www.cyberforum.ru/blogs/204791/blog5169.html
https://www.cyberforum.ru/blogs/204791/blog5170.html


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: STM32F1 vs DMA, part 2. А можно ли махать лапками БЕЗ КО
СообщениеДобавлено: Пт дек 25, 2020 03:35:57 
Нашел транзистор. Понюхал.

Зарегистрирован: Вс сен 06, 2020 16:06:10
Сообщений: 156
Рейтинг сообщения: 0
Лобовая идея которая возникла - с 1 таймером/каналом, от которого только DMA event надо. Как я понимаю, по максимуму это что-то типа (APB/2) dma event'ов в секунду? (без прескалера и счет до 1?). А DMA столько вообще переварит?

По оному эвенту нечто типа u32 за раз, кодирующий и данные и стробы, поэтому и все на 1 порт -> BSRR. Можно даже несколько лап в AFIO заюзать под что-то еще, если при подготовке данных учесть что они no-op. Очевидный минус - u32 память кушает, но если это partial отрисовка или нечто типа "PWM на весь порт" - не выглядит большой проблемой вроде. Из плюсов - BSRR позволяет "latch". Можно напрямую ODR, тогда вроде хватит u16 но latch прошлого состояния не будет, каждый u16 должен описывать целиком все (data+все сигналы).

А так спасиб за подтверждение что работает. А как именно 14 циклов вышло? Откуда такая математика?

p.s. о, я сделал DMA -> BSRR как MEM2MEM, работает вроде. Некое подобие PWM на весь порт для пробы соорудил, правда это не интересно т.к. MEM2MEM и CIRC вместе не живут. Но как я понимаю отстрелить таким манером "пакет" в дисплей "асинхронно" все же вроде вариант, не? В допущении что нас устроят получившиеся при таком изврате тайминги, конечно.

p.p.s. а по ссылкам из соседнего топика еще http://dimoon.ru/mikrokontrolleryi/dray ... 103c8.html нашлось - там тоже вывод данных в ленту довольно интересно сделан. Как я понял, DMA репрограмит цикл PWM дабы сделать 1 или 0 этой штуке.


Вернуться наверх
 
Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: STM32F1 vs DMA, part 2. А можно ли махать лапками БЕЗ КО
СообщениеДобавлено: Пт дек 25, 2020 11:14:58 
Поставщик валерьянки для Кота

Карма: 20
Рейтинг сообщений: 253
Зарегистрирован: Вс июн 19, 2016 09:32:03
Сообщений: 2090
Рейтинг сообщения: 0
А как именно 14 циклов вышло? Откуда такая математика?

Подобрал опытным путем. Если параллельно еще работают DMA, то может и больше придется делать, особенно на F1 с медленными портами.


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: STM32F1 vs DMA, part 2. А можно ли махать лапками БЕЗ КО
СообщениеДобавлено: Сб дек 26, 2020 03:41:43 
Нашел транзистор. Понюхал.

Зарегистрирован: Вс сен 06, 2020 16:06:10
Сообщений: 156
Рейтинг сообщения: 0
Интересно. А вы это с каким камнем делали? И в чем суть эксперимента была? Смотрели с какого момента дисплей начинает работать стабильно?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32F1 vs DMA, part 2. А можно ли махать лапками БЕЗ КО
СообщениеДобавлено: Сб дек 26, 2020 10:52:42 
Поставщик валерьянки для Кота

Карма: 20
Рейтинг сообщений: 253
Зарегистрирован: Вс июн 19, 2016 09:32:03
Сообщений: 2090
Рейтинг сообщения: 0
Спектрум на F1 и F3 запускал. Заполнял буфер сразу на всю линию из 256 точек и отрисовывал, там еще второй таймер был который автоматически отключал первый после вывода нужного количества пикселей. Точно не помню, вроде в динамике картинка нормально выглядит и при 12 тактах, по крайней мере на F3, но если по одному кадру отрисовывать то иногда что-то портилось...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32F1 vs DMA, part 2. А можно ли махать лапками БЕЗ КО
СообщениеДобавлено: Вс дек 27, 2020 07:30:03 
Нашел транзистор. Понюхал.

Зарегистрирован: Вс сен 06, 2020 16:06:10
Сообщений: 156
Рейтинг сообщения: 0
Прикольно. Хоть и не объясняет полностью почему именно столько. А второй таймер зачем? Просто запрограмить нужное число байтов в DMA транзакцию было чем-то плохо? Оно пыталось IRQ от DMA по этому поводу избежать? Или зачем оно?

p.s. в случае дисплея - никогда бы не подумал что dma + gpio можно собезьянить примитивный клон "display controller" gpu, мне все же определенно нравится stm32 своим железом, черт его возьме :)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32F1 vs DMA, part 2. А можно ли махать лапками БЕЗ КО
СообщениеДобавлено: Вс дек 27, 2020 11:13:31 
Поставщик валерьянки для Кота

Карма: 20
Рейтинг сообщений: 253
Зарегистрирован: Вс июн 19, 2016 09:32:03
Сообщений: 2090
Рейтинг сообщения: 0
Прикольно. Хоть и не объясняет полностью почему именно столько.

Выбирается достаточно большой период, затем подбирается значение CCR для строба с учетом того, что даже если DMA пинается в начале периода данные в порт могут выводиться с некоторой задержкой из-за конфликтов при доступе к памяти и портам, в конце период уменьшается до минимально возможного при котором наблюдается стабильная работа.

Цитата:
А второй таймер зачем? Просто запрограмить нужное число байтов в DMA транзакцию было чем-то плохо? Оно пыталось IRQ от DMA по этому поводу избежать? Или зачем оно?

Если не отключать таймер, то он будет продолжать генерить строб. Это можно не делать когда управляющие сигналы тоже выводятся через порты, но в таком случае размер буфера будет в 2 или 4 раза больше, соответственно и заполнять его дольше, а мне была важна скорость.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32F1 vs DMA, part 2. А можно ли махать лапками БЕЗ КО
СообщениеДобавлено: Пн дек 28, 2020 11:41:43 
Нашел транзистор. Понюхал.

Зарегистрирован: Вс сен 06, 2020 16:06:10
Сообщений: 156
Рейтинг сообщения: 0
Ну да, по шине же еще процессор данные гоняет, в дш написано что всегда оставляют хотя-бы 1 цикл для него. И еще другие каналы могут, но там приоритетами можно рулить.

А что до строба - я как-то так себе работу с LCD'шником и увидел - описать вообше "состояния шины", и данные и стробы. Чтобы подготовить пакет, зарядить, а дальше цепочку команд/данных само втолкает, оформив правильными состояниями. И если это какой-нибудь display_init() (команды и константы инициализации) - можно в readonly в флеш, и еще вопрос займет ли оно больше чем софтварная реализация.

Интересно, а есть идеи как проверить теряет DMA -> GPIO что-нибудь или нет при mem2mem? Подстава в том что это быстрое и многоканальное, у меня нет скоростных логичесих анализаторов которым бы что-то такое можно было бы ухватить.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 10 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 42


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y