Vybráno pro vás
 
Hiearchie článků
 
STM32duino III. - Komunikujeme pomocí Serial (USART)
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)


Sběrnice USART je jedna z nejpoužívanější sběrnic ve světě mikrokontrolérů zejména díky své jednoduchosti a rozšířenosti.

Jak jsem zmínil výše, mikrokontroléry STM32 zpravidla obsahují více USART (Serial) sběrnic. Využít můžete všechny, pokud nedojde ke kolizi zapojení. STM32 disponují možností "přepnout" výchozí zapojení sběrnice na alternativní, tzn. Rx a Tx USART sběrnice 1 bude na jiných GPIO. Tyto alternativní volby mohou být dvě a více.
K tomu se nám budou hodit informace z tohoto dokumentu.

--------------------


Serialy a USARTy
Jaké fyzické rozhraní se skrývá pod názvem Serial1, Serial2, ... najdete níže
V souboru "HardwareSerial.cpp".


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í, které je možné využít pro jednotlivé USART sběrnice jsou:
Najdete v "PeripheralPins.c".


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



--------------------




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. Přijatá data můžete zobrazit pomocí Serial monitoru (nebo jiného programu).
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, kde zmíněný programátor slouží zároveň jako USB-UART převodník.

Výstup sběrnice Serial tedy není fyzicky připojen k GPIO (D1/TX a D0/RX), ale je připojen do programátoru. Na toto spojení (mezi STM32 a STLINK) se můžete připojit pomocí konekteru 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 s názve SB62 a SB63. Tím fyzicky propojíte USART sběrnici (Serial) s piny označenými jako D0 a D1.
Zároveň byste měli odpájet propojení s STLINK programátorem - propojky SB13 a SB14, aby nedošlo k nějaké kolizi na sběrnici.

Použití sběrnice Serial je následující.

// the setup function runs once when you press reset or power the board
void setup()
{
// initialize Serial:
Serial.begin(9600);
}

// the loop function runs over and over again forever
void loop()
{
// send "Hello World" message through Serial
Serial.println("Hello World");
// wait one second
delay(1000);
}


Celý kód je zde.

--------------------




Serial1
Výchozí zapojení sběrnice je TX - PA9 ( Arduino D8) a RX - PA10 (Arduino D2).

Příklad použití s výchozím nastavením Serial1.

// set RX and TX pins
HardwareSerial Serial1(PA10, PA9);

// the setup function runs once when you press reset or power the board
void setup()
{
// initialize Serial1:
Serial1.begin(9600);
}

// the loop function runs over and over again forever
void loop()
{
// send "Hello World" message through Serial1
Serial1.println("Hello World");
// wait one second
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 zde.

Příklad s využitím alternativního zapojení Serial1 (TX - PB6, RX - PB7, oba na Morpho konektorech).

// set RX and TX pins
HardwareSerial Serial1(PB7, PB6);

// the setup function runs once when you press reset or power the board
void setup()
{
Serial1.begin(9600); // initialize Serial1
}

// the loop function runs over and over again forever
void loop()
{
// send "Hello World" message through alternative pins of Serial1
Serial1.println("Hello World");
// wait one second
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 zde.

--------------------




Serial6

Používáte-li mikrokontrolér s více fyzickými USART, můžete využít i je. Například Serial6.

Příklad použití s výchozím nastavením Serial6.

// set RX and TX pins
HardwareSerial Serial6(PA12, PA11);

// the setup function runs once when you press reset or power the board
void setup()
{
Serial6.begin(9600); // initialize Serial6
}

// the loop function runs over and over again forever
void loop()
{
// send "Hello World" message through of Serial6
Serial6.println("Hello World");
// wait one second
delay(1000);
}


Důležitým řádkem kódu je HardwareSerial Serial6(rx, tx);, kde nastavíte Rx a Tx piny a zároveň deklarujete Serial6.

Celý kód naleznete zde.

Příklad s využitím alternativního zapojení Serial6 (TX - PC6, RX - PC7).

// set RX and TX pins
HardwareSerial Serial6(PC7, PC6);

// the setup function runs once when you press reset or power the board
void setup()
{
Serial6.begin(9600); // initialize Serial6
}

// the loop function runs over and over again forever
void loop()
{
// send "Hello World" message through alternative pins of Serial6
Serial6.println("Hello World");
// wait one second
delay(1000);
}


Důležitým řádkem kódu je HardwareSerial Serial6(rx, tx);, kde nastavíte Rx a Tx piny a zároveň deklarujete Serial6.

Celý kód naleznete zde.


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 hastagem #STM32duino.
Upozornění
Administrátor těchto stránek ani autor článků neručí za správnost a funkčnost zde uvedených materiálů.
Administrátor těchto stránek se zříká jakékoli odpovědnosti za případné ublížení na zdraví či poškození nebo zničení majetku v důsledku elektrického proudu, chybnosti schémat nebo i teoretické výuky. Je zakázané používat zařízení, která jsou v rozporu s právními předpisy ČR či EU.
Předkládané informace a zapojení jsou zveřejněny bez ohledu na případné patenty třetích osob. Nároky na odškodnění na základě změn, chyb nebo vynechání jsou zásadně vyloučeny. Všechny registrované nebo jiné obchodní známky zde použité jsou majetkem jejich vlastníků. Uvedením nejsou zpochybněna z toho vyplývající vlastnická práva.
Nezodpovídáme za pravost předkládaných materiálů třetími osobami a jejich původ.