Перейти к содержанию
    

STM32F4 управление DDS по DMA

Для проекта софтверного FM-возбудителя со стереорежимом реализовал аппаратную передачу кода частоты в DDS. Скорость - 384к в секунду новых значений частоты в DDS.

Обвязка - 2 элемента или-не.

Генератор - 12288 кГц, от него тактируется I2S (PC7/PC9), таймер 4 (PB7) и таймер 3 через элемент или-не (PD2). На один вход или-не тактовая частота от генератора, на второй - I/O UPDATE с PB8. На таймер 3 также приходит I/O UPDATE с PB8 на PB4. Т.е. смысл такой: таймер 3 по началу I/O UPDATE сбрасывается, тянет в буфер dds_spi_buf новое значение из TIM2->CCR4 и на него тактовая не проходит все время, пока I/O UPDATE активен.

Таймер 4 в TIM2->CCR4 записывает через DMA выдернутое из большого кольцевого буфера значение FTW по сработке TIM4.CC1

Таймер 2 захватывает период SOF'ов в CCR1, а CCR4 используется как временный 32-х битный регистр, доступный для DMA1 (ни на что не влияет).

Таймер 4 также выдает "триггер" для ЦАПа (DAC2).

Проект для CooCox в аттаче.

my_audio_usb_26052015_2.zip

Изменено пользователем romanetz

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...