leech001 / MPU6050

STM32 HAL library for GY-521 (MPU6050) with Kalman filter
GNU General Public License v3.0
338 stars 82 forks source link

MPU6050_Init не происходит #8

Closed SeyranGrig closed 1 year ago

SeyranGrig commented 2 years ago

Добрый день, возникла проблема с вашей реализацией. Есть плата с STM32F103 и MPU6050 на борту. И есть 3 прошивки с моими реализациями, одна просто читает данные с MPU6050 , вторая с реализацией фильтра Мажвика и третья с реализацией фильтра Махони. Все три прошивки работают, причем как если настроить I2C на Standart Mode, так и на Fast Mode. Но в вашей реализации не работает MPU6050_Init, то есть не приходит ответ 0х68, при чем реализация метода не сильно отличается от моей реализации, как думаете, в чем может быть проблема ?

leech001 commented 2 years ago

Попробуйте изменить функцию работы с i2c. На F1 серии наблюдаются ошибки при работе с данным протоколом.

void HAL_I2C_MspInit(I2C_HandleTypeDef* i2cHandle)
{

  GPIO_InitTypeDef GPIO_InitStruct = {0};
  if(i2cHandle->Instance==I2C2)
  {
  /* USER CODE BEGIN I2C2_MspInit 0 */
   __HAL_RCC_I2C2_CLK_ENABLE();  // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<  add manualy
  /* USER CODE END I2C2_MspInit 0 */

    __HAL_RCC_GPIOB_CLK_ENABLE();
    /**I2C2 GPIO Configuration    
    PB10     ------> I2C2_SCL
    PB11     ------> I2C2_SDA 
    */
    GPIO_InitStruct.Pin = GPIO_PIN_10|GPIO_PIN_11;
    GPIO_InitStruct.Mode = GPIO_MODE_AF_OD;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
    HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

    /* I2C2 clock enable */
    __HAL_RCC_I2C2_CLK_ENABLE();
  /* USER CODE BEGIN I2C2_MspInit 1 */

  /* USER CODE END I2C2_MspInit 1 */
  }
}