I2S Framesynchronisation

OP #4798909
Lesenswert?

Hallo,
ich möchte mit einem STM32f4-Discovery Board ein I2S Signal erzeugen.
Mein STM ist als Slave konfiguriert. Ich bekomme von einem anderen Modul 
die SCLK und das WS Signal. Nur leider klappt die Synchronisation nicht. 
Jedes mal wenn ich das Board neu starte ist der Versatz von WS und 
Signal unterschiedlich (siehe Bilder im Anhang).
Das Signal wird mit Hilfe eines Interrupts erzeugt, sobald die 
SPI_I2S_IT_TXE Flag gesetzt ist.

I2S konfigurieren (STM-Board):
1
  I2S_InitType.I2S_AudioFreq = I2S_AudioFreq_8k;
2
  I2S_InitType.I2S_MCLKOutput = I2S_MCLKOutput_Disable;
3
  I2S_InitType.I2S_DataFormat = I2S_DataFormat_16b;
4
  I2S_InitType.I2S_Mode = I2S_Mode_SlaveTx;
5
  I2S_InitType.I2S_Standard = I2S_Standard_Phillips;
6
  I2S_InitType.I2S_CPOL = I2S_CPOL_Low;

239 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)  
5
  {
6
    SPI_I2S_SendData(SPI3, 1+2+4+8+32+64+128);
7
  }
8
}

Hat jemand eine Idee was man dagegen tun kann? Der WS Pin scheint 
ignoriert zu werden. Im Master Mode ist nichts mehr verschoben. Ich 
möchte es aber im Slave Mode zum laufen kriegen.

Grüße,

Tom
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren