AnsweredAssumed Answered

STM32F103C8 I2C DMA transfer complete callback

Question asked by Alexey Zhukov on Dec 29, 2017

I'm trying to write a code to send data with I2C using DMA. While looking for appropriate "Transmit complete" event I've dig into STM32Cube_FW_F1_V1.6.0 sources, to be specific into stm32f1xx_hal_i2c.c's HAL_I2C_Master_Transmit_DMA function. This function contains such a code (line 2012):
/* Set the I2C DMA transfer complete callback */
hi2c->hdmatx->XferCpltCallback = I2C_DMAXferCplt;

 

And that XferCpltCallback called from HAL_DMA_IRQHandler. But what's I2C_DMAXferCplt for? It is in the same stm32f1xx_hal_i2c.c file and contains (line 5228) such a call:
HAL_I2C_MasterRxCpltCallback(hi2c);

 

So, "Transmit" function calls "Rx" callback only and completely misses more suitable "Tx". Isn't that strange and may be that's a bug? Or I've missed something here?

Outcomes