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:
- Zarząd http://eud.dx.com/product/high-quality-cortex-m3-stm32-stm32f103c8t6-development-board-w-swd-interface-844380789
- Programista http://eud.dx.com/product/st-link-v2-programmer-emulator-mini-stlink-downloader-for-stm8-stm32-mcu-development-board-844380733
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:
- Arkusz danych STM32F103x8 http://www.st.com/st-web-ui/static/active/en/resource/technical/document/datasheet/CD00161566.pdf
- Podręcznik referencyjny http://www.st.com/st-web-ui/static/active/en/resource/technical/document/reference_manual/CD00171190.pdf
- Kilka innych dokumentów, takich jak AN2606 (tryby uruchamiania pamięci), PM0075 (instrukcja programowania flash) i AN3155 (protokół szeregowego bootloadera), które prawdopodobnie będą potrzebne w przyszłości.
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:
- http://www.st.com/web/catalog/tools/FM147/CL1794/SC961/SS1743/LN1939/PF257890
- http://www.st.com/web/en/catalog/tools/PF260820
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:
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?
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ę?
Gdzie jest dokumentacja bibliotek (oprócz osadzonych komentarzy doxygen, które są fajne i wszystkie, ale wolę mieć przeszukiwalny html / pdf)?
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?
źródło
Odpowiedzi:
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.
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.
Która biblioteka? Tak czy inaczej, myślę, że nie powinno być problemu z ich przeglądaniem w Google.
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.
źródło