mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Audio Codec mit I²s


Autor: One Piece (onepiece)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo zusammen,
ich habe das audio codec TLV320aic3204 von TI an einem Atmega644 
angeschlossen. Die Koniguration des Codecs ist durch twi abgeschlossen.
Der UC läuft mit internen Takt von 8 MHz und der Codec mit externen 
4MHz.
also zusammengefasst Fs=11,2 KHz, Mclk=4 MHz, Bclk=DAC_CLK/4 (Wclk und 
Bclk werden von Codec erzeugt)Wclk = Fs.
meine fragen sind: kann ich die daten mittels i2s vom Codec (master) zu 
UC (slave) übertragen?wenn ja! ist es sinnvoller mit Interrupts zu 
arbeiten?
hat jemand schon erfahrungen mit uc+codec gemacht (I2S)? es wäre auch 
nett wenn mir jemaden paar code beispiele sendet...
danke im voraus

Autor: Seennoob (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
du willst via SW einen I2S Slave machen in einem atmega ?

Autor: One Piece (onepiece)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja, genau das will ich machen ;-) ist das möglich?
also der atmega muss die daten unverändert weiter geben bzw speichern!

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der ATMega ist zu langsam für vernünftige Anwendung. Einzig denkbar ist 
das Generieren sämtlicher Steuersignale mittels Timer und UART im 
Master-SPI-Mode, so daß sich der ATMega die Daten vom Codec holt. Der 
Codec ist in dem Fall I2S-Slave. Der Mega hat aber auch dann nicht allzu 
viel Zeit, die Daten zu verarbeiten oder wegzuspeichern. Ein Controller 
mit externem RAM-Interface wäre auf jeden Fall zu empfehlen. Ein XMega 
wäre dem Projekt gewachsen, mit den gleichen Vorgaben.

Autor: Rainer Unsinn (r-u)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo, nur eine Frage am Rande: Wo/wie hast Du diesen Codec denn 
bekommen / wieviel bezahlt?

Autor: Rainer Unsinn (r-u)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe mir das Datenblatt mal angesehen - da ist eine maximale 
I2C-Clock von 400kHz angegeben, aber für z.B. 48kHz 16bit stereo (was 
der Chip ja können soll) braucht man mindestens 1,536 MHz - wie paßt 
denn das zusammen?

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
I2S != I2C

Autor: Rainer Unsinn (r-u)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ah ja stimmt. Das war mein Fehler. Also dann die I2S-Leitungen an die 
SPI-Pins anschließen.. dürfte aber schwer weden beim Empfang, weil der 
AVR keinen Empfangspuffer hat.. Bei dem Tempo selbst in Assembler kaum 
machbar.

Wie schnell sind denn die XMega's?

Autor: One Piece (onepiece)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo zusammen,
der atmega muss auf jeden fall als slave herhalten, weil der Bclk und 
Mclk vom Codem generiert werden mussen. der UC muss nur auf dem Mclk(KHz 
bereich) reagieren und der läuft mit 8MHz ich glaube schon dass es 
möglich ist!
dass ich in C-Programmierung nicht so fit bin, ist das Problem.ich suche 
momentan Code-Beispiele für I2S kombiniert mit Atmega...oder vielleicht 
eine idee wie ich das problem angehen kann.

@ Rainer Unsinn:
wie oben schon angedeutet ist: I2C != I2S.
ich habe I2C (SDA und SCL) erfolgreich abgeschlossen, damit lassen sich 
nur Register beschriften für die Codec-Konfiguration.
auf der website www.TI.com kannst du dir nach der anmeldung paar Samples 
bestellen, das geht sehr schnell und Kostenlos.

Autor: One Piece (onepiece)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
zusatzinfo.:
Der Takt und Word Select bei I2S wird vom Master erzeugt.

WS - Wordselect - dient dazu um zwischen dem rechten und linken Kanal 
unterscheiden zu können. WS ändert seinen zustand ein Clockperiode bevor 
das nächste Word anfängt, damit der Slave Zeit hat das letzte Wort zu 
speeichern und sich für das nächste vorzubereiten.

SDA - Serial Data - Die Daten werden MSB first übertragen, damit auch 
Geräte mit unterschiedlicher Word- Länge keine Probleme haben. Die 
fehlenden Bits werden als 0 interpretiert und die Bits die zuviel sind 
einfach weggelassen. Da es sich hierbei um Audiodaten handelt ist dies 
möglich, da dadurch nur die Qualität leidet, aber die Grundinformation 
erhalten bleibt. Die Daten sind mit einer steigenden Flanke gültig.

Autor: Rainer Unsinn (r-u)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es wird wohl daran liegen, daß das Thema sehr (lauf)zeitkritisch ist. 
Bei meiner Betrachtung oben mußt Du ein Byte in weniger als 100 Takten 
komplett verarbeiten, also nicht nur einlesen, auch speichern, puffern, 
evtl. wieder ausgeben.. (wenn ich mich nicht grob verrechnet habe) - das 
ist schon in Assembler (="schnellste wo gibt") anspruchsvoll / das Thema 
mit dem fehlenden Eingangspuffer hab ich ja schon angesprochen.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.