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

 
 
> stm32f103, 4 PWM
chOl
сообщение Apr 14 2011, 05:35
Сообщение #1





Группа: Новичок
Сообщений: 1
Регистрация: 17-08-06
Из: Днепропетровск
Пользователь №: 19 638



Вопрос к знатокам. Задача: одновременная работа 4-х, 8-ми разрядных PWM каналов, частота PWM > 32 kHz, значения в регистрах обновлять через 125uS, данные являются 8-ми разрядными выборками аудио сигналов и хранятся в 4-х flash массивах. Вопрос, возможно ли обойтись без обработчика прерываний, а использовать только DMA для циклической пересылки из flash в TIMx->CCRx? Использую контроллер STM32F103B (второй день нет результата). Пасиба.

Сообщение отредактировал IgorKossak - Apr 14 2011, 06:50
Причина редактирования: Отделил как частную тему
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
KnightIgor
сообщение Apr 15 2011, 06:02
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 643
Регистрация: 29-05-09
Из: Германия
Пользователь №: 49 725



Цитата(chOl @ Apr 14 2011, 07:35) *
Вопрос к знатокам. Задача: одновременная работа 4-х, 8-ми разрядных PWM каналов, частота PWM > 32 kHz, значения в регистрах обновлять через 125uS, данные являются 8-ми разрядными выборками аудио сигналов и хранятся в 4-х flash массивах. Вопрос, возможно ли обойтись без обработчика прерываний, а использовать только DMA для циклической пересылки из flash в TIMx->CCRx? Использую контроллер STM32F103B (второй день нет результата). Пасиба.

Вопросом на вопрос: а зачем использовать прерывания? CCRx состоит по сути из двух регистров: рабочего (теневого, active), с которым происходит сравнение для выработки PWM, и защелки (хранения, preload), где содержится значение для сравнения. Таким образом, если установлен бит OCxPE регистра TIMx_CCMR1 (стр. 395 документа RM0008.PDF Doc ID 13902 Rev 12.), защелка переписывается аппаратно в рабочий регистр только в момент сравнения (match). То есть, запись в защелку можно производить в любой момент, а действовать новое знаение начнет синхронно, как только предыдущее значение "отыграет свое" в момент match.

А DMA использовать можно для записи в CCRx: см. регистр TIMx_DIER, стр. 390 документа RM0008.PDF Doc ID 13902 Rev 12, совместно с регистрами TIMx_DCR и TIMx_DMAR, стр. 403. Там хитро наворочено: DMA нужно указать регистр TIMx_DMAR в качестве регистра периферии, а регистром TIMx_DCR обозначить, куда же будут попадать данные. Или же можно воспользоваться тем фактом, что CCRx регистры каналов расположены по адресам друг за другом, и писать в них из DMA, задав инкрементирование адреса периферии.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 24th July 2025 - 00:00
Рейтинг@Mail.ru


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