[STM32] Czemu I2C nie działa? Czyli STM32f103, I2C i flaga BUSY

Próbując uruchomić czujnik BMP280 natknąłem się na problem z komunikacją po I2C w mikroprocesorze stm32f103, mianowicie funkcja odczytu/zapisu zwracały HAL_BUSY. Jak się okazało to ogólnie znany problem z inicjalizacją I2C w tej rodzinie procesorów stm32. Najprostszym rozwiązaniem aby flaga BUSY nie pojawiała się po inicjalizacji I2C jest jej zresetowanie przed wpisaniem ustawień do rejestru:

Jeśli inicjalizację peryferiów generujemy w CubeMX musimy zmodyfikować plik stm32f1xx_hal_i2c.c tak jak na obrazku poniżej:

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *