Interfejs I2C – praca z modułem IMU – MPU6050 (dokumentacja techniczna, mapa rejestrów)

1. Przygotowanie projektu
  1. utworzenie projektu: STM32 Project
  2. wybranie procesora: STM32F411RE
  3. w zakładce Project Manager/Code Generator i aktywujemy opcję „Generate peripheral initialization….”
  4. konfigurowanie wyprowadzeń:
    1. SYS/Debug -> Serial Wire (SWD)
    2. PA5 – jako wyjście o nazwie „LED”
    3. PC13 – jako wejście (pull-up) o nazwie „BUTTON”
  5. konfigurowanie modułu komunikacji I2C:
    1. Connectivity/I2C1 i wybrać z listy I2C
    2. przenieść I2C1_SDA na pin  PB9 (przyciskamy „ctrl” klikamy myszką na pin i przenosimy)
    3. przenieść I2C1_SCL na pin PB8
  6. konfigurowanie modułu UART – terminal PC
    1. Connectivity/ USART2 wybrać mode: Asynchronous, ustawić prędkość komunikacji na 9600 (Baud Rate)
  7. generujemy projekt
Konfiguracja STM z UART i I2C

 

2. Podłączenie modułu MPU-6050
  1. podłączyć przewodami zgodnie z tabelką:
Opis

Płytka NUCLEO

Moduł MPU-6050

Zasilanie +5V

CN6-5V

VCC

Zasilanie GND

CN6-GND

GND

komunikacja I2C - SDA
PB8
SCL

komunikacja I2C - SCL

PB9

SDA

3.Obsługa I2C – odczyt rejestru
  1. do obsługi modułu podłączone po interfejsie I2C potrzebujemy znać jego adres (dokumentacja techniczna – 9.2). Moduł posiada AD0 podpięte do GND.
  2. uruchomić funkcję readAndShow() – co robi ta funkcja, jaka wartość powinna być w rejestrze „Who Am I” mapy rejestrów?
  3. „<<—-” – komentarze tak oznaczone należy uzupełnić odpowiednimi wartościami

 

4.Obsługa I2C zapisanie do rejestru – odczyt temperatury
  1. uruchomić funkcję readTemp() – co robi ta funkcja?
  2. domyślnie funkcja sprint nie potrafi wyświetlać liczb typu float, należy skonfigurować kompilator według instrukcji na stronie „Zestaw STM32”

5. Poziomnica
  1. Dołączyć bibliotekę „math.h” (#include „math.h”)
  2. uruchomić funkcję poziomnica() – co robi ta funkcja?

 

6.Pytania dodatkowe:
  1. uint8_t adresMPU6050=0x68<<1; //Adres modulu MPU6050 – dlaczego jest przesunięcie bitowe (0x68<<1)
  2. dlaczego odczyty poziomu jak płytka leży na nożkach są na poziomie 180 stopni?