Comunicazione Seriale via porta USB con la scheda NucleoF401RE

Comunicazione Seriale via porta USB

  CC BY-SA 4.0 https://creativecommons.org/licenses/by-sa/4.0/

 

Workspace: Getting-started-with-NUCLEO-F401RE-and-mbedOS
Progetto: stm32nucleof401re_01_serial - stm32nucleof401re_02_serialbaud
Materiale: Scheda NucleoF401RE - Cavo micro USB

In questo progetto di esempio, vedremo come utilizzare la porta micro USB della scheda per comunicare con un PC connesso a questa via cavo.

Utilizziamo la toolchain già vista qui. Apriamo il progetto con un doppio click

 

Il progetto contiene la cartella con il codice sorgente mbed-os ed il file main.cpp, il nostro file entry-point

Con un doppio click sul file main.cpp, lo apriamo nell’area centrale della interfaccia grafica di Eclipse, mostrando il codice al suo interno .

Dopo aver incluso le librerie mbed troviamo l’istanza della classe Serial

Serial pc(USBTX, USBRX);

Con questa dichiarazione della variabile globale dal nome “pc”, stiamo creando una istanza in memoria della classe. Da questo momento potremo sollecitare i metodi pubblici offerti dalla classe all’utente e documentati al link precedente.

Il costruttore della classe prende come parametri di ingresso i pin USBTX ed USBRX, le due etichette che puntano alla porta USB.

Con questa sola riga di codice abbiamo accesso alla porta USB.

Nel codice di esempio

  // Print to the serial console a string
  pc.printf("Hello World !\r\n");
  pc.printf("Here I'm !\r\n");
  pc.printf("It works !\r\n");

viene chiamato il solo metodo di stampa “printf” per la stampa della stringa sulla seriale.

Notate che dato l’oggetto “pc” di tipo “Serial”, possiamo accedere alle sue funzionalità implementate nei suoi metodi pubblici, attraverso l’operatore “.”.

Quando scriviamo nel nostro codice

pc.printf("Hello World !\r\n");

stiamo chiamando il metodo printf dell’oggetto pc, passando la stringa da stampare come parametro.

A questo punto possiamo passare alla compilazione con un click sull’icona che rappresenta un martello. 

Se tutto è andato a buon fine, tra i messaggi nella console sarà indicato il path del file binario ottenuto dalla compilazione

Per programmare la scheda Nucleo, dopo averla connessa al PC via USB, copiare il file stm32nucleof401re_01_serial.bin, nel drive NODE_F401RE.

Per verificare il corretto funzionamento del programma, abbiamo bisogno di un client, ossia un software che eseguito sul PC sia in ascolto sulla seriale e mostri i messaggi ricevuti.

A tal fine utilizziamo puTTy  . Scaricare il file puTTy.exe. Il programma non richiede di essere installato.

Eseguendo puTTy, questo si presenterà come in figura.

 

Sono possibili diversi protocolli e configurazioni, a noi interessa quella seriale, quindi selezioniamo Connection type di tipo “Serial”.

Nella text-box Serial line, dovremo indicare il numero di porta COM che è stata assegnata dal sistema operativo.

Quando colleghiamo la scheda nucleo via USB, Windows assegna un numero alla porta COM. Per sapere quale numero è stato assegnato, dobbiamo andare nel pannello di “Gestione dispositivi” ed in Porte (COM e LTP) individuare quella dal nome “STMicroelectronics STLink Virtual COM Port”

Nel nostro caso in parentesi è indicato COM16 ed è quello che dovremo inserire in  PuTTy.

A questo punto possiamo cliccare su “Open”.

I tre messaggi passati al metodo printf vengono stampati a video.

Da notare che non avendo inserito un ciclo infinito, una volta stampati i tre messaggi, non accade più nulla.

Se resettiamo la board, pigiando il pulsante di colore nero, i tre messaggi verranno nuovamente stampati poiché con il reset abbiamo rieseguito il programma

Nel progetto stm32nucleof401re_02_serialbaud, modifichiamo la velocità di comunicazione, ossia il baud rate.

Per modificarla dobbiamo invocare il metodo “baud” della classe Serial

int main() {
 // It changes the serial connection baudrate
 pc.baud(115200);
 
 // It prints the sting to serial terminal. YOU HAVE TO CHANGE ACCORDINGLY THE BAUDE RATE OF THE SERIAL CLIENT
 pc.printf("Hello World !\r\n");
}

Con questa istruzione stiamo configurando la comunicazione seriale a 115200 bps.

Per rendere la comunicazione intellegibile anche il client puTTy va configurato alla stessa velocità.

Per rendere efficaci queste modifiche, dobbiamo ricompilare il progetto, e programmare la scheda Nucleo con il nuovo file binario.