Jak zacząć od płyty STM32F103C8T6?

10

Używam 8-bitowych jednostek MCU AVR do budowy robotów śledzących linię z uczniami od kilku lat. Teraz chciałbym przejść do ARM Cortex-M3, ponieważ chciałbym dodać kilka bardziej obciążających procesor funkcji, takich jak odometria i zespolenie czujnika.

Wymagania są następujące:

  • 8 wejść analogowych,
  • 4 wyjścia PWM,
  • I 2 C,
  • 2 wejścia enkodera kwadraturowego,
  • szeregowe I / O,
  • Samoprogramowanie bezprzewodowe bez fizycznego dostępu do robota.
  • Wieloplatformowy zestaw narzędzi + IDE (OS X, Linux, Windows).

Dotychczasowe kroki, które podjąłem to:

Używam tej płyty opartej na STM32F103C8. Uważam, że MCU ma wszystko, czego potrzebuję, w tym 2 x QEI, które planowałem zaimplementować w oprogramowaniu, ale zdarza się, że ma to w sprzęcie, więc świetnie:

Postępowałem zgodnie z tym, aby skonfigurować mój zestaw narzędzi + IDE:

Odkryłem, że dokumentacja tego układu jest rozproszona w wielu plikach PDF, które pobrałem:

Pobrałem również standardową bibliotekę urządzeń peryferyjnych STM32F10x, ale to z kolei poleciło mi zakup nowszej STM32CubeF1, która moim zdaniem jest tylko marketingową nazwą powyższej, więc otrzymałem oba:

Na koniec mam także „The Definitive Guide to ARM Cortex-M3” Josepha Yiu, który czytam, czekając na przybycie desek.

Moje pytania to:

  1. Jestem nieco przytłoczony dokumentacją, mówiąc co najmniej, i nawet nie jestem pewien, czy wszystko to zrozumiałem. Na przykład arkusz danych i podręcznik referencyjny stwierdzają, że układ ma 3 timery zdolne do wprowadzania danych zakodowanych w kwadraturze. Ale nie mogę znaleźć dokumentacji rejestrów kontrolujących liczniki w żadnym z powyższych plików PDF. czego mi brakuje?

  2. Czy powinienem używać (starszej?) Standardowej biblioteki urządzeń peryferyjnych, czy (nowszej?) Kostki? Co za różnica? Rozumiem, że obie biblioteki oszczędzają mi bezpośredniego manipulowania rejestrami i są zalecaną drogą. Czy mam rację?

  3. Gdzie jest dokumentacja bibliotek (oprócz osadzonych komentarzy doxygen, które są fajne i wszystkie, ale wolę mieć przeszukiwalny html / pdf)?

  4. Jako swój zestaw narzędzi wybrałem Eclipse + GCC ARM + OpenOCD, ponieważ uważam, że jest to jedyna opcja, która będzie działać w 3 głównych systemach operacyjnych bez rozmiaru kodu i innych ograniczeń. Czy są jeszcze jakieś opcje?

jamarju
źródło
2
Strona 324 podręcznika zawiera szczegółowe informacje na temat interfejsu enkodera używającego TIM1 i TIM8.
Leon Heller,
1
Czy mogę zasugerować Embedded Systems - Shape The World ARM-Cortex-M3, ale pochodzi z TI. Byłem także w stanie skonfigurować Eclipse + GCC ARM + OpenOCD dla Ubuntu, było to dość nużące i przynajmniej niezbyt niezawodne.
Mahendra Gunawardena,
1
Rozwiązania ARM-gcc są ogólnie dość stabilne i są najbardziej przenośną opcją na rynku. Nacisk kładzie się raczej na kompilacje oparte na Makefile lub automatyzacji kompilacji, więc integracja z istniejącymi praktykami rozwoju oprogramowania organizacyjnego jest doskonała. To, co IDE (jeśli w ogóle) do edycji i napędzania eksperymentalnych kompilacji, wydaje się być bardziej osobistą decyzją, i taka, która niekoniecznie wymaga tak dużego wysiłku w celu opracowania narzędzi. Osobiście ostatnią rzeczą, z którą chcę sobie poradzić, jest cel / łańcuch narzędzi, który zakłada, że ​​zmienię IDE tylko po to, aby z nim pracować.
Chris Stratton,

Odpowiedzi:

6
  1. Jeśli chodzi o arkusze danych, są one rzeczywiście podzielone. „Podręcznik referencyjny” to złożone opisy czynności, konfiguracji i szczegółowe uwagi na temat całego MCU. Z drugiej strony „Arkusz danych” to tylko krótki opis funkcji MCU, pinoutu, pakietów itp. Dla każdej linii STM32 (F1,2 ... 7) znajduje się również bardzo pomocny dokument „Pierwsze kroki w rozwoju oprogramowania MCU STM32F7xxxx” zapewnia wiele informacji, jeśli chcesz zaprojektować niestandardową tablicę. W porównaniu do AVR, opisy rejestrów są czasem nieco odsuwane od głównego opisu konkretnego rozdziału.

  2. STM32CubeMX nie jest biblioteką, tylko użytecznym programem od ST, który pozwala ustawić pinouty, jego konfiguracje, ustawić zegary systemowe itp., A następnie, na koniec, wygenerować kod i cały projekt. Projekt można wygenerować specjalnie dla Eclipse (System Workbench dla STM32), w którym właśnie importujesz ten projekt i jesteś gotowy do pracy. Nowa biblioteka to HAL („warstwa abstrakcji sprzętu”) i spróbuj z niej skorzystać. To nowa rzecz i czasami trudno jest znaleźć przykłady w Internecie, ale nie ucz swoich uczniów przestarzałych technologii. HAL jest wygodny w użyciu i ma dokumentację, więc myślę, że to lepszy wybór.

  3. Która biblioteka? Tak czy inaczej, myślę, że nie powinno być problemu z ich przeglądaniem w Google.

  4. Nawet jeśli chcesz używać tylko jednego systemu operacyjnego (takiego jak Windows), Eclipse (AC6 = System workbench dla STM32) jest - jak sądzę - najlepszą opcją. Istnieje na przykład uVision 5 Keila - ale to naprawdę okropne IDE - brakuje w nim większości funkcji, które IDE powinno oferować (refrakcja, klikanie i wyszukiwanie, prawidłowe sprawdzanie błędów, znajdowanie referencji i wiele, wiele innych). Podsumowując, Eclipse jest właściwie jedynym rozsądnym wyborem dla IDE dla STM32.

zupazt3
źródło
3
W rzeczywistości można użyć niemal dowolnego środowiska IDE, które może być sterowane zewnętrznym kompilatorem.
Chris Stratton,