[PRZYKŁAD] STM32 NUCLEO-L476RG i KA-Nucleo-UniExp

Podczas programowania mikrokontrolera wykorzystałem system STM32Cube do konfiguracji peryferiów. W projekcie wykorzystane zostaną: przetwornik analogowo-cyfrowy do odczytu danych z czujnika temperatury, magistrala I2C do komunikacji z akcelerometrem oraz port szeregowy UART do sterowania modułem Bluetooth. Potrzebuję również ustawić pin PA0 jako wyjście cyfrowe – za pomocą tej linii będę wprowadzał moduł HC-05 w tryb komend AT.

 Szczegółowy opis narzędzia CubeMX znajduje się w artykule:

STM32Cube graficzny konfigurator STM32

Po zainicjowaniu nowego projektu w programie STM32Cube należy odnaleźć płytkę NUCLEO-L476RG. Po dwukrotnym kliknięciu na nazwę płytki otworzy się okno, w którym można skonfigurować peryferia mikrokontrolera.

W zakładce Pinout należy oznaczyć wszystkie linie mikrokontrolera, z których będzie korzystał projekt. Intuicyjny schemat wyprowadzeń nakładki znajduje się w dokumentacji. Poniżej w tabeli opisałem, których pinów użyłem oraz jaka jest ich funkcja.

Pin STM32L476RG
Funkcja w projekcie
PA9 USART1_TX
PA10 USART1_RX
PA0 HC05 – pin KEY (GPIO_Output)
PB8 I2C1_SCL
PB9 I2C1_SDA
PA4 Sygnał Termometru (ADC1_IN9)

Następnie należy włączyć odpowiednie peryferia w pasku po lewej stronie obrazka mikrokontrolera. W liście ADC1 należy ustawić kanał 9 jako IN9 Single-ended. Magistralę I2C1 jako I2C. Na poniższym rysunku zaznaczono odpowiednie opcje.

Rys.3. STM32Cube – konfiguracja pinoutu mikrokontrolera(1)

Oprócz tego, należy także włączyć port szeregowy USART1 w trybie Asynchronous. Przedstawiono to na poniższym rysunku.

Rys. 4. STM32Cube – konfiguracja pinoutu mikrokontrolera (2)

W zakładce Configuration można dokonać konfiguracji poszczególnych peryferiów. Zacznę od przetwornika ADC. W tym oknie ustawiłem: Clock Prescaler na Asynchronous Clock Mode divided by 8, Resolution na ADC 12-bit resolution oraz w sekcji ADC_Regular_ConversionModeSampling Time na 12.5 Cycles. Takie ustawienia pozwalają na dobrą precyzję pomiaru.

Rys. 5. STM32Cube – konfiguracja przetwornika ADC

W oknie USART1 należy ustawić szybkość transmisji na 38400 a długość słowa na 8 bits (including Parity). W zakładce NVIC Settings należy włączyć przerwania od portu szeregowego (USART1 Global interrupt).

Rys. 6. STM32Cube – konfiguracja portu szeregowego (UART)

W oknie GPIO warto ustawić etykietę pinu HC-05. Ja wybrałem nazwę BT_KEY. Należy też ustawić początkowy stan pinu na wysoki. Spowoduje to, że uruchamiając projekt, moduł HC05 od razu wejdzie w stan wprowadzania komend AT, co umożliwi jego konfigurację.

Rys. 7. STM32Cube – konfiguracja GPIO

 

Do pobrania

O autorze