cancel
Showing results for 
Search instead for 
Did you mean: 

HAL_I2S_TxCpltCallback is called only once

eunoia
Associate

I'm testing whether HAL_I2S_TxCpltCallback or HAL_I2S_TxHalfCpltCallback is called properly by setting i2s to normal and periodically calling HAL_I2S_Transmit_DMA. However, HAL_I2S_TxCpltCallback or HAL_I2S_TxHalfCpltCallback is called only once and not again. I want to use i2s in normal mode, not circular mode, so I'm testing like below. Is there something wrong?

When I check the return value with status = HAL_I2S_Transmit_DMA(&hi2s2, audioBuffer, AUDIO_BUFFER_SIZE);, HAL_BUSY(2) is returned.

 

while (1)
{
	HAL_I2S_Transmit_DMA(&hi2s2, audioBuffer, AUDIO_BUFFER_SIZE);
	HAL_Delay(1000);
}

void HAL_I2S_TxCpltCallback(I2S_HandleTypeDef *hi2s)
{
	dma_count++;

}

void HAL_I2S_TxHalfCpltCallback(I2S_HandleTypeDef *hi2s)
{
	dma_count++;
}

 

0 REPLIES 0