[PRZYKŁAD] KAmodMMA7361LC – akcelerometr analogowy i KA-NUCLEO-F411CE
Po zmontowaniu układu można przejść do zaprogramowania mikrokontrolera STM32. Do tego celu użyto programu STM32Cube do konfiguracji oraz środowiska programistycznego System Workbench for STM32.
Szczegółowy opis narzędzia CubeMX znajduje się w artykule:
STM32Cube graficzny konfigurator STM32
Po utworzeniu projektu i wybraniu mikrokontrolera STM32F411CEUx można przejść do deklaracji pinów używanych w projekcie.
Rys.4. STM32Cube – zakładka Pinout
W zakładce ADC1 należy zaznaczyć opcje IN5, IN6, IN7 włączając kanały 5, 6 i 7 przetwornika analogowo-cyfrowego. W zakładce RCC należy oznaczyć źródło zegara mikrokontrolera – zewnętrzny rezonator kwarcowy HSE. W tym celu opcję High Speed Clock (HSE) ustawiamy jako Crystal/Ceramic Resonator. Następnie należy ustawić piny używane do sterowania wyświetlaczem jako GPIO_Output. Poniżej znajduje się tabela łącznie z nazwami, jakie należy nadać pinom w programie (później z tych nazw będzie korzystać biblioteka do obsługi ekranu).
Pin KA-NUCLEO-F411CE | Pin mikrokontrolera STM32F411CE | Etykieta |
D4 | PB5 | LED_D4 |
D5 | PB4 | LED_D5 |
D6 | PB10 | LED_D6 |
D7 | PA8 | LED_D7 |
D8 | PA9 | LED_RS |
D9 | PB7 | LED_EN |
Ponadto pin, do którego podłączony jest przycisk obecny na płytce KA-NUCLEO należy skonfigurować jako GPIO_Input. Przyciskowi nadałem etykietę „Przycisk” (rysunek 4).
Rys. 5. STM32Cube – zakładka Clock Configuration
W kolejnym ekranie należy ustawić konfigurację zegarów mikrokontrolera. Warto ustawić oscylator zewnętrzny jako źródło pętli. Należy podać częstotliwość oscylacji w polu Input Frequency – 8 MHz. Jako PLL Source Mux oznaczyć HSE. Po prawej stronie w pole ABP1 Timer Clocks można wpisać np. 100 MHz, co powinno automatyczne ustawić wszystkie wymagane dzielniki w torze na odpowiednie wartości (rysunek 5).
Rys. 6. STM32Cube – konfiguracja GPIO
W zakładce Configuration klikamy przycisk GPIO. Jeśli jeszcze nie nadano etykiet pinom odpowiedzialnym za obsługę wyświetlacza – można zrobić to teraz. Zalecam też ustawić dla tych pinów opcję Maximum output speed na High (rysunek 6).
Rys.7. STM32Cube – konfiguracja ADC DMA
Po naciśnięciu przycisku ADC1 można dokonać konfiguracji przetwornika analogowo-cyfrowego. W przykładzie dane z przetwornika będą przekazywane bezpośrednio do pamięci, a więc z wykorzystaniem DMA. Na samym początku w zakładce DMA Settings należy ustawić transmisję z przetwornika ADC, oraz Stream jako DMA2 Stream 4. Poniżej można ustawić Mode na Circular.
Rys.8. STM32Cube – konfiguracja parametrów ADC
W zakładce Parameter Settings należy włączyć opcje: Scan Conversion Mode, Continuous Conversion Mode oraz DMA Continuous Request. Number of Conversions należy ustawić na 3 – DMA będzie przesyłać 3 próbki z ADC. Warto ustawić w każdym kolejnym Rank inny kanał ADC, który jest przesyłany – tak aby na 3 próbki wysyłane każda pochodziła z innej osi akcelerometru.