Forum: Mikrocontroller und Digitale Elektronik I2S Framesynchronisation


von Tom P. (tom_p89)


Angehängte Dateien:

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

: Bearbeitet durch User
von Jürgen S. (engineer) Benutzerseite


Lesenswert?

Wie kommt das denn rein? Beides über denselben HW-Port und im Interrupt 
mit nur einem Wortsample hoffe ich mal.(?)
So wird das nämlich nix, weil das frame-Signal um 2 Takte falsch zu sein 
scheint.

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.