cancel
Showing results for 
Search instead for 
Did you mean: 

STM32F0 I2C HAL Communication with diffrent data frame lengths

Adrian Pakosinski
Associate
Posted on October 25, 2017 at 14:13

Hi,

I try to implement I2C slave communication based on HAL Library (STM32F070) with another MCU. All functions that interest me include as argument 

uint16_t Size parameter, for example:

HAL_StatusTypeDef HAL_I2C_Slave_Transmit_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size);

HAL_StatusTypeDef HAL_I2C_Slave_Receive_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size);

When I set the maximum buffer size in parameter uint16_t Size, the library stuck in:

  /* All data are not transferred, so set error code accordingly */

  if(hi2c->XferCount != 0U)

  {

    /* Set ErrorCode corresponding to a Non-Acknowledge */

    hi2c->ErrorCode |= HAL_I2C_ERROR_AF;

  }

So if I receive less data the HAL Library return HAL_I2C_ERROR_AF. It looks like the library functions work only for communication with fixed data frame lengths.

It is possible to use HAL libraries when data frame length may vary?

Thanks, Adrian

0 REPLIES 0