Ve třetím díle si ukážeme použití snad nejpopulárnější sběrnice — USART, v Arduino světě je nazývána jako Serial. Mikrokontroléry STM32 mají zpravidla několik USART sběrnic a disponují také možností použít alternativní výstupy sběrnic.
Všechny díly seriálu o STM32duino:
STM32duino I. — Jak začít s STM32 jako Arduino
STM32duino II. — Ovládáme GPIO
STM32duino III. — Komunikujeme pomocí Serial (USART)
STM32duino IV. — Čteme teplotu a vlhkost z Si7021 (I2C sběrnice)
USART je jedna z nejpoužívanějších sběrnic ve světě mikrokontrolérů zejména díky své jednoduchosti a rozšířenosti. STM32 mikrokontroléry zpravidla obsahují více USART sběrnic — všechny lze využít, pokud nedojde ke kolizi zapojení. STM32 také umožňují „přepnout“ výchozí zapojení sběrnice na alternativní piny.
Které piny používají Serial1, Serial2…
Jaké fyzické rozhraní se skrývá pod názvem Serial1, Serial2… najdete v souboru HardwareSerial.cpp v nainstalovaném STM32duino balíčku. Pro STM32F411 si můžete prohlédnout mapování pinů přímo na GitHubu — bez nutnosti instalovat knihovnu.

Při použití výchozího pojmenování Serial se použije rozhraní USART2, pokud není definováno jinak. Najdete ho v souboru uart.h.

Alternativní zapojení pro jednotlivé USART sběrnice najdete v PeripheralPins.c.

Po nainstalovaní Arduino IDE s podporou STM32duino se objeví v záložce Tools další nastavení — Serial Interface.

Poznámka pro BluePill/BlackPill: piny se od Nuclea liší. BluePill má USART1 na PA9 (TX) / PA10 (RX) a USART2 na PA2 (TX) / PA3 (RX). Vždy ověřte pinout své konkrétní desky.
Výchozí Serial

Výchozí USART sběrnice Serial bývá u jiných vývojových kitů použita jak pro programování mikrokontroléru, tak i pro komunikaci s počítačem.
STM32 Nucleo-64 jsou programovány pomocí STLINK/V2-1 programátoru/debuggeru. Výchozí nastavení Nucleo-64 je takové, že výstup Serial je přímo přiveden do STLINK programátoru, který slouží zároveň jako USB-UART převodník.
Výstup sběrnice Serial tedy není fyzicky připojen k GPIO pinům D1/TX a D0/RX, ale je připojen do programátoru. Na toto spojení se můžete připojit pomocí konektoru CN3, který se nachází na desce s programátorem.
Pokud chcete mít připojenou sběrnici Serial na D1/TX a D0/RX, musíte pozměnit nastavení propojek na zadní straně Nucleo-64 desky. Zapájejte propojky SB62 a SB63 — tím fyzicky propojíte USART sběrnici s piny D0 a D1. Zároveň byste měli odpájet propojky SB13 a SB14, aby nedošlo ke kolizi se STLink programátorem.
Použití sběrnice Serial:
void setup() {
Serial.begin(9600); // 9600 baud — Serial Monitor musí být nastaven stejně
}
void loop() {
Serial.println("Hello World");
delay(1000);
}
Serial.begin(9600) nastaví přenosovou rychlost na 9600 bitů za sekundu. Serial Monitor v Arduino IDE musí být nastaven na stejnou hodnotu, jinak uvídíte místo textu jen znaky.
Příjem dat — echo příklad:
void setup() {
Serial.begin(9600);
}
void loop() {
if (Serial.available()) { // je něco přijato?
char c = Serial.read(); // přečti jeden znak
Serial.print("Prijato: ");
Serial.println(c); // pošli zpět
}
}
Serial1

Výchozí zapojení sběrnice Serial1: TX — PA9 (Arduino D8), RX — PA10 (Arduino D2).
Příklad použití s výchozím nastavením Serial1:
HardwareSerial Serial1(PA10, PA9); // (RX, TX)
void setup() {
Serial1.begin(9600);
}
void loop() {
Serial1.println("Hello World");
delay(1000);
}
Důležitým řádkem kódu je HardwareSerial Serial1(rx, tx);, kde nastavíte Rx a Tx piny a zároveň deklarujete Serial1.
Celý kód naleznete na GitHubu.
Příklad s využitím alternativního zapojení Serial1 (TX — PB6, RX — PB7, oba na Morpho konektorech):
HardwareSerial Serial1(PB7, PB6); // (RX, TX) — alternativní piny
void setup() {
Serial1.begin(9600);
}
void loop() {
Serial1.println("Hello World");
delay(1000);
}
Celý kód naleznete na GitHubu.
Serial6

Používáte-li mikrokontrolér s více fyzickými USART, můžete využít i je. Například Serial6 s výchozím zapojením TX — PA11, RX — PA12.
Příklad použití s výchozím nastavením Serial6:
HardwareSerial Serial6(PA12, PA11); // (RX, TX)
void setup() {
Serial6.begin(9600);
}
void loop() {
Serial6.println("Hello World");
delay(1000);
}
Celý kód naleznete na GitHubu.
Příklad s využitím alternativního zapojení Serial6 (TX — PC6, RX — PC7):
HardwareSerial Serial6(PC7, PC6); // (RX, TX) — alternativní piny
void setup() {
Serial6.begin(9600);
}
void loop() {
Serial6.println("Hello World");
delay(1000);
}
Celý kód naleznete na GitHubu.
A to je v tomto díle o STM32duino vše. Pokud se vám díl líbil, budu rád, když jej budete sdílet s hashtagem #STM32duino.







Žádné sociální komentáře k dispozici.