Hi, ich bin gerade an einem Projekt mit dem STM32L4 und SAI zu gange. An einer Stelle komme ich nicht weiter - Wenn ich SAI mit DMA nutzen möchte ist der Puffer im leer "000". Die Project HW ist ein custom board mit einem WM8904 Codec der via I2S (SAI) angesprochen wird. Der STM32 ist hier der Clock Master. Die WM8904 Config und auch die SAI Config scheinen in soweit in Ordnung zu sein das ich mit dieser Schleife Daten lesen und schreiben kann. In dem Fall sogar hören ;). # define BLOCK_SAMPLES 64 static uint8_t txbuf[BLOCK_SAMPLES*4]; static uint8_t rxbuf[BLOCK_SAMPLES*4]; while(1) { stat = HAL_SAI_Receive(&hsai_BlockB1, (uint8_t*) txbuf, sizeof(txbuf) / 2,10); stat = HAL_SAI_Transmit(&hsai_BlockA1, (uint8_t*) txbuf, sizeof(txbuf) / 2,10); } Soweit so schön. Wenn ich dann aber auf DMA umbaue: if (HAL_OK != HAL_SAI_Receive_DMA(&hsai_BlockB1, (uint8_t*) rxbuf, sizeof(rxbuf) / 2)) { DebugLog("HAL_SAI_Receive_DMA fail 1\r\n"); Error_Handler(); } if (HAL_OK != HAL_SAI_Transmit_DMA(&hsai_BlockA1, (uint8_t*) txbuf, sizeof(txbuf) / 2)) { DebugLog("HAL_SAI_Transmit_DMA fail 1\r\n"); Error_Handler(); } Und wenn ich einen Breakpoint in: void HAL_SAI_RxCpltCallback (SAI_HandleTypeDef * hi2s) { UpdatePointer2 = 50; } void HAL_SAI_RxHalfCpltCallback (SAI_HandleTypeDef * hi2s) { UpdatePointer2 = 0; } setze ... wird dieser zwar ausgelöst Jedoch sind rxbuf und txbuf leer. Habt ihr eine Idee ? Welche Details werden noch benötigt ? Grüße, M
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.