Hallo,
Ik zou graag een DAC met I²S ingang (audio, dus niet I²C) willen sturen mbv. een MCU die de audio uit RAM haalt.
Op het internet vind ik wel wat info over I²S met niet hetgeen ik zoek. Heeft iemand hier ervaring mee?
Concreet zijn er me 2 dingen niet duidelijk:
1) Hoe sluit ik de I²S poort op een MCU aan?
2) En hoe kan ik audio van uit de PC (wav,...) omzetten zodat de ADC het verstaat?
Groeten,
Johan
Amateur19
Overleden
Eens een CO'er, altijd een CO'er. 27MC, 3M-FM en nog meer Schema's en DataSheets
Het I2S signaal voldoet aan een protocol. Door middel van een programma wat je in de MCU stopt kan je het I2S signaal decoderen. Het programma moet aan de specs van I2S voldoen.
Een .WAV file kan je in verschillende formaten aangeleverd krijgen, 8 Bit / 16 Bit 11,025 khz 22.050 khz 44,100 khz, 48.000 khz etc. etc. Ligt dus aan de ADC hoe je het erin wil krijgen. Maar een MCU die een en ander voor je regelt lijkt me ook hier wel nodig.
De samplerate (bandbreete,resolutie) van de ADC/DAC is wel van belang voor het opslaan van een Audiosignaal.
Al met al niet eenvoudig. Google eens op audio DAC/ADC oid.
GR Richard.
Xenobinol
Technology is dominated by two types of people: those who understand what they do not manage and those who manage what they do not understand
Het I2S formaat wordt wel beschreven in de datasheet van de diverse audio codecs en anders pak je even de datasheet van een DSP erbij.
Zowieso is een DSP beter geschikt voor dit soort werk maar indien je je sample frequentie niet te hoog maakt moet het met een snelle micro ook wel lukken.
En mocht je geen succes hebben, kun je altijd nog gaan bloemschikken 
Bedankt voor jullie antwoorden
in vraag 2 stond: ADC, dit moest natuurlijk zijn: DAC.
Ik ga eens bekijken hoe een .WAV bestand is opgebouwd en dit vergelijken met het I²S protocol. Mijn eerste snelle indruk is dat dit wel op elkaar lijkt en dus gemakkelijk omgezet kan worden (op PC, vooralleer de audio in de toepassing geladen wordt).
Wat de DSP betreft: Er moet enkel audio met een klein aantal kb/s uit ram gehaald worden en rechtstreeks naar de DAC gevoerd. Er moeten geen real-time berekeningen op de data gedaan worden, dus zal een MCU deze taak gemakkelijk aan kunnen.
Johan.
hoi,
als het simpel geluid is (voice quality) dan kun je ook prima werken met een simpele r-2r 8bits DAC op een poort van de MCU. Klinkt nog best goed vind ik.
download dit ouwe stukkie maar eens:
http://www.awe.com/mark/bin/mp219b.zip
en lees hardware.doc!
8 bit rules!
Da fripster
Xenobinol
Technology is dominated by two types of people: those who understand what they do not manage and those who manage what they do not understand
free_electron
Silicon Member
Professioneel ElectronenTemmer - siliconvalleygarage.com - De voltooid verleden tijd van 'halfgeleider' is 'zand' ... US 8,032,693 / US 7,714,746 / US 7,355,303 / US 7,098,557 / US 6,762,632 / EP 1804159 - Real programmers write Hex into ROM
opgelet met wav files. dat verhaal klopt alleen als de wav file PCM ge-encodeerde data bevat. er zijn wel honderden soorten WAV files. er is een veld in de WAV header wat aangeeft welk soort data erin ligt opgeslagen.
PCM data kan je vrij simpel naar een I2S signaal omzetten. je zult er wel een straffe cpu voor moeten hebben als je het wilt bitbangen. zoek je liever een dsp met een i2s interface. dan kan je data gewon inde fifo's smijten en is er een harde blok logica aanwezig die daar i2s van maakt. Je clock op i2s moet constant zijn en dit betekent dat je programma compleet interurpt driven zal moeten zijn. bovendien zal je zoiets in assembler moeten schrijven en optimaliseren naar constante runtime. dergelijke tijd-constante en tijd-kritische routines in een hogere programmeertaal maken is bijna onmogelijk omdat je geen controle hebt over wat de compiler er van bakt.
Er zijn dus twee mogelijkheden:
1) Ofwel werk ik NIET met I²S en kies ik voor een eenvoudige DAC (vb. MCP4921) die ik aan een lage bitrate aanstuur met een MCU (bijvoorbeeld via SPI ipv I²S).
2) Ofwel toch I²S en dan best in combinatie met een DSP vb. dsPIC30F5010). I²S in combinatie met een MCU zal slechts aan een lage bitrate kunnen en dan is het dom om het supersnelle I²S te gebruiken.
Aangezien de eerste keuze eigenlijk super simpel en goedkoop is, zal ik waarschijnlijk hiervoor kiezen. Geluidskwaliteit is hier niet erg belangrijk (het gaat om geluidsmodules voor een modeltreinbaan, dus geen HiFi)
Keuze 2 is natuurlijk een grotere uitdaging, maar ja...
Bedankt voor jullie hulp!