STM32F4 I2C Address Timeout

1

Tengo aquí un problema con una configuración de bus I2C, que se ejecuta en un tiempo de espera después de un tiempo determinado. El esclavo I2C es un sensor de presión fujikura ap4 / ag4 y el maestro a STM32F4. Leí continuamente la presión y después de alrededor de 5-10 minutos, se produce un error de tiempo de espera y el HAL_I2C_Master_Receive siempre devuelve un error de tiempo de espera después de eso. El error ocurre en el stm32f4xx_hal_i2c.c porque la siguiente rutina cae en un HAL_TIMEOUT

   /* Wait until ADDR flag is set */
  if(I2C_WaitOnMasterAddressFlagUntilTimeout(hi2c, I2C_FLAG_ADDR, Timeout, Tickstart) != HAL_OK)
  {
    if(hi2c->ErrorCode == HAL_I2C_ERROR_AF)
    {
      return HAL_ERROR;
    }
    else
    {
      return HAL_TIMEOUT;
    }
  }

Editar: Lo que noté es que el I2C3- > CR1- > STOP se establece antes de la llamada HAL_I2C_Master_Receive cuando devuelve un error. Cuando borro este indicador varias veces mientras se realiza la depuración, el I2C se recupera y se ejecuta nuevamente, hasta que se produce el siguiente error.

    
pregunta Hans

0 respuestas

Lea otras preguntas en las etiquetas