MPU6050_Init не происходит
SeyranGrig opened this issue · 1 comments
SeyranGrig commented
Добрый день, возникла проблема с вашей реализацией. Есть плата с STM32F103 и MPU6050 на борту. И есть 3 прошивки с моими реализациями, одна просто читает данные с MPU6050 , вторая с реализацией фильтра Мажвика и третья с реализацией фильтра Махони. Все три прошивки работают, причем как если настроить I2C на Standart Mode, так и на Fast Mode. Но в вашей реализации не работает MPU6050_Init, то есть не приходит ответ 0х68, при чем реализация метода не сильно отличается от моей реализации, как думаете, в чем может быть проблема ?
leech001 commented
Попробуйте изменить функцию работы с 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 */
}
}