Easyelectronics.ru

Электроника для всех
Текущее время: 22 авг 2019, 08:01

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



JLCPCB – Прототипы печатных плат за $2/10pcs (Любой цвет!)
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 20 ] 
Автор Сообщение
 Заголовок сообщения: ШИМ + DMA на STM32F3
СообщениеДобавлено: 19 июл 2019, 12:37 
Старожил
Аватара пользователя

Зарегистрирован: 28 сен 2012, 22:11
Сообщения: 343
Откуда: г.Таганрог/г.Геленджик/г.Одесса
Всем привет.
Продолжаю мучить F303CB. Необходимо рулить адресными светодиодами WS2812. Данные кодируются временными интервалами. На мой взгляд, самое логичное использовать ШИМ. Раскладываем биты на длительности высокого периода, последовательно пишем данные в регистр таймера, профит. Реализовал выдачу массива в регистр таймера в прерывании того же таймера, что генерит ШИМ. В принципе работает, но не очень стабильно, да и долбить постоянно прерывания с периодом 1,25мс мне не очень нравится. Поэтому решил лить данные через DMA. Настроил все вот так:

Show Код


И нифига. Выход постоянно в высоком уровне. А вот если поставить размерность данных памяти 8бит, то передача запускается, но на данные выход не реагирует. Просто выдает низкий уровень на весь период, и высокий на удвоенный период. Что я делаю не так?

_________________
Количество полученного опыта прямо пропорционально выведенному из строя оборудованию....


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ШИМ + DMA на STM32F3
СообщениеДобавлено: 19 июл 2019, 12:50 
Старожил

Зарегистрирован: 10 окт 2014, 00:48
Сообщения: 6023
Нельзя в 16-битный регистр писать 8-битные данные (через DMA).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ШИМ + DMA на STM32F3
СообщениеДобавлено: 19 июл 2019, 14:36 
Старожил
Аватара пользователя

Зарегистрирован: 28 сен 2012, 22:11
Сообщения: 343
Откуда: г.Таганрог/г.Геленджик/г.Одесса
Это я знаю, НО, буфер 16-битный. Т.е. и у памяти и у периферии 16 бит.

_________________
Количество полученного опыта прямо пропорционально выведенному из строя оборудованию....


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ШИМ + DMA на STM32F3
СообщениеДобавлено: 19 июл 2019, 14:51 
Старожил

Зарегистрирован: 23 янв 2016, 15:37
Сообщения: 988
Код:
TIM2->BDTR |= TIM_BDTR_MOE;

Нет у TIM2 такого регистра.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ШИМ + DMA на STM32F3
СообщениеДобавлено: 19 июл 2019, 15:02 
Старожил
Аватара пользователя

Зарегистрирован: 28 сен 2012, 22:11
Сообщения: 343
Откуда: г.Таганрог/г.Геленджик/г.Одесса
Да, осталось от настроек другого таймера, забыл убрать. Но сути это не меняет.

_________________
Количество полученного опыта прямо пропорционально выведенному из строя оборудованию....


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ШИМ + DMA на STM32F3
СообщениеДобавлено: 19 июл 2019, 15:14 
Старожил
Аватара пользователя

Зарегистрирован: 28 сен 2012, 22:11
Сообщения: 343
Откуда: г.Таганрог/г.Геленджик/г.Одесса
Данные явно передаются, т.к. количество перепадов уровня на выходе совпадает к количеством передаваемых данных. Вот только передается чушь...

_________________
Количество полученного опыта прямо пропорционально выведенному из строя оборудованию....


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ШИМ + DMA на STM32F3
СообщениеДобавлено: 19 июл 2019, 15:41 
Старожил

Зарегистрирован: 11 сен 2012, 11:19
Сообщения: 5616
Содержимое буфера покажи.
И попробуй сменить на 2ой канал DMA + TIM2->CR2 |= TIM_CR2_CCDS;


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ШИМ + DMA на STM32F3
СообщениеДобавлено: 19 июл 2019, 16:15 
Старожил
Аватара пользователя

Зарегистрирован: 28 сен 2012, 22:11
Сообщения: 343
Откуда: г.Таганрог/г.Геленджик/г.Одесса
Со вторым каналом вообще не работает. Массив заполнен вот так:

Вложение:
Screenshot_36.png
Screenshot_36.png [ 25.51 Кб | Просмотров: 597 ]

_________________
Количество полученного опыта прямо пропорционально выведенному из строя оборудованию....


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ШИМ + DMA на STM32F3
СообщениеДобавлено: 19 июл 2019, 17:03 
Старожил

Зарегистрирован: 10 окт 2014, 00:48
Сообщения: 6023
Не помню, имеет ли это отношение к данным регистрам, но - сталкивался с тем, что DMA не может менять некоторые регистры периферии. Именно некоторые. И было это, кажется, как раз на таймере, т.к. помню, что извращался на тему 6-step.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ШИМ + DMA на STM32F3
СообщениеДобавлено: 19 июл 2019, 18:33 
Старожил
Аватара пользователя

Зарегистрирован: 22 июл 2017, 11:48
Сообщения: 3531
Для изменения регистов CCRx таймера есть регистр DMAR, который и нужно указывать как регистр назначения в DMA. Читайте маны! В главе "таймеры" ближе к концу это описано.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ШИМ + DMA на STM32F3
СообщениеДобавлено: 19 июл 2019, 19:00 
Старожил

Зарегистрирован: 11 сен 2012, 11:19
Сообщения: 5616
u37 писал(а):
Нельзя в 16-битный регистр писать 8-битные данные (через DMA).

Бред чистой воды. И в 16 бит можно и в 32.Есть ограничение для висящих на AHB и то результат не фатальный.
u37 писал(а):
Не помню, имеет ли это отношение к данным регистрам, но - сталкивался с тем, что DMA не может менять некоторые регистры периферии. Именно некоторые. И было это, кажется, как раз на таймере, т.к. помню, что извращался на тему 6-step.

Ты чЁ куришь????

BusMaster писал(а):
Для изменения регистов CCRx таймера есть регистр DMAR, который и нужно указывать как регистр назначения в DMA. Читайте маны! В главе "таймеры" ближе к концу это описано.

это здесь лишнее.


BARS_, у тебя ошибкО в том, что ты считаешь что TIM2 16 бит, внимательно почитай.
Делай буфер 8бит, меняй в настройках DMA размер периферии на 32бита.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ШИМ + DMA на STM32F3
СообщениеДобавлено: 19 июл 2019, 20:30 
Старожил

Зарегистрирован: 06 июн 2018, 22:30
Сообщения: 410
Откуда: Киев
Сделай источник 8 бит приемник 32 бита. (и буфер 8 битный) И я бы ДМА пинал по апдейту.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ШИМ + DMA на STM32F3
СообщениеДобавлено: 19 июл 2019, 21:15 
Старожил

Зарегистрирован: 10 окт 2014, 00:48
Сообщения: 6023
Из-за безмозглых, мне все меньше и меньше хочется здесь писать.

По поводу DMAR - это костыль для пакетного доступа к регистрам, не более того. Он, костыль, не исключает прямого доступа к регистрам, например - к тому-же ССR1.
Фрагмент работающей программы:
Код:
  DMA1_Channel2->CPAR = (uint32_t) (&(TIM17->CCR1));


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ШИМ + DMA на STM32F3
СообщениеДобавлено: 19 июл 2019, 21:20 
Старожил

Зарегистрирован: 11 сен 2012, 11:19
Сообщения: 5616
Снова укурился? Это не костыль а DMA burst .
Позволяет за одну транзакцию загрузить данные почти во все регистры таймера...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ШИМ + DMA на STM32F3
СообщениеДобавлено: 21 июл 2019, 01:41 
Старожил

Зарегистрирован: 11 сен 2012, 11:19
Сообщения: 5616
ТС редиска в кусты срыл, получил искомое и молчит как рыбаоблед...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ШИМ + DMA на STM32F3
СообщениеДобавлено: 21 июл 2019, 01:41 
Старожил

Зарегистрирован: 11 сен 2012, 11:19
Сообщения: 5616
Del


Последний раз редактировалось dosikus_2 21 июл 2019, 11:10, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ШИМ + DMA на STM32F3
СообщениеДобавлено: 21 июл 2019, 02:29 
Старожил
Аватара пользователя

Зарегистрирован: 22 июл 2017, 11:48
Сообщения: 3531
Цитата:
Из-за безмозглых, мне все меньше и меньше хочется здесь писать.

Пхахаха. Правильно - И НЕ ПИШИ тут больше ничего, побереги свои мозги, не расходуй их быстро :))). А то потом оборжомся, какими костылями потом ты будешь загружать или читать одновременно все 4 или 6 регистров CCRx :)))
(uint32_t) (&(TIM17->CCR1)); - маловато чота скобок поставлено, работать не будет! :)))

Про проблему ТС-а - я не вчитывался. Там стопудово какая-нить элементарная ашипка, которую можно решить простым прочтением мануала


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ШИМ + DMA на STM32F3
СообщениеДобавлено: 22 июл 2019, 14:24 
Старожил
Аватара пользователя

Зарегистрирован: 28 сен 2012, 22:11
Сообщения: 343
Откуда: г.Таганрог/г.Геленджик/г.Одесса
И ничего не редиска xD не успел на выходных попрограммить плату. Сегодня попробую =)

_________________
Количество полученного опыта прямо пропорционально выведенному из строя оборудованию....


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ШИМ + DMA на STM32F3
СообщениеДобавлено: 22 июл 2019, 15:38 
Старожил
Аватара пользователя

Зарегистрирован: 30 янв 2014, 18:09
Сообщения: 613
Откуда: Киев
Всё давно работает и есть на гитхабе.
Вот, пример на STM32F051.
Почти тоже самое работало на STM32F407.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ШИМ + DMA на STM32F3
СообщениеДобавлено: 23 июл 2019, 13:52 
Старожил
Аватара пользователя

Зарегистрирован: 28 сен 2012, 22:11
Сообщения: 343
Откуда: г.Таганрог/г.Геленджик/г.Одесса
Да, дело было в неправильном указании битности. Всем спасибо! =)

_________________
Количество полученного опыта прямо пропорционально выведенному из строя оборудованию....


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

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


Кто сейчас на конференции

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


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

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

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB