Eugen_B Postat August 15, 2010 Partajează Postat August 15, 2010 Salut, doresc sa interfatez un microcontroler cu un DAC audio , acesta din urma primeste datele in format I2S . Pentru acest lucru am nevoie de un semnal de "master clock" acesta avand frecventa un multiplu al ratei de esantionare a stream-ului audio. Tabel cu frecventele MCLK si frecventele de esantionare: O prima problema: merita sa ma complic sa pot stream-ui toate ratele de esantionare, alegand pentru fiecare MCLK respectiv , si implicit trebuie asigurat un LRCK ( obtinut prin divizare a MCLK) si un SCLK (obtinut tot asa ). Sau sa ma axez doar pe 44.1Khz , o rata de esantionare des folosita la fisierele audio , avand grija sa nu stream-uiesc decat acest tip. (se poate aplica un stream de alta rata dar se va auzi mai incet/ mai repede) O a doua problema ar fii cum sa obtin aceste semnale de ceas. Eu ma gandeam , pentru doar 44.1Khz:am nevoie de : MCLK de 16.9344MHz ( desigur se poate lua alta frecventa din tabel) LRCK( left right clock , practic e frecventa de esantionare) 44.1Khz , sau MCLK/384 SCLK 44.1Khz*48 , sau MCLK/8 Voi folosi un oscilator cu un cristal de 16.9344Mhz , pe care pe langa aplicarea la MCLK , il bag intr-un numarator, unde dupa 8 numarari toggle-uieste o iesire -> am SCLK , il bag in alt numarator , il numar de 48 de ori , am LRCK. Am cautat divizoare de ceas , dar nu am gasit , probabil nu am cautat bine/ unde trebuie. O varinata pentru un MCLK variabil pe care sal bag apoi prin divizoare ar fi cu un semnal PWM , dar are problema de a nu putea fii setat pe frecventele acealea exacte. Am gasit o varianta unde aceste semnale erau generate cu o logica programabila (CPLD) , dar nu doresc sa intru in acest teritoriu. Astept orice fel de sugestie cum as putea face acest lucru mai elegant , mai bine. A se lua in considerare ca tensiunile de alimentare vor fi de 3.3V. Si ca in totdeauna , nu am reusit sa ma exprim cum trebuie si sa pun problema asa cum e ea in capul meu , sper ca s-a inteles despre ce e vorba . Link spre comentariu
Eugen_B Postat August 20, 2010 Autor Partajează Postat August 20, 2010 Pana la urma am decis sa folosesc doar sample rate-ul de 48Khz ( pentru ca doar pentru asta am gasit quartz), eventual voi face resample in microcontroler , daca poate face acest lucru pe langa ce mai face el , sau ma voi limita la 48Khz.Atasez o imagine cu schema gandita de mine , si cu fisierul din Proteus. Din simulare mie imi pare ca lucreaza corect , mai exact am 12.288Mhz pe MCLK, MCLK/8 (1.636Mhz) pe SCLK , MCLK/256 (48Khz) pe LRCK. Quartz-ul va di de 12.288Mhz.As dori o a doua opinie , a cuiva care se pricepe , daca ce am facut eu este corect, inainte de a pune schema in "productie". In mod special despre oscilatorul ala cu poarta inversoare , si divizorul de 8 improvizat cu D-type flip-flop cu iesirile conectate in spirala la intrari. Link spre comentariu
Postări Recomandate
Creează un cont sau autentifică-te pentru a adăuga comentariu
Trebuie să fi un membru pentru a putea lăsa un comentariu.
Creează un cont
Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!
Înregistrează un nou contAutentificare
Ai deja un cont? Autentifică-te aici.
Autentifică-te acum