Verzweifeln am WM8731

Gast #4554266
Lesenswert?
• ▲
▼
Hallo,

die Daten kommen scheinbar alle richtig an, es kommt aber kein Murks aus 
dem Ding raus.
I2S, 16-Bit Daten, 32kHz Abtastrate.
Plot von Oszi ist im Anhang.
Ich vermute, es liegt an der Konfiguration von dem CODEC.
Ich habe schon alles durchprobiert, weiß leider nicht wie der aktuelle 
Stand der Konfiguration ist.
Wer mit dem Ding gearbeitet hat, könnt ihr mit bitte die richtigen 
Einstellungen verraten?
I2C funktioniert einwandfrei.

Danke schön.

Gruß Alex
Angehängte Dateien:
Gast #4554534
Lesenswert?
• ▲
▼
Funktioniert leider immer noch nicht.
Was fehlt um helfen zu können?
Die Sounddaten sieht man im ersten Post.

I2C sieht momentan so aus:
1
Codec_SendData (0x0F, 0x00); // Reset
2
Delayms (1000);
3
Codec_SendData (0x02, 0x3F); // LHPVOL 
4
Delayms (5);
5
Codec_SendData (0x03, 0x3F); // RHPVOL
6
Delayms (5);
7
Codec_SendData (0x07, 0x02); // Format I2S
8
Delayms (5);
9
Codec_SendData (0x09, 0x01); // Activate

Geschickt wird so:
1
uint8 Codec_SendData(uint8 regAddr, uint16 data)
2
{
3
  uint8 temp;
4
  
5
  temp = CodecI2CM_I2CMasterSendStart(0x1A, 0x00); 
6
  if(temp == CodecI2CM_I2C_MSTR_NO_ERROR)
7
  {
8
    temp = CodecI2CM_I2CMasterWriteByte(((regAddr << 0x01) | (HI8(data) & 0x01))); // (HI8(data) & 0x01
9
    
10
    if(temp == CodecI2CM_I2C_MSTR_NO_ERROR)
11
    {
12
      temp = CodecI2CM_I2CMasterWriteByte(LO8(data));
13
      
14
      if(temp == CodecI2CM_I2C_MSTR_NO_ERROR)
15
      {
16
        temp = CodecI2CM_I2CMasterSendStop();
17
      }
18
    }
19
  }
20

21
  return temp;
22
}

Am Oszilloscope kann man sehen, dass die Daten am i2c auch richtig sind.
Die Hardware funktioniert, das ist ein Evalboard, der mit 
Auslieferungsfw gerade wieder funktioniert hat.
Danke
Gast #4554967
Lesenswert?
• ▲
▼
Sorry Leute, will nicht nerven.
Vielleicht wirde jemand was bemerken.
16 bit, 32kHz Sound soll ausgegeben werden.
Bild 1 Zeigt WordSelect. Frequenz ist 16kHz (lauf Datenblatt muss es 
1/2fs sein. 32/2 = 16khz. Passt also?).
In Nächten Bild: violett CLK, Blau WordSelect, Geld Daten.
Nächtes Bild ist das Gleiche wie Bild 2, nur herangezoomt und mit den 
Cursors versehen.
Das letzte Bild ist Masterclock, welches vom uC dem Codec generiert 
wird. Dieser beträgt ca. 12MHz.

Die Daten, die abgespielt werden sollen, ist eine einfache Sinuskurve, 
die im Timer Interrupt (passend zu sample frequenz) in den Register rein 
geschoben werden.

Nun zur I2C Konfiguration:
Ich habe das Datenblatt wirklich sehr oft gelesen und bin zum Ergebnis 
gekommen, dass diese Einstellung richtig ist:
1
CodecI2CM_Start(); 
2
Delayms (10);
3
Codec_SendData (0x1E, 0x00); // Reset
4
Delayms (1000);
5
Codec_SendData (0x04, 0x3F); //
6
Delayms (5);
7
Codec_SendData (0x06, 0x3F); //
8
Delayms (5);
9
Codec_SendData (0x0E, 0x02);
10
Delayms (5);
11
Codec_SendData (0x10, 0x18);
12
Delayms (5);
13
Codec_SendData (0x12, 0x01);

Geschickt werden diese jetzt so:
1
uint8 Codec_SendData(uint8 regAddr, uint8 data)
2
{
3
  uint8 temp;
4
  
5
  temp = CodecI2CM_I2CMasterSendStart(0x1A, 0x00); 
6
  if(temp == CodecI2CM_I2C_MSTR_NO_ERROR)
7
  {
8
    temp = CodecI2CM_I2CMasterWriteByte(regAddr); // (HI8(data) & 0x01
9
    
10
    if(temp == CodecI2CM_I2C_MSTR_NO_ERROR)
11
    {
12
      temp = CodecI2CM_I2CMasterWriteByte(data);
13
      
14
      if(temp == CodecI2CM_I2C_MSTR_NO_ERROR)
15
      {
16
        temp = CodecI2CM_I2CMasterSendStop();
17
      }
18
    }
19
  }
20

21
  return temp;
22
}

Datenblatt vom Codec:
https://www.google.de/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=0ahUKEwjA9Mb9vqXMAhWIDiwKHbfrCSIQFggdMAA&url=http%3A%2F%2Fwww.cs.columbia.edu%2F~sedwards%2Fclasses%2F2008%2F4840%2FWolfson-WM8731-audio-CODEC.pdf&usg=AFQjCNGmWZbgqNnAMErpVnzh4kOPdg2J_Q&sig2=0XkDRyGFcpa5WK9NELUWDw

Wäre gut, wenn Jemand einen Tipp geben könnte.
Der uC und die Plattform, wo ich den programmiere ist relativ egal, es 
geht hier ums funktionsprinzip von Codec und nicht "wie mache ich die 
und die Funktion bei meinem uC".
Sitze da schon über 2 Tage dran, und es kommt langsam die Wut auf  :(

Danke
Angehängte Dateien:

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.