Трансиверы, передатчики, РПУ > Software Defined Radio (SDR)

DAC (ЦАП) stm32f429 Лаба

(1/4) > >>

ra0ahc:
Провел несколько дней за экспериментом : Вывод звука через цап.
Так как больше у меня ничего нет, делаю фактически на голой плате.

Вот такой код написал по выводу то одного буфера то другого. Заполнение с сохранением фазы. Просто Синус пытаюсь вывести на ЦАП. Все работает в бесконечном цикле через DMA без участия процессора. Настроил DMA , ЦАП, таймер на 24кГц сэмплирование. Короче работает, но есть проблема. Она на фотке. Это момент переключения буфера.

void DMA1_Stream6_IRQHandler(void)
{
 
    uint8_t old = dacTxBankNawNumber;
      dacTxBankNawNumber= (uint8_t)(~dacTxBankNawNumber & 1);
      HAL_DAC_Stop_DMA(&hdac,DAC_CHANNEL_2);

    if (HAL_DAC_Start_DMA(&hdac, DAC_CHANNEL_2, (uint32_t *) &pOutDac[dacTxBankNawNumber][0], FRAME_SIZE,
                          DAC_ALIGN_12B_R) != HAL_OK) { Error_Handler(); }


    float32_t delta = pp * 1500 / bit;
    for (int i = 0; i < FRAME_SIZE; i++) {
            pOutDac[old][i ] = (uint32_t) (100 + arm_sin_f32(phase) * 100);

        phase += delta;
        if (phase > pp) phase -= pp;

    }


   HAL_DMA_IRQHandler(&hdma_dac2);
}

ra0ahc:
Причем фаза действительно совпадает. Но вот этот скачок я не могу победить.

ra0ahc:
Прогресс !

ra0ahc:
Нашел причину. Достал Геннадия. Как всегда не документированные переменные в  CubeMX
Теперь так

ra0ahc:
Из-за использования дешевой звуковухи , у нее только микрофонный вход, а у меня выход 3 вольта с цап (при 12БИТ). Так что пришлось снижать искусственно битность выхода (типа регулировка громкости) 

Навигация

[0] Главная страница сообщений

[#] Следующая страница

Перейти к полной версии