Skocz do zawartości

STM32F103C8Tx - komunikacja i2c jako slave


WowaTatain

Pomocna odpowiedź

Dzień dobry,

Ostatnio zabrałem się za próbę budowy czegoś ambitnego, nie wiem, czy nie za bardzo, ale jednak lubię się uczyć na istniejących projektach.

Mianowicie zabrałem się za tytułowy STM, który miałby pracować jako slave wobec RPI, przez I2C. O ile komunikacje raspberry okazała się nawet prosta i połączyłem się z akcelerometrem, ba połączyłem się z STM i odczytywałem z niego dane. Oczywiście był to projekt z internetu, który wysyłał dane z ADC: https://github.com/avislab/STM32F103/tree/master/Example_I2C_Slave

I o ile program działał, to jakakolwiek jego kompilacja już nie. Nie wiem, czy autor zmienił którąś bibliotekę, ale oryginalny projekt nie daje cię skompilować(nawet przy próbie rozwiązywaniu problemów, które pojawiają się w eclipse), a wrzucenie do eclipse, to istniejącego projektu plików main, oraz własnej biblioteki autora daje się skompilować, ale kiedy tylko pojawi się stan niski na wejściu magistrali, kontroler się zatrzymuje i utrzymuje owy stan niski na SDA do restartu (nawet gdy odłączam raspberry). Jeżeli ustawię

I2C_InitStructure.I2C_Ack = I2C_Ack_Disable;

to wtedy kontroler nie zatrzymuje się, ale jednocześnie nadal nie odpowiada. W zasadzie bardzo zależy mi na tej komunikacji I2C, ale nie wiem, czy ja robię coś źle, czy błąd siedzi  po stronie kompilatora. Próbowałem się dowiedzieć kiedy program się zatrzymuje, wstawiając linijkę kody, który zaświecałby diodę, ale błąd powstaje chyba jeszcze zanim włączy się przewianie, lub na jego uruchomieniu, a zatrzymanie się kontrolera obserwowałem migającą diodą w nieskończonej pętli.

W zasadzie nie wiem jak rozwiązać problem, więc zwracam się do Was. Próbowałem również projekt https://github.com/amitesh-singh/i2c-slave-stm32f1/blob/master/main.cpp, ale z identycznym efektem.

Link do komentarza
Share on other sites

Sądząc po rozszerzeniach plików projektu (xcodeproj, pbxproj), to był projekt na XCode na Maca. Najprawdopodobniej w ustawieniach projektu były dodane jakieś specjalne definy, flagi kompilacji itp, które powodują, że twoja kompilacja się różni. Możesz spróbować odszukać ustawień z plików projektu - są w xmlu, więc powinieneś być w stanie znaleźć odpowiednie pola. Tylko może to wymagać trochę wiedzy i doświadczenia.

  • Lubię! 1
Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.