|
Sinus 2kHz на К1986ВЕ92QI, Использование DMA+DAC |
|
|
|
Sep 6 2016, 19:46
|
Местный
  
Группа: Участник
Сообщений: 202
Регистрация: 7-04-08
Пользователь №: 36 555

|
Коллеги, нужен совет. Хочу с помощью имеющихся в МК К1986ВЕ92QI ЦАП и DMA генерировать синус 2 кГц. Для своих целей я задействовал таймер 1. Когда происходит событие CNT=ARR, формируется запрос DMA, и DMA-контроллер должен очередное табличное значение функции отправить в ЦАП. У контроллера DMA есть несколько режимов работы: основной, автозапрос, пинг-понг и др. Из документации не совсем ясна разница между ними, но в ходе экспериментов я выяснил, что в режимах основной и автозапрос при поступлении от таймера одиночного запроса, контроллер DMA пересылает подряд в ЦАП весь массив значений, чего мне не нужно... А вот в режиме пинг-понг в ответ на запрос происходит пересылка одного значения и декремент счетчика числа передач. В итоге я остановился на режиме пинг-понг, и всё работает, но есть одно "но", которое меня смущает... По завершении цикла DMA счетчик передач становится = 0, и чтобы зациклить процесс приходится разрешать прерывание от DMA и в нем переинициализировать управляющие слова основной и альтернативной структур DMA-канала. В принципе, это не фатально, в моем случае прерывание возникает раз в 500 мкс, но в примерах для STM32, что я встречал, прерывания не используются - только инициализация и всё... Например: http://chipspace.ru/stm32-dac-3/ Кто-нибудь может сказать: можно ли на этом МК решить мою задачу без использования прерывания от DMA? Так чтобы синус формировалсяисключительноаппаратными средствами.
|
|
|
|
|
 |
Ответов
|
Sep 7 2016, 06:34
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(Konrad @ Sep 7 2016, 01:46)  но в примерах для STM32, что я встречал, прерывания не используются - только инициализация и всё... А причём тут STM32? У Вас какой контроллер? Очевидно что в нём совершенно другой контроллер DMA (как и другая периферия) с другими возможностями. И только его и надо изучать. STM32 тут никак не поможет. Цитата(Konrad @ Sep 7 2016, 01:46)  чтобы синус формировалсяисключительноаппаратными средствами. А зачем? Цитата(ViKo @ Sep 7 2016, 11:08)  А еще у STM32 есть прерывание на половине буфера ПДП, очень полезная вещь в данном случае. Я могу вспомнить кучу фич DMA-контроллеров LPC17xx, LPC43xx, TM4C129, OMAP-L137 и др. с помощью которых можно решить эту задачу. Только - толку??? Ведь у ТС совсем другой МК. PS: Впрочем - если в МК ТС-а DMA-контроллер соответствует стандарту "ARM ® PrimeCell ® 32-channel configurable µDMA controller", то могу подсказать
|
|
|
|
Сообщений в этой теме
Konrad Sinus 2kHz на К1986ВЕ92QI Sep 6 2016, 19:46 amiller Цитата(Konrad @ Sep 6 2016, 23:46) По зав... Sep 7 2016, 03:25 ViKo А еще у STM32 есть прерывание на половине буфера П... Sep 7 2016, 05:08 редактор Не обязательно использовать прерывание, можно пере... Sep 7 2016, 07:26 HardEgor В примерах в Milandr.MDR1986BExx.1.4.2.pack есть г... Sep 7 2016, 08:23 Konrad Цитата(HardEgor @ Sep 7 2016, 12:23) В пр... Sep 7 2016, 10:26  jcxz Цитата(Konrad @ Sep 7 2016, 16:26) Ну, эт... Sep 7 2016, 11:21  HardEgor Цитата(Konrad @ Sep 7 2016, 17:26) Спасиб... Sep 7 2016, 17:45 редактор ЦитатаИмеющий то же самое ядро Cortex-M4? Это М3.Н... Sep 7 2016, 12:22 jcxz Цитата(редактор @ Sep 7 2016, 18:22) Если... Sep 7 2016, 12:46 Obam А почему никто не посоветовал обратиться за поддер... Sep 7 2016, 13:06 VAI Ещё на хабре был цикл статей с общим названием ... Sep 7 2016, 18:07 Lerk Цитата(Konrad @ Sep 6 2016, 22:46) Коллег... Sep 8 2016, 07:30 Konrad Цитата(Lerk @ Sep 8 2016, 11:30) Если вам... Sep 9 2016, 10:02  Lerk Цитата(Konrad @ Sep 9 2016, 13:02) в точк... Sep 12 2016, 07:05   Konrad Цитата(Lerk @ Sep 12 2016, 11:05) Вероятн... Sep 16 2016, 18:14
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|