romanetz 0 1 июня, 2015 Опубликовано 1 июня, 2015 (изменено) · Жалоба Для проекта софтверного 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 Изменено 1 июня, 2015 пользователем romanetz Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться