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