Skocz do zawartości

Stm32F4 discovery, HAL, przetwornik DAC - gniazdo Jack


Pomocna odpowiedź

Napisano

Witam, robię prosty odtwarzacz audio na płytce STM32f4 discovery, i mam problem z jedną rzeczą, jak przekierować wyjście przetwornika DAC zamiast na jakiś pin to odrazu do gniazda jack na płytce? (korzystam z Cube HAL).

Dziękuje za pomoc.

zbyhu, jak chcesz przekazać sygnał z wnętrza procesora do obiektu na zewnątrz nie używając pinu to pozostają tylko fale elektromagnetyczne.

A na poważnie to ten PDF: LINK

Strona 17, dział "On board audio capability"

Gdzieś czytałem, że domyślnym wyjściem dla tego przetwornika, jest właśnie audio jack, ale co bym nie pokombinował to i tak zawsze wyjście sygnału mam na domyślnie ustawionym pinie PA4. Narazie jestem początkujący w programowaniu mikrokontrolerów, i ledwo ogarniam HAL, xd. Swój projekt zrobiłem bardzo prostym sposobem: jeden timer skonfigurowany tak aby działał z taką szybkością jak próbkowanie dźwięku, za każdym razem zmienia on wartość 12 bitową przetwornika:

HAL_DAC_SetValue(&hdac,DAC_CHANNEL_1,DAC_ALIGN_12B_R,POST_SAMPLE);
DAC->SWTRIGR|=DAC_SWTRIGR_SWTRIG1;
DecodeSample();
POST_SAMPLE=PRE_SAMPLE;
if (CHANNELS==CHANNEL_STEREO){IgnoreBytes(sizeof(PRE_SAMPLE));}

i drugi timer który jest do obsługi przycisków, oraz później może dodam jakiś wyświetlacz.

w pętli głównej programu mam zmienianie bufora danych, obsługa usb, oraz wczytywanie danych do bufora.

Więc gdybyś mi mógł to jakoś prościej wytłumaczyć to byłbym wdzięczny 🙂 .

The sound can be output in different ways through audio DAC:

– Using I2S protocol

– Using the STM32F4 DAC to analog input AIN1x of the CS43L22

– Using the microphone output directly via a low pass filter to analog input AIN4x of

the CS43L22

Musisz więc albo wysyłać dane przez I2S do zewnętrznego scalaka który jest DAC + wzmacniaczem albo używać wewnętrznego DAC żeby podawać sygnał na wejście AIN1x tego scalaka.

Zobacz schemat, ustaw odpowiedni pin, będzie działać.

Oglądając inne projekty tego typu, zastanawiałem się, dlaczego wszyscy zawsze konfigurują I2C oraz I2S, gdy przecież można odrazu użyć tego wbudowanego DAC'a, ale teraz po przejrzeniu tego pdf'a, doszedłem do wniosku, że dzięki temu, można kontrolować ten układ na płytce tak jak byłby on zewnętrznym.

The STM32F4 controls the audio DAC through the I2C interface and processes digital

signals through an I2S connection or an analog input signal

Porównując rozpiskę pinów w tym pdf'ie dla tego układu CS43L22 i inny projekt który wykorzystuje tutaj DAC do odtwarzania dźwięku, DAC jest konfigurowany na poziomie interfejsu I2C wszystko się zgadza. a tak jak patrze konfigurację w Stm32Cube, wyjściem dla DAC w takim wypadku może być tylko PA4 (Czyli to jest AIN1), jak zresztą pisze w pdfie. Obawiam się kurcze, że bez konfiguracji I2C oraz I2S to nie wiem czy da się to zrobić. trochę mnie to jednak zawiodło 😥

Szukasz opcji drugiej:

Using the STM32F4 DAC to analog input AIN1x of the CS43L22

tu nie musisz używać ani I2C ani I2S.

AIN1A i AIN1B są zwarte i podłączone do pinu PA4 (przez kondensator żeby odfiltrować DC offset).

Czyli jak na PA4 wygenerujesz dźwięk to powinieneś go słyszeć na słuchawkach (jeśli nic nie przeoczyłem).

EDIT: Chyba jeszcze na PD4 musisz dać HIGH.

sygnał analogowy na pin'ie PA4 jest, ustawienie pinu PD4 na stan wysoki nie przyniosło żadnego rezultatu, wyczytałem w między czasie coś takiego:

7.11.1 Passthrough Analog

Configures an analog passthrough from the analog inputs to the headphone/line outputs.

PASSTHRUx

Analog In Routed to HP/Line Output

0

Disabled

1

Enabled

https://www.cirrus.com/cn/pubs/proDatasheet/CS43L22_F2.pdf

(Strona 44)

chyba trzeba jakoś rejestr tego układu ustawić, ale pytanie czy to jest możliwe tylko przez I2C czy jakoś bezpośrednio też się da?

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...