Forum: Mikrocontroller und Digitale Elektronik I2S Bitfehler - gelöst


von Tom P. (tom_p89)


Angehängte Dateien:

Lesenswert?

Hallo,
ich möchte mit einem STM32F401C-Disco Board einen I2S Audiostream 
erzeugen. Allerdings gibt es beim Output (TX) einen Bitfehler. Der 
Audiostream ist um ein Bit Verschoben (siehe Abbildung). Ich habe 
versucht eine 1 zu senden (uint16_t) und bekomme am Output eine 32768. 
Ich nutze die Coocox IDE und die darin zur Verfügung gestellten 
Funktionen für die I2S Schnittstelle.
1
   // configure I2S port
2
  SPI_I2S_DeInit(CODEC_I2S);
3
  I2S_InitType.I2S_AudioFreq = I2S_AudioFreq_8k;
4
  I2S_InitType.I2S_MCLKOutput = I2S_MCLKOutput_Enable;
5
  I2S_InitType.I2S_DataFormat = I2S_DataFormat_16b;
6
  I2S_InitType.I2S_Mode = I2S_Mode_MasterTx;
7
  I2S_InitType.I2S_Standard = I2S_Standard_Phillips;
8
  I2S_InitType.I2S_CPOL = I2S_CPOL_Low;
9
10
  I2S_Init(SPI3, &I2S_InitType);

Senden mit Interrupt:
1
void SPI3_IRQHandler(void)
2
{
3
  /* Check the interrupt source */
4
  if (SPI_I2S_GetITStatus(SPI3, SPI_I2S_IT_TXE) == SET)  //SPI_I2S_IT_TXE
5
  {
6
       SPI_I2S_SendData(SPI3, 1);
7
  }
8
}

Hat jemand eine Idee wo dieser Fehler her kommt und wie man ihn beheben 
kann?

Vielen Dank!

Tom

von Mw E. (Firma: fritzler-avr.de) (fritzler)


Lesenswert?

Das ist völlig korrekt:
https://de.wikipedia.org/wiki/I%C2%B2S

LRCK eilt 1Bit vor.

von Jobst M. (jobstens-de)


Lesenswert?

Tom P. schrieb:
> Der Audiostream ist um ein Bit Verschoben (siehe Abbildung).

Wenn Du I²S haben möchtest, willst Du genau das.


Gruß

Jobst

von Tom P. (tom_p89)


Lesenswert?

Vielen Dank!
Ich war mir einfach zu sicher, dass der Frame nach der steigenden Flanke 
beginnt.

Grüße,

Tom

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.