AnsweredAssumed Answered

STM32CubeF1 I2C DMA Driver Questions

Question asked by leach.clark on Jan 8, 2016
Latest reply on Jan 11, 2016 by leach.clark
I am attempting to port the "I2C_TwoBoards_ComDMA" example project to run on a different target board (ZMDI ZWIR451x Development Board) using Rowley CrossStudio as an IDE.  This target has an STM32F103RC micro.

After getting all the right files included and configured (I think) so that the project will build and execute, I discover that the "non-blocking"  function 'HAL_I2C_Slave_Receive_DMA(...)' contains two calls to 'I2C_WaitOnFlagUntilTimeout(...)' the second one causes the slave node to timeout and go into 'error mode' before the master can even start transmitting.  Also, the comment states "/* Wait until ADDR flag is set */", yet the function arguments say otherwise: "(hi2c, I2C_FLAG_ADDR, RESET, I2C_TIMEOUT_ADDR_SLAVE) != HAL_OK)"

Can anyone explain this logic?  Does "non-blocking" mean something different in this version of reality?

Outcomes