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?